Prácticas con Microcontrolador


ir a contenido

Novedades y aportaciones de la gama media

µControladores PIC

Todos los componentes de la gama media responden a la misma arquitectura básica del procesador interno y de la organización de memoria y disponen del mismo repertorio de instrucciones. Sus diferencias estriban en la capacidad de la memoria y la disponibilidad de diferentes periféricos. Con carácter general, las aportaciones realizadas en esta gama con respecto a lo anterior son las siguientes:

1ª) La longitud del código OP de las instrucciones pasa a ser de 14 bits frente a los 12 de los PIC16C5X. Este incremento permite manejar memorias de programa de 4k palabras de 14 bits y memorias de datos de hasta 192 bytes frente a los 32 que permitían los microcontroladores de la gama baja.

2ª) En la gama media existe la posibilidad de atender interrupciones, tan necesarias en la aplicaciones en tiempo real. El vector de interrupción se halla ubicado en la dirección 0004h de la memoria de programa.

3ª) La Pila aumenta su profundidad hasta ocho niveles.

4ª) Se añaden cuatro nuevas instrucciones al repertorio de la gama baja:
RETURN, RETFIE, ADDLW y SUBLW. Dos instrucciones, OPTION y TRIS, se modifican para mantener la compatibilidad.

5ª) Se ha redefinido la organización de la memoria de datos, que queda estructurada en bancos de 128 bytes cada uno.

6ª) Se modifica el registro de estado.

7ª) El vector de reset se cambia a la posición 0000h.

8ª) Varia la actuación del reset sobre todos los registros, admitiéndose hasta cinco tipos diferentes de reset.

9ª) Es posible salir del modo de Reposo (SLEEP) mediante interrupción.

10ª) Se añade el registro PCLATH para contener los bits de mas peso del PC, permitiendo manejar la paginación de la memoria. Este cambio obliga a redefinir la misión de los bits PA2, PA1 y PA0 del Registro de estado.

11ª) Los registros OPTION y TRIS pueden ser direccionados.

12ª) Se incluyen dos temporizadores independientes, el que controla el "start up" y el de "power up".

13ª) Las líneas del Puerto B pueden programarse para disponer de carga "pull up" interna si actúan como entradas y también pueden provocar interrupciones.

14ª) La patita RTCC puede actuar en algunos modelos como una línea mas del Puerto A(RA4/T0CKI).

15ª) El registro de FSR actúa completo.

16ª) Se hace posible la programación del chip dentro del sistema puesto que para esta operación solo se necesitan cinco patitas: VDD, VSS, VPP, RB6 (reloj) y RB7(Entrada o Salida del dato).

17ª) Surge un nuevo registro denominado PCON, que tiene dos bits para diferenciar si el reset se ha producido por un fallo en la alimentación (Brown-Out) o por conexión de la alimentación (Power-On-Reset).

18ª) Se ha mejorado el sistema de protección de código para actuar solo sobre las zonas concretas del programa que se seleccionen.

19ª) Para convertir el código utilizado en los microcontroladores de la gama baja en código ejecutable para la gama media, se deben tener en cuenta las siguientes comprobaciones:

a) Se deben modificar las operaciones que seleccionaban una pagina de la memoria en las instrucciones CALL y GOTO, revisando los valores de los bits PA2, PA1 y PA0.
b) Revisar las operaciones de salto que escribían sobre el PC o le añadían un valor para asegurarse que se utilizan las paginas correctas.
c) Eliminar los saltos entre los bancos de la memoria de datos.
d) Verificar todas las escrituras sobre los Registros de estado, OPTION y FSR dada su nueva estructura.
e) Cambiar el vector de reset a la posición 0000h.



--Respecto de la organizacion de la memoria y la estructura interna....

Para soportar los nuevos recursos de la gama media Microchip tuvo que ampliar y mejorar la estructura de la CPU y de la memoria, aunque manteniendo la arquitectura Harvard y el concepto RISC. También tuvo que añadir instrucciones y modificar alguna de las existentes.

En el esquema se presenta el esquema general al que responde la arquitectura básica de los procesadores PIC16CXX, similar a los de toda la gama. Apréciese que la memoria de datos esta organizada en dos bancos con 128 posiciones cada uno como máximo. La mayoría de los registros específicos se ubican en las primeras posiciones de los bancos. En la memoria de datos de la figura los registros de propósito general ocupan los posiciones comprendidas entre la 20h y la 6Fh del banco 0. Todas las posiciones con trama no están implementadas en este caso concreto. A través de los registros y transfiriendo la información por el bus de datos se controlan los periféricos que comunican con el mundo exterior por las patitas del Puerto A y el Puerto B. Las líneas de E/S de las dos Puertos se corresponden con 13 patitas, siendo comunes las restantes cinco patitas en todos los modelos de 18 patitas, que se destinan a la alimentación, el oscilador y el reset.

