niple para pic 16f87x_imp

50
Niple para PIC 16 F 87x Características técnicas de los PIC 16F87x Inicialmente todos los microcontroladores incorporaron la arquitectura de Von Neumann, la cual se ca- racteriza por disponer de una sola memoria principal donde se almacenan los datos y las instrucciones. A esta memoria se accede a través de un sistema de buses único (direcciones, datos y control). Los microcontroladores de la familia 16F87x, al igual que el resto de los microcontroladores de la actuali- dad, están diseñados con la arquitectura Harvard. La arquite ctura Harvard dispone de dos memorias inde- pendientes; una que contiene sólo instrucciones, y otra donde se almacenan los datos. Ambas memorias cuentan con sus respectivos sistemas de buses de acceso y es posible realizar operaciones de acceso (lec- tura o escritura) simultáneamente en ambas memorias. Voltaje de alimentación: 5VCC. CPU RISC Circuito Integrado de 18 pines. Pines de configurables como Entrada o Salida: 16F870/3/6 = 22 pines 16F874/7 = 33 pines Frecuencia operación máxima: 20 Mhz. Memoria Flash: 16F870/3/4 = 4 Kbytes 16F876/7 = 8 Kbytes Memoria de Datos: = 192 Bytes 16F876/7 = 368 Bytes Memoria de Datos EEPROM: 16F870/3/4 = 128 Bytes 16F876/7 = 256 Bytes 2 Temporizadores internos de 8 bits. 1 Temporizador interno de 16 bits. Módulos CCP (Captura, Comparación y PWM): 16F870 = 1 módulo 16F873/4/6/7 = 2 módulos 1 Módulo de comunicaciones

Upload: fedesob

Post on 23-Jun-2015

678 views

Category:

Documents


9 download

TRANSCRIPT

Page 1: Niple Para PIC 16F87x_IMP

Niple para PIC 16F87x

Características técnicas de los PIC 16F87x

Inicialmente todos los microcontroladores incorporaron la arquitectura de Von Neumann, la cual se ca-

racteriza por disponer de una sola memoria principal donde se almacenan los datos y las instrucciones. A

esta memoria se accede a través de un sistema de buses único (direcciones, datos y control).

Los microcontroladores de la familia 16F87x, al igual que el resto de los microcontroladores de la actuali-

dad, están diseñados con la arquitectura Harvard. La arquite ctura Harvard dispone de dos memorias

inde- pendientes; una que contiene sólo instrucciones, y otra donde se almacenan los datos. Ambas

memorias cuentan con sus respectivos sistemas de buses de acceso y es posible realizar operaciones de

acceso (lec- tura o escritura) simultáneamente en ambas memorias.

Voltaje de alimentación: 5VCC.

CPU RISC

Circuito Integrado de 18 pines.

Pines de configurables como Entrada o Salida:

16F870/3/6 = 22 pines

16F874/7 = 33 pines

Frecuencia operación máxima: 20 Mhz.

Memoria Flash:

16F870/3/4 = 4 Kbytes

16F876/7 = 8 Kbytes

Memoria de Datos:

16F870/3/4 = 192 Bytes

16F876/7 = 368 Bytes

Memoria de Datos EEPROM:

16F870/3/4 = 128 Bytes

16F876/7 = 256 Bytes

2 Temporizadores internos de 8 bits.

1 Temporizador interno de 16 bits.

Módulos CCP (Captura, Comparación y PWM):

16F870 = 1 módulo

16F873/4/6/7 = 2 módulos

1 Módulo de comunicaciones USART.

Conversores Analógico- Digital:

16F870/3/6 = 5 canales

16F874/7 = 8 canales

Interrupciones:

16F870/3/6 = 13

16F874/7 = 14

Page 2: Niple Para PIC 16F87x_IMP

Como mencionamos anterio rmente, para que un microcontrolador funcione es necesario grabarle

un programa en su interior. Este programa será leído y ejecutado línea a línea por la CPU. Para que la CPU

funcione, debe contar con un generador de impulsos de reloj externo que sincroniza el funcionamiento

de todo el sistema.

Como origen de la señal de reloj externa utilizamos un cristal. El microcontrolador ejecuta cada instruc-

ción (1 ciclo de programa) a ¼ de la velocidad del cristal utilizado. En general, un ciclo de programa corres-

ponde a una línea de código Assembler .

Por ejemplo, si utilizamos un cristal de 4 Mhz, el microcontrolador estará ejecutando el código a una ve-

locidad de 1 Mhz. Es decir que, ejecutará 1.000.000 de líneas de código del programa por segundo. Por lo

tanto, ca da línea de código se ejecutará en 1 microsegundo (1/1.000.000 Seg.).

Conexión de los PIC 16F87x

Page 3: Niple Para PIC 16F87x_IMP

Los puertos del PIC 16F87x

Los microcontroladores de la familia 16F87x disponen de 3 o 5 puertos según el modelo de microcontro-

lador:

Puerto A = 6 pine s (5 pines A/D)

Puerto B = 8 pines

Puerto C = 8 pines

Puerto D = 8 pines

Puerto E = 3 pines (3 pines A/D)

Page 4: Niple Para PIC 16F87x_IMP

Módulos específicos de Niple para PIC 16F87x

Crear un nuevo proyecto.

Para crear un nuevo proyecto ingrese al menú Archivo \Nuevo

