Nothing Special   »   [go: up one dir, main page]

Niple para PIC 16F87x - IMP

Descargar como doc, pdf o txt
Descargar como doc, pdf o txt
Está en la página 1de 33

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
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


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)
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.
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.
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.
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.
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.
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.
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”.


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”.


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.
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”.


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.
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
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
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 CCPxM0


7 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 CCP


0000 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).
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.
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”.
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”.
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” .
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.
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.
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”.
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.
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”.
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%).
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”.
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).
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.
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.
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”.
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.

También podría gustarte