En el esquema se dibujan las memorias de datos y programa con la máxima capacidad que pueden alcanzar en la gama media. Las posiciones de la memoria de datos son de 1 byte y las de la memoria de programa, de 14 bits. Para direccionar los datos hacen falta 7 bits para elegir una posición del banco y 2 bits mas para seleccionar el banco, ya que pueden existir hasta cuatro, aunque en esta gama solo se usan dos en los modelos actuales.

El esquema es común para los dispositivos a los que se va a describir (PIC16C62X, PIC16C71 y PIC16C84), todos ellos con 18 patitas y con diferencias en los periféricos que se conectan con las patitas de los Puertos A y B y en las capacidades de las memorias.

Direccionamientos de programa:

El PC consta de 13 bits con los que se puede direccionar una memoria de código con una capacidad de hasta 8k palabras de 14 bits cada una. La memoria se organiza en paginas de 2k de tamaño.

El byte de menos peso del PC se corresponde con el contenido del registro PCL ubicado en la posición 02h del banco 0. Los 5 bits de mas peso del PC se corresponden con los 5 bits de menos peso del registro PCLATH en la posición 08h del banco 0. Los bits de mas peso del PC solos se pueden escribir a través del registro PCLATH.

En las instrucciones de salto relativo, el resultado de la misma afecta solo a los 8 bits de menos peso del PC. Los 5 bits de mas peso se suministran desde PCLATH<4:0>

En las instrucciones GOTO y CALL los 11 bits de menos peso del PC se suministran desde el código OP. Los dos bits de mas peso del PC se cargan con los bits <4:3> del registro PCLATH. Como la memoria de programa se organiza en paginas de 2k, la posición la seleccionan los 11 bits de menos peso, mientras que con los 2 bits de mas peso del PC se elige la pagina.

Direccionamiento de datos:

La memoria de datos en la gama media se organiza en un máximo de cuatro bancos, cada uno de los cuales puede constar de hasta 128 posiciones de tamaño byte. Como los actuales dispositivos de esta gama no sobrepasan los 256 bytes, solo se utilizan los bancos 0 y 1.

Para direccionar la memoria de datos que contiene los registros de propósito especifico y los de propósito general, existen dos modos de direccionamiento.

1ª. Direccionamiento directo

Los siete bits de menos peso del código OP de la instrucción proporcionan la dirección de la posición de un banco. Los bits RP1 y RP0 del Registro de estado <6:5>, seleccionan el banco.

2ª. Direccionamiento indirecto

En este caso el operando de la instrucción hace referencia al registro INDF, que ocupa la posición 0 del área de datos. Se accede a la posición que apunta el registro FSR, que se halla situado en la posición 4 del banco 0. Los 7 bits de menos peso de FSR seleccionan la posición y su bit de mas peso junto con el bit IRP del Registro de estado <7>, seleccionan el banco.

Ampliación del Banco de Registros:

La mayoría de los microcontroladores de la gama media disponen de un máximo de dos bancos de 128 x 8 posiciones, del máximo permitido que son cuatro bancos. El banco 0 comprende desde la posición 00h a la 7Fh y el banco 1, desde la 80h a la FFh. Una vez elegido el banco, la dirección de la posición se determina con 7 bits.

Los registros especiales se ubican en las 32 primeras posiciones de cada banco. Los registros de propósito general se ubican en trozos que quedan libres en ambos bancos. Vamos a tratar el caso del PIC16C622, que tiene un banco de registros de propósito general de 128 x 8. En el banco 0 ocupa una zona que comprende desde la dirección 20h a la 7Fh y en el banco 1, desde la A0h a la BFh. En cada modelo varia el tamaño de este banco de registros y su ubicación. También se indica el nombre de los registros específicos del PIC16C622y que corresponden con los que disponen la mayoría de los modelos de la gama media, alguno de los cuales tiene mas y otros menos de acuerdo con los periféricos que incorporan.

El resto de los registros que aparecen ya son conocidos en la arquitectura de la gama baja aunque algunos tienen modificadas la función de sus bits. Se describen las características de los principales registros de los PIC16C62X que son similares a las de todos los restantes componentes de la gama media.


Algunos registros específicos aparecen por primera vez y se proporcionan unos comentarios aclaratorios de sus funciones.

--PCLATH Contiene los 5 bits de mas peso del PC
--INTCON Soporta varios señalizadores para el control y activación de todas las posibles funciones de interrupción, excepto la del modulo Comparador
--PIR1 En este registro se ubica el señalizador que indica el estado interno del Comparador
--PIE1 Contiene el bit de activación para la interrupción que provoca el Comparador
--PCON Soporta los dos señalizadores que diferencian entre el reset provocado por conexión de alimentación(POR: Power-On-Reset) y el que se origina cuando se detecta un fallo en la alimentación (BOD: Brown-Out-Detect).
--CMCON Controla las entradas y salidas del modulo Comparador.
--VRCON Controla el funcionamiento del modulo de Tensión de referencia.


El registro de opciones

Esquemas de otros registros importantes:

Registro de Interrupciones

Registro de palabra de configuracion


Prácticas con Microcontrolador PIC 16F84 | miguel.tecno@gmail.com

Regresar a contenido | Regresar al menu principal