La estructura o arquitectura interna de un microcontrolador hacer referencia los bloques funcionales
internos que conforman el microcontrolador y la forma en que están conectados,
por ejemplo la memoria FLASH(de programa), la memoria RAM (de datos), los puertos,
la lógica de control que permite que todo el conjunto funcione, etc.
Aqui usaremos de ejemplo el PIC16F877 para demostrar la estructura interna de un microcontrolador, en la imagen (arquitectura del PIC16F877) se pueden apreciar los diferentes bloques que lo componen y la
forma en que se conectan. Se muestra la conexión de los puertos, las memorias de
datos y de programa, los bloques especiales como el "Perro Guardian"(Watchdog), los temporizadores de
arranque, el oscilador, etc.
Como se puede apreciar, todos los elementos se conectan entre sí por medio de
buses. Un bus es un conjunto de líneas que transportan información entre dos o más
módulos. Vale la pena destacar que el PIC16F877 tiene un bloque especial de memoria de
datos de 256 bytes del tipo EEPROM, además de los dos bloques de memoria
principales que son el de programa y el de datos o registros.
El PIC16F877 se basa en la arquitectura Harvard, en la
cual el programa y los datos se pueden trabajar con buses y memorias separadas, lo
que posibilita que las instrucciones y los datos posean longitudes
diferentes. Esta misma estructura es la que permite la superposición de los ciclos de búsqueda
y ejecución de las instrucciones, lo cual se ve reflejado en una mayor
velocidad del microcontrolador.
Memoria de programa (FLASH)
Es una memoria de 8K de longitud con datos de 14 bits
en cada posición. Como es del tipo FLASH se puede programar y borrar
eléctricamente, lo que facilita el desarrollo de los programas y la experimentación. En ella se
graba o almacena el programa o códigos que el microcontrolador debe ejecutar. En la
figura 3.8 se muestra el mapa de la memoria de programa.
La memoria de programa está dividida en cuatro bancos
o páginas de 2K cada uno.
El primero va de la posición de memoria 0000h a la
07FFh, el segundo va de la 0800h a la 0FFFh, el tercero de la 1000h a la 17FFh y el
cuarto de la 1800h a la 1FFFh.
Vector de reset
Cuando ocurre un reset al
microcontrolador, el contador de programa se pone en ceros (0000H). Por esta razón, en la
primera dirección del programa se debe escribir todo lo relacionado con la iniciación del
mismo.
Vector de interrupción
Cuando el microcontrolador
recibe una señal de interrupción, el
contador de programa apunta a la dirección 04H de la
memoria de programa, por eso, allí se debe escribir toda la programación necesaria para
atender dicha interrupción.
Pila (Stack)
Estos registros no forman parte de ningún banco de
memoria y no permiten el acceso por parte del usuario. Se usan para guardar el valor
del contador de programa cuando se hace un llamado a una subrutina o cuando se
atiende una interrupción; luego, cuando el micro regresa a seguir ejecutando su
tarea normal, el contador de
programa recupera su valor leyéndolo nuevamente desde
la pila. El PIC16F877 tiene una pila de 8 niveles, esto significa que se pueden
anidar 8 llamados a subrutina sin tener problemas.
No hay comentarios:
Publicar un comentario