sábado, 26 de abril de 2014

Estructura interna de un Microcontrolador

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