Proyecto... Se presentará la

pantalla de Nuevo

Proyecto.

En primer lugar

debe seleccionar el

modelo PIC que será

utilizado para

desarrollar el proyecto.

Es importante

saber que en Niple,

todo el sistema de

adapta de acuerdo al

modelo de PIC

seleccionado (los

registros, los bits,

memoria EEPROM,

periféricos, interrupciones, etc.).

Tenga en cuenta que una vez creado el proyecto no puede cambiar el modelo de PIC.

El Botón “Características de la Línea 16F87x” presenta un cuadro comparativo con las características de

cada uno de los modelos de PIC que componen la línea 16F87x.

Page 5: Niple Para PIC 16F87x_IMP

De ésta manera Niple lo ayuda a seleccionar el modelo de PIC a utilizar.

Una vez seleccionado el modelo de PIC a utilizar Niple le solicita que ingrese los siguientes datos:

Datos del proyecto

Nombre del proyecto: Nombre descriptivo del proyecto (No es el nombre de Archivo).

Descripción del proyecto: Ingrese una descripción para identificar el proyecto

Fecha: Por defecto Niple presenta la fecha actual del sistema.

Nombre del Autor: Niple asigna el nombre del titular de la licencia como Autor del proyecto. Es-

te nombre no puede ser modificado.

Si bien los datos del proyecto son opcionales se recomienda ingresar estos datos para la correcta identi -

ficación del proyecto en el futuro.

Datos del archivo

Nombre del archivo: Niple utiliza la extensión .NPL para los archivos de proyecto.

Seleccione la unidad y la carpeta donde guardar el nuevo proyecto.

Al selecciona la carpeta, Niple muestra todos los proyecto existentes en la misma. No puede re-

petir el nombre de un archivo de proyecto.

Una vez ingresados todos los datos necesarios, presione el botón “Crear”.

Al crear un nuevo proyecto se cargan todas las características del modelo de PIC seleccionado.

Además se genera de manera automática el entorno del Programa Principal y se inserta el bloque de

“Inicio” del programa.

Page 6: Niple Para PIC 16F87x_IMP

Todos los proyectos deben tener un entorno de “Programa Principal”. Este entorno no puede ser borra-

do. Y cada entorno de Programa Principal debe tener un bloque de “Inicio” de Programa.

Declaración de Registros

En Niple la declaración de registros se realiza

de manera visual trabajando directamente sobre el

mapa de memoria.

Para ingresar a la pantalla de declaración de

registros, seleccione el menú

“Declaración\Registros” o por medio de la

combinación de teclas CTRL+R.

En esta pantalla se presenta el mapa de

memoria.

La línea 16F87x cuenta con 4 páginas de

memoria, las cuales son presentadas en 2

“solapas”.

Cada registro está identificado con una

“dirección de registro” la cual está expresada en

formato hexadecimal.

El mapa de memoria de datos presenta los distintos los tipos de registros con diferentes colores.

Page 7: Niple Para PIC 16F87x_IMP

Registros Predefinidos por el PIC (Color Naranja): Corresponde a registros de configuración y control

del sistema. Estos registros se declaran de manera automática en el momento de crear el proyecto y no

pueden ser borrados. Cada uno de estos registros cum ple con una función predeterminada.

Registros de Usuario (Color Verde): Corresponde a la memoria disponible para que el usuario declare

sus propios registros.

Registros deshabilitados (Color Gris): Corresponde a la memoria no disponible. Estas direcciones de

memoria no pueden ser utilizadas.

Declaración de un Registro de Usuario

Para declarar un registro de usuario debe ha cer un clic en una posición de memoria libre correspondien-

te a los registros de tipos “Usuario” (color verde). Al hacer clic, se le solicita que ingrese el nombre del regis-

tro a declarar.

Niple controla la validez del nombre del registro que se está decla rando, esto es:

Que no esté siendo ya utilizado por otro registro o BIT.

No se permiten nombres de registros como “A”, “B”, “C”, “D”, ”E” que pueden llegar a confundir-

se con un nombre de puerto.

Que no contenga caracteres no válidos.

Que el nombre no conte nga más de 20 caracteres de largo.

Que el nombre no corresponda a una instrucción o comando.

Declaración de Bits

En Niple la declaración de Bits se realiza de manera totalmente visual trabajando directamente sobre el

mapa de memoria. Puede ingresar a la p antalla de declaración de bits a través del menú “Declaración\Bits”

o a través de la combinación de teclas CTRL+B.

Page 8: Niple Para PIC 16F87x_IMP

La memoria de datos se encuentra organizada en 4 bancos o páginas, las cuales son presentadas una

en cada ”solapa” de la pantalla de declar ación de Bits

El mapa de memoria de datos presenta los distintos los tipos de registros con diferentes colores. A la vez

se muestra un “detalle” de los bits que conforman cada registro.

Registros Predefinidos por el PIC (Color Naranja): Corresponde a regi stros de configuración y control

del sistema. Estos registros se declaran de manera automática en el momento de crear el proyecto y no

pueden ser borrados. Cada uno de estos registros cumple con una función predeterminada.

Registros de Usuario (Color Verde): Corresponde a la memoria disponible para que el usuario declare

sus propios registros.

Registros deshabilitados (Color Gris): Corresponde a la memoria no disponible. Estas direcciones de

memoria no pueden ser utilizadas.

Haciendo un clic sobre el nom bre de un BIT se muestra en la parte inferior de la pantalla toda informa-

ción correspondiente al BIT seleccionado.

Declaración de un Bit de Usuario

Antes de declarar un BIT de usuario debe haber declarado primero el registro de usuario al cual perten e-

ce el BIT que desea declarar.

Una vez declarado el registro de usuario, ingrese a la pantalla de Declaración de Bits y seleccione el

número de BIT que desea declarar. Esto se hace haciendo un clic sobre la posición de BIT correspondiente

dentro registro de usuario y respondiendo afirmativamente cuando le pregunta si desea declara un nuevo

BIT.

Luego le solicita que ingrese el nombre y la descripción del nuevo BIT.

Page 9: Niple Para PIC 16F87x_IMP

Puertos

Configurar Puerto A

En Niple, la configuración de los puertos se realiza de manera totalmente visual, trabajando directamente

sobre una imagen del

PIC.

El puerto A está

conformado sólo por 5

bits (RA0 – RA4).

En la pantalla de

configuración del

Puerto A, se presenta

una imagen del PIC

con las descripciones

de todos los pines.

En cada pin

correspondiente al

puerto A se muestra

una casilla de

verificación, a través

de la cual el pin es configurado como entrada o salida.

Cuando utiliza los modelos de micros 16F874 y 16F877, los puertos A y E se configuran juntos ya que

los mismos incluyen los pines de los canales A/D y éstos deben ser configurados en conjunto.

Además, debido al tamaño de estos modelos (de 40 pines) la imagen del micro es demasiado grande

para caber en la

pantalla de

configuración. Por

esto, Niple le

presenta una barra de

desplazamiento en la

parte derecha de la

pantalla de

configuración. De

esta manera, puede

“reco rrer” la

imagen del micro,

como lo muestra la

siguiente ilustración.

Page 10: Niple Para PIC 16F87x_IMP

Configuración de los canales A/D

Cuando alguno de los pines del puerto A (a excepción del pin RA4) es configurado como entrada, ésta

puede utilizarse como

entrada digital o como

una conversión

analógica/digital

(A/D).

Por esto, se

presenta una segunda

casilla de verificación

donde se especifica el

tipo de lectura a

realizar.

Por defecto se

presenta opción ‘D’

que significa “Entrada

Digital”.

Haciendo un clic en la casilla de verificación se conmuta a “Conversión A/D”, representada por una ‘A’.

Si selecciona configurar una entrada como Conversión A/D, en la parte inferior -izquierda de la pan

talla se visualiza un cuadro de configuración del voltaje de referencia para la conversión A/D.

El voltaje de referencia puede ser configurado como Referencia Interna (V+= Vdd; V- = Vss); como Refe-

rencia Externa (V+ =

RA3; V- = RA2) o

como una

combinación de

ambas.

Si elige algún

voltaje de referencia

como “externo”, el pin

correspondiente (RA2

o RA3) es

deshabilitado en la

pantalla para que no

pueda ser utilizado

como entrada o como

salida.

Una vez seleccionada la configuración deseada, presione el botón “Ingresar”.

Page 11: Niple Para PIC 16F87x_IMP

Antes de insertar el bloque, Niple chequea que la co nfiguración seleccionada corresponda a una de

las combinaciones válidas, ya que no puede seleccionar cualquier combinación de Entradas/Salidas Digitales

y Entradas A/D.

Por ejemplo: si desea utilizar solo 1 conversor A/D, éste debe ser el BIT RA0, es decir que no tiene ma-

nera de configurar el BIT RA1 como única entrada A/D.

Si el resultado de la

verificación de la

configuración

seleccionada resulta

Incorrecta, Niple lo

advierte y le da la

posibilidad de

seleccionar una

combinación válida.

Observe en la

siguiente imagen donde

se ha seleccionado el

BIT RA1 como única

entrada A/D. Niple

advierte del error y

ofrece asistencia.

Si responde afirmativamente, se presenta un cuadro con todas las combinaciones posibles.

La configuración seleccionada será actualizada en la pantalla de configuración del puerto A.

Una vez seleccionada la configuración correcta, presione el botón “Ingresar”.

Page 12: Niple Para PIC 16F87x_IMP

Si el chequeo de la configuración seleccionada resulta ser correcta, Niple inserta el bloque en el diagra-

ma.

Representación gráfica

Sintaxis

Puerto = Valor_Configuración

Esto se interpreta como: “el puerto ‘A’ es configurado como ‘Valor_Configuración’”.

Donde:

El parámetro ‘Valor_Con figuración’ puede contener alguno de los siguientes códigos:

S = Salida Digital

E = Entrada Digital

A = Canal de Conversión A/D

+ = Voltaje de referencia externa positiva (para conversión A/D)

- = Voltaje de referencia negativa (para conversión A/D)

X = Bit no disponible.

Ejemplos

Configurar Puerto B

En Niple, la configuración de los puertos se realiza de manera totalmente visual, trabajando directamente

sobre una imagen del PIC.

En la pantalla de configuración del Puerto B, se presenta una imagen del PIC con las descripciones de

todos los pines.

En cada pin correspondiente al puerto B se muestra una casilla de verificación, a través de la cual el pin

es configurado como entrada o salida.

Page 13: Niple Para PIC 16F87x_IMP

Cuando utiliza los modelos de micr os 16F874 y 16F877, los puertos A y E se configuran juntos ya

que los mismos incluyen los pines de los canales A/D y éstos deben ser configurados en conjunto.

Cuando utiliza los modelos 16F874 ó 16F877 (de 40 pines), la imagen del micro es demasiado gran de

para caber en la pantalla de configuración. Por esto, Niple le presenta una barra de desplazamiento en la

parte derecha de la pantalla de configuración. De esta manera puede “recorrer” la imagen del micro, como

lo muestra la siguiente ilustración.

Una vez seleccionada la configuración deseada, presione el botón “Ingresar”.

Page 14: Niple Para PIC 16F87x_IMP

Representación gráfica

Sintaxis

Puerto = Valor_Configuración

Esto se interpreta como: “el puerto B es configurado como ‘Valor_Configuración’”.

Donde:

El parámetro ‘Valor_Configuración’ puede contener alguno de los siguientes

códigos: S = Salida Digital

E = Entrada Digital

Ejemplos

Configurar Puerto C

En Niple, la configuración de los puertos se realiza de manera totalmente visual, trabajando directamente

sobre una i magen del PIC.

En la pantalla de configuración del Puerto C, se presenta una imagen del PIC con las descripciones de

todos los pines.

En cada pin correspondiente al puerto C se muestra una casilla de verificación, a través de la cual el pin

es configurado como entrada o salida.

Page 15: Niple Para PIC 16F87x_IMP

Cuando utiliza los modelos 16F874 ó 16F877 (de 40 pines), la imagen del micro es demasiado grande

para caber en la pantalla de configuración. Por esto, Niple le presenta una barra de desplazamiento en la

parte derecha de la pantal la de configuración. De esta manera puede “recorrer” la imagen del micro,

como lo muestra la siguiente ilustración.

Una vez seleccionada la configuración deseada, presione el botón “Ingresar”.

Representación gráfica

Sintaxis

Puerto = Valor_Configuración

Esto se interpreta como: “el puerto C es configurado como ‘Valor_Configuración’”.

Donde:

El parámetro ‘Valor_Configuración’ puede contener alguno de los siguientes códigos:

S = Salida Digital

E = Entrada Digital

Ejemplos

Page 16: Niple Para PIC 16F87x_IMP

Configurar Puerto D

En Niple, la configuración de los puertos se realiza de manera totalmente visual, trabajando directamente

sobre una imagen del PIC.

En la pantalla de configuración del Puerto D se presenta una imagen del PIC con las descripciones de

todos los pines .

En cada pin

correspondiente al

puerto D se muestra

una casilla de

verificación, a través

de la cual el pin es

configurado como

entrada o salida.

Niple le presenta

una barra de

desplazamiento en la

parte derecha de la

pantalla de

configuración. De esta

manera puede

“recorrer” la imagen del micro, como lo muestra la siguiente ilustración.

Una vez seleccionada la configuración deseada, presione el botón “Ingresar”.

Representación gráfica

Sintaxis

Puerto = Valor_Configuración

Esto se interpreta como: “el puerto C es configurado como ‘Valor_Configuración’”.

Donde:

El parámetro ‘Valor_Configuración’ puede contener alguno de los siguientes códigos:

S = Salida Digital

E = Entrada Digital

Ejemplo

Page 17: Niple Para PIC 16F87x_IMP

Configurar Puerto E

En Niple, el puerto E se configura junto con el puerto A.

Consulte la configuración del puerto A.

Módulos CCP

Los microcontroladores de la línea 16F87x pueden contener 1 ó 2 módulos de Captura, Comparación y

Modulación por ancho de pulso (CCP), llamados CCP1 y CCP2. La cantidad de módulos CCP disponibles

depende del modelo de PIC.

Para ambos casos tienen registros de control o configuración y registros de trabajo. Los registros de co n-

trol y trabajo para el módulo CCP1 son: CCP1CON dirección 17h y CCP1RH - CCP1RL direcciones 16h

y

15h, mientras que para el módulo CCP2 son: CCP2CON dirección 1Dh y CCP2RH-CCP2RL direcciones

16h y 15h.

Asignación de bits a los registros CCPxCON, x puede tomar el valor 1 o 2.

CCPxX CCPxY CCPxM3 CCPxM2 CCPxM1 CCPxM07 6 5 4 3 2 1 0

Los módulos pueden trabajar en tres modos diferentes, que son:

- Modo Captura

- Modo Comparación

- Modo Modulación por Ancho de Puls o, PWM

CCPxM3-0 Modo de trabajo para los módulos CCP0000 Módulo desconectado.0100 Modo captura cada flanco descendente.0101 Modo captura cada flanco ascendente.0110 Modo captura cada 4 flancos ascendente.0111 Modo captura cada 16 flancos ascendente.1000 Modo comparación que activa la salida RC.1001 Modo comparación que desactiva la salida RC.1010 Modo comparación que genera una interrupción en el programa.1011 Modo comparación que genera un disparo para cada módulo.11xx Modo PWM

Modo Captura

Antes de pasar a desarrollar la metodología de programación con Niple, realizaremos una breve descrip-

ción del modo Captura a modo de repaso general.

El modo “Captura” recupera el estado de cuenta del TMR1 y lo guarda en los registros CCPR1H y

CCPR1L para el módulo CCP1 o en los registros CCPR2H y CCPR2L para el módulo CCP2.

Para el módulo CCP1, el Pin RC2 debe estar configurado como Entrada y para el módulo CCP2, el Pin

RC1 debe estar configurado como Entrada.

El TMR1 debe estar configurado con la opción “Origen de señal de reloj” = Reloj Interno. (Recuerde que

también el TMR1 puede ser configurado para que incremente mediante una señal externa).

Page 18: Niple Para PIC 16F87x_IMP

La captura se realiza cada vez que ocurre alguno de los siguiente s eventos en el Pin correspondiente

a cada módulo, esto se configura mediante los 4 primeros bits de los registros CCP1CON y CCP2CON:

1) Un flanco ascendente.

2) Un flanco descendente.

3) Cada 4 flancos ascendentes.

4) Cada 16 flancos ascendentes.

Cad a vez que se realiza una captura, se activa el BIT 2 (CCP1IF) del registro PIR1, o el BIT 0 (CCP2IF)

del registro PIR2.

Además puede generarse una interrupción, si previamente fue configurado el BIT 2 (CCP1IE) del registro

PIE1 o el BIT 0 (CCP2IE) del registro PIE2.

Programando el modo Captura en Niple

Para poder utilizar el Modo Captura primero debe realizar los siguientes pasos:

Configurar y activar el temporizador interno TMR1.

Configurar el Pin correspondiente al módulo CCP como Entrada.

En este caso trabajamos sobre el modo Captura del módulo CCP1, pero lo desarrollado a continuación

es valido también para el modo Captura del módulo CCP2.

Una vez realizados los pasos previos necesarios ya esta en condiciones de

realizar una Captura.

Ingrese al árbol de herramientas y seleccione la opción “Insertar / Rutinas

Básicas / Módulos CCP / Módulo CCP1 / Config. y Activar CCP1” como se

muestra en la imagen de la derecha .

Se presenta la pantalla “Módulo CCP1”. Es importante aclarar que los 3

modos (Captura, Com paración y PWM) se programan en la misma pantalla ya

que pertenecen al mismo módulo.

Seleccione el modo Comparación en la lista desplegable denominada “Modo

a utilizar”.

Para garantizar el correcto funcionamiento, Niple chequea de manera automática si pr eviamente han s i-

do configurados el temporizador TMR1 y el Pin correspondiente al módulo, en este caso el Pin RC2 como

entrada.

Si todo esta correctamente configurado, Niple permite comenzar a seleccionar las opciones correspo

n- dientes, de lo contrario, no permite continuar hasta no contar con los requisitos anteriormente

mencionados.

Page 19: Niple Para PIC 16F87x_IMP

En primer lugar debe seleccionar la configuración del evento que provoca la captura.

Para este caso, seleccione de la lista desplegable la opción “1 Flanco Ascendente”.

Page 20: Niple Para PIC 16F87x_IMP

A continuación seleccione 1 de las 2 maneras que tiene de realizar la captura.

1) Espera r en un bucle hasta que termine la

Captura: El PIC no realiza ninguna otra

tarea que no sea “esperar” a que el BIT 2

(CCP1IE) del registro PIE1 se ponga en

1, lo cual indi ca que se ha realizado una

captura.

2) No esperar y generar una interrupción por

Fin de Captura: Se configura el modo

Captura y conti núa ejecutando el resto

del código. Cuando se realiza la captura

se produce una interrupción por “Fin

de Captura”.

Sea cual fuere la opción seleccionada, a

continuación le solicita que seleccione los registros

donde guardar el resultado de la captura.

Si ha seleccionado la opción “No esperar y generar una interrupción”, Niple chequea el estado de las in-

terrupciones y ofrece la posibilidad de habilitar las

interrupciones que se encuentran deshabilitadas.

La ilustración de la derecha muestra este caso.

Por último puede ingresar un comentario.

Una vez seleccionados todos lo parámetros,

presione el botón “Ingresar”.

Page 21: Niple Para PIC 16F87x_IMP

La siguiente ilustración muestra el bloque insertado con los pasos anteriormente realizados.

En la siguiente imagen se muestran el bloque y el entorno de “Interrupción por CCP1” que son insertados

en el tipo de captura “por interrupción”.

La siguiente imagen muestra los bloques insertados en el entorno del “Programa Principal” .

Page 22: Niple Para PIC 16F87x_IMP

La siguiente imagen muestra el entorno de “Interrupción por CCP1” y los bloques que se insertan de ma-

nera automática.

Modo Comparación

En este modo, el microcontrolador compar a de manera constante los registros CCPR1H y CCPR1L con

el valor actual de TMR1. Cuando los valores son iguales, puede llegar a producirse alguno de los 3 eventos

según la configuración seleccionada.

Estos eventos son:

- Poner a 1 el Pin RC2 para CCP1 o e l Pin RC1 para CCP2.

- Poner a 0 el Pin RC2 para CCP1 o el Pin RC1 para CCP2.

- Generar una interrupción. Esta opción no afecta al Pin RC2 para CCP1 o el Pin RC1 para CCP2.

Para el módulo CCP1, el Pin RC2 debe estar configurado como Salida y para el CCP2 el Pin RC1 debe

estar configurado como Salida.

Si el TMR1 es configurado con la opción “Origen de señal de reloj” = Reloj Externo, entonces este mód u-

lo puede ser utilizado como contador de eventos que al llegar al valor deseado se produzca una acción de-

terminada sin necesidad de estar monitoreando el estado de cuenta.

Si el TMR1 es configurado con la opción “Origen de señal de reloj” = Reloj Interno, entonces este módulo

puede ser utilizado para generar eventos en un determinado periodo.

Page 23: Niple Para PIC 16F87x_IMP

Cada vez que se realiza una comparación, se activa el BIT 2 (CCP1IF) del registro PIR1, o el BIT 0

(CCP2IF) del registro PIR2.

Además puede generarse una interrupción, si previamente fue configurado el BIT 2 (CCP1IE) del registro

PIE1 o el BIT 0 (CCP2IE) del registro PIE2.

Programando el modo Comparación en Niple

Para poder utilizar el Modo Comparación primero debe realizar los siguientes pasos:

- Configurar y activar el temporizador interno TMR1.

- Configurar el Pin correspondiente al módulo CCP como Salida.

En es te caso trabajamos sobre el modo Comparación del módulo CCP1,

pero lo desarrollado a continuación es válido también para el modo

Comparación del módulo CCP2.

Una vez realizados los pasos previos necesarios ya esta en condiciones de

realizar una Comparación.

Ingrese al árbol de herramientas y seleccione la opción “Insertar / Rutinas

Básicas / Módulos CCP / Módulo CCP1 / Config. y Activar CCP1” como se

muestra en la imagen de la derecha .

Se presenta la pantalla “Módulo CCP1”. Es importante aclarar que los

3 modos (Captura, Comparación y PWM) se programan en la misma pantalla

ya que pertenecen al

mismo módulo.

Seleccione el modo Comparación en la lista

desplegable denominada “Modo a utilizar”.

Para garantizar el correcto funcionamiento,

Niple chequea de manera automática si

previamente han s ido configurados el

temporizador TMR1 y el Pin correspondiente al

módulo, en este caso el Pin RC2 como Salida.

Si todo esta correctamente configurado, Niple

permite comenzar a seleccionar las opciones

correspondientes, de lo contrario, no permite

continuar hasta no contar con los requisitos

anteriormente mencionados.

En primer lugar debe seleccionar el valor de

Comparación. O sea, el valor ha sta el cual desea

que el temporizador interno TRM1 incremente.

Dado que el temporizador TMR1 está formado

por 2 registros (TRM1H y TMR1L), el valor de comparación también corresponde a un número de 16 bits.

Page 24: Niple Para PIC 16F87x_IMP

Niple le ofrece la posibilidad de asignar el valor de comparación mediante un valor Literal (valor consta

n- te) o mediante el valor contenido en 2 registros (valor Variable) ofreciendo una mayor versatilidad.

De esta manera Ud. puede ajustar el valor de comparación a sus necesidades.

Si Ud. desea desarrollar un sistema “contador” que realice una determinada acción al llegar a la cuenta

de 1000. Entonces debe seleccionar las opciones “Valor Literal”, Tipo “Decimal” y “1000” como “valor de

comparación”. Tenga en cuenta que no podrá cambiar el valor de comparación dado que se trata de un

va- lor constante. Si en el futuro desea cambiar el “val or de comparación”, deberá generar nuevamente el

códi- go Assembler , compilar el archivo .hex y grabar nuevamente el PIC.

Una forma más versátil de realizar esto es: asignar el valor de comparación como variable, por ejemplo,

mediante 2 registros llamados “cant_max_1” y “cant_max_2”. Esto le permite diseñar el programa para po-

der actualizar el “valor de comparación” mediante algún sistema de “Set Point” (por RS232, Teclado, o pul-

sadores que incrementen y decrementen estos valores) y se guarde (por ejemplo) los valores de estos 2

registros en la memoria EEPROM.

A continuación seleccione el evento a realizar

cuando el TMR1 llegue al estado de cuenta del

“valor de comparación”. Aquí tiene 3 opciones:

- Poner a 1 el Pin correspondiente.

- Poner a 0 el Pin correspondiente.

- Generar una interrupción. Esta opción

no afecta al Pin correspondiente el Módulo CCP.

Si elige alguna de las 2 primeras opciones.

Niple se solicita que seleccione una de las 2

maneras que tiene de realizar la comparación.

1) Esperar en un bucle hasta que termine la

Comparación: El PIC no realiza ninguna

otra tarea que no sea “esperar” a que el

BIT 2 (CCP1IE) del registro PIE1 se

ponga en 1, lo cual indica que ha

finalizado la comparación.

2) No esperar y generar una interrupción por Fin de Co mparación: Se configura el modo Comparación y

continúa ejecutando el resto del código. Cuando el valor del TMR1 es igual a valor de comparación,

se produce una interrupción por “Fin de Compara ción”.

Page 25: Niple Para PIC 16F87x_IMP

Si ha seleccionado la opción “No esperar y generar una interrupción...”, Niple chequea el estado de las

interrupciones y ofrece la posibilidad de habilitar las interrupciones que se encuentran deshabilitadas.

La siguiente ilustración muestra este caso.

Page 26: Niple Para PIC 16F87x_IMP

Por último puede ingresar un comentario.

Una vez seleccionados todos lo parámetros, presione el botón “Ingresar”.

La siguiente ilustración muestra el bloque insertado con los pasos anteriormente realizados.

En la siguiente imagen se muestran el bloque y el entorno de interrupción por “Interrupción por CCP1 ”

que son insertados en el tipo de comparación “por interrupción”.

La siguiente imagen muestra los bloques insertados en el entorno del “Programa Principal”.

Page 27: Niple Para PIC 16F87x_IMP

La siguiente imagen muestra el entorno de “Interrupción por CCP1” y los bloques que se insertan de ma-

nera automática.

Modo PWM

En este modo, el microcontrolador genera un pulso a una determinada frecuencia en el Pin correspo n-

diente al módulo CCP y cuyo ancho de pulso (tiempo de duración del nivel alto dentro del ciclo) puede ser

variable.

La frec uencia generada (o periodo del ciclo) se controla por medio del registro PR2 y su valor se calcula

mediante la siguiente fórmula:

Periodo = 1 / Frecuencia_a_generar

PR2 = (Periodo / (4 * Tosc * Predivisor_de_TRM2)) – 1

Donde:

Tosc (Tiempo de oscilación) = 1 / Frecuencia_Cristal

Si desea obtener el periodo que genera un determinado valor de PR2:

Periodo = (PR2 + 1) * 4 * Tosc * Predivisor_de_TRM2

El ancho de pulso es controlado mediante un valor de 10 bits el cual se calcula con la siguiente fórmula:

Ancho_Pulso = Periodo * (Porcentaje_Ancho_Pulso / 100)

Valor_Ancho_Pulso = Ancho_Pulso / (Tosc * Predivisor_de_TRM2)

Donde:

Porcentaje_Ancho_Pulso = Porcentaje de ancho de pulso deseado.

Ej: Porcentaje_Ancho_Pulso = 50 (Control por ancho de pulso del 5 0%).

Page 28: Niple Para PIC 16F87x_IMP

Además, el valor “Valor_Ancho_Pulso” debe estar organizado de la siguiente manera:

Los bits 0 y 1 se ubican en los bits 4 y 5 del registro CCP1CON, respectivamente.

Y los bits 2 a 9 se ubican en el registro CCPR1L según se indica en la siguiente imag en.

Es importante tener en cuenta que el rango de valores para el control del ancho de pulso es variable y

depende de la frecuencia generada. O sea que, si bien el control del ancho de pulso se realiza mediante un

valor de 10 bits, el rango 0 – 1023 no corresponde al 0% y 100% respectivamente.

Por ejemplo:

- Para una frecuencia de 1000 Hz., el control del ancho de pulso debe estar entre los valores 0 y 1000.

- Para una frecuencia de 2500 Hz., el control del ancho de pulso debe estar entre los valores 0 y 400.

- Para una frecuencia de 5000 Hz., el control del ancho de pulso debe estar entre los valores 0 y 500.

Programando el PWM con Niple

Para poder utilizar el Modo PWM primero debe realizar los siguientes pasos:

- Configurar y activar el temporizador i nterno TMR2.

- Configurar el Pin correspondiente al módulo CCP como Salida.

En este caso trabajamos sobre el modo PWM del módulo CCP1, pero lo

desarrollado a continuación es valido también para el modo PWM del módulo

CCP2.

Una vez realizados los pasos previos necesarios ya esta en condiciones de

configurar el PWM.

Ingrese al árbol de herramientas y seleccione la opción “Insertar / Rutinas

Básicas / Módulos CCP / Módulo CCP1 / Config. y Activar CCP1” como se

muestra en la siguiente figura.

Se presenta la pantalla “ Módulo CCP1”. Es importante aclarar que los 3

modos (Captura, Comparación y PWM) se programan en la misma pantalla ya

que pertenecen al mismo módulo.

Seleccione el modo PWM en la lista desplegable denominada “Modo a

utilizar”.

Page 29: Niple Para PIC 16F87x_IMP

Para garantizar el correcto funcionamiento, Niple chequea de manera automática si previamente han si-

do configurados el temporizador TMR2 y el Pin correspondiente al módulo, en este caso el Pin RC2 como

Salida.

Si todo esta correctamente configurado, Niple

permite comenzar a seleccionar las opciones

correspon dientes, de lo contrario, no permite

continuar hasta no contar con los requisitos

anteriormente mencionados.

En primer lugar Niple le presenta información

acerca de la configuración del temporizador TMR2.

En este caso se muestra el valor de configuración

del Prescalado, dado que este valor se utiliza para

realizar los cálculos necesarios para generar tanto la

frecuencia de salida como el control del ancho de

pulso.

Lo primero que debe determinar es la frecuencia

que desea generar.

Seleccione la opción “Tipo de Frecuencia” = Fija.

A continuación ingrese la frecuencia que desea

generar.

Niple calcula y muestra automáticamente el rango válido de frecuencias que puede generar. Este rango

depende de Prescalado del temporizador TMR2 y de la velocidad del cristal utilizado.

A modo de ilustración vamos a generar una

frecuencia de 5000 Hz.

Observe que mientras Ud. ingresa el valor de la

frecuencia a generar, Niple calcula de manera

automáti ca el valor correspondiente el registro PR2.

Una vez ingresada la frecuencia, proceda a

configurar el control por ancho de pulso.

Para esto seleccione el tipo de control a realizar

que puede realizarse de 2 maneras según sus necesi-

dades:

1) Control por ancho de pulso Fijo: se genera un

control por ancho de pulso constante a un

determina do porcentaje del período y

este porcentaje no podrá ser modificado.

(Es decir, para modificar este porce ntaje

de control de ancho de pulso deberá volver a

generar el código ASM, compilar el archivo

.hex y volver a grabar el PIC).

Page 30: Niple Para PIC 16F87x_IMP

2) Control por ancho de pulso Variable: el valor de configuración del ancho de pulso se realiza por

medio de 2 registros (recuerde que se trata de un valor a 10 bits). Seleccione los registros que

contienen el valor.

Niple calcula y muestra de manera automática el rango de valores permitidos para el control del ancho

de pulso. Debe prestar especial atención de asignar a los registros seleccionados, un valor que se encuen-

tre dentro de este rango.

Para facilitar esto, Niple cuenta con el módulo de “escalar un valor”. Consulte el módulo de función ma-

temática “Escalar un valor”.

Por último puede ingresar un comentario.

Una vez seleccionados todos lo parámetros, presione el botón “Ingresar”.

La siguiente ilustración muestra el bloque insertado con l os pasos anteriormente realizados.

Page 31: Niple Para PIC 16F87x_IMP

Comunicaciones

RS232

RS232 – Enviar

El protocolo RS232 es utilizado para comunicación con el puerto serial de las computadoras (puertos

COM).

Este módulo le permite enviar datos mediante el protocolo de comunicación RS 232 ya sea a otros

micro- controladores o a una PC.

Primero debe selecciona el tipo de

comunicación a realizar la cual puede ser

mediante módulo USART.

La USART es un m ódulo de

comunicaciones que los modelos de la línea

16F87x incluyen. Es decir que todo el

procedimiento de envío de los datos se realiza

de manera automática mientras que si se

realiza “por código”, se generará el código

Assembler necesario para realizar el envío de

los datos.

La diferencia radica en que el módulo

USART prepara el dato e inicia el envío y

luego vuelve a segui r ejecutando el resto

del código del programa sin necesidad de

realizar

todo el proceso de envío del dato ya que este se realiza de manera automática y en forma paralela a la eje-

cución del resto del programa. Mientras que si se realiza “por código”, la ejecución del programa realiza todo

el proceso de envío del dato.

Si selecciona el modo de envío “por USART”, el sistema selecciona de manera automática el pin de

transmisión correspondiente. Este pin no puede ser modificado dado que el módulo USART utiliza un

de- terminado pin para el envío de datos.

Si selecciona el modo de envío “por Código”, el sistema le solicita que seleccione el pin de transmisión

por el cual quiere realizar la comunicación.

A continuación debe seleccionar la velocidad de comunicación.

Por último seleccione el dato a enviar.

RS232 – Recibir

El protocolo RS232 es utilizado generalmente para comunicación con el puerto serial de las computad o-

ras (puertos COM).

Este módulo le permite recibir datos mediante el protocolo de comunicación RS232 ya sea desde otros

microcontroladores o desde una PC.

Page 32: Niple Para PIC 16F87x_IMP

Primero debe selecciona el tipo de comunicación a realizar la cual puede ser mediante módulo USART.

La USART es un módulo de comunicaciones que los modelos de la línea 16F87x incluyen. Es decir que

todo el procedimiento de envío de los datos se realiza de manera automática mientras a diferencia del tipo

de comunicación “por código” que se generará el código Assembler necesario para realizar el envío de los

datos.

En prim er lugar debe seleccionar el tipo de comunicación: “por USART” o “por Código”.

Si selecciona el modo de comunicación por USART, el sistema seleccionará de manera automática el pin

de recepción. Este pin no puede ser modificado dado que el módulo USART dete rmina el pin (por

hardware) para la recepción de datos.

A continuación debe seleccionar el registro donde guardar el dato recibido.

Por ultimo seleccione la velocidad de comunicación.

Si selecciona el modo de comunicación “por USART”, se deben activar las interrupción por recepción por

USART. Si esto no se realiza, el sistema no “detectará” cuando un dato sea recibido. Por esto, Niple che-

quea si las interrupciones correspondientes han sido activadas:

GIE = habilitador general de interrupciones

PEIE = Habilitador de interrupciones por periféricos

RCIE = Habilitador de interrupción por Recepción en USART.

Si alguna de estas banderas de interrupción no ha sido activada, no se producirá la interrupción al recibir

un dato y por ende, el micro no detectará cuando recibe un dato.

Por esto, Niple supervisa si estas interrupciones están correctamente activadas. Si Niple detecta que las

interrupciones no han sido activadas, por defecto, ofrece la posibilidad de activarlas.

Por último presione le botón “In gresar”.

Page 33: Niple Para PIC 16F87x_IMP

Configurar Interrup.

Permite configurar todas las opciones posibles para las interrupciones RB0, TMR0 y Watchdog.

En el primer caso, el usuario podrá seleccionar si la interrupción se activa mientras transcurre el flanco des-

cendente o el ascendente, mientras que para las restantes, podrá seleccionar la tasa de división para el es-

calado de los tiempos.

1) Seleccione la interrupción a configurar, para esto haga clic sobre las casillas de verificación dispon i -

bles para cada caso.

2) Si selecciono Int errup. por RB0, haga clic en lo botones de opción correspondientes a Interrup.

por flanco Ascendente o Interrup. por flanco descendente.

3) Si selecciono Interrup. por TMR0 , seleccione de la lista la Tasa de división y el Origen de la señal

de reloj .

Haga clic en Ingresar.