lunes, 23 de febrero de 2009

Microcontroladores Act.#7 y #9

MEMORIA RAM Y ROM
RAM son las siglas de random access memory, un tipo de memoria de ordenador a la que se puede acceder aleatoriamente; es decir, se puede acceder a cualquier byte de memoria sin acceder a los bytes precedentes. La memoria RAM es el tipo de memoria más común en ordenadores y otros dispositivos como impresoras.
Hay dos tipos básicos de memoria RAM
RAM dinámica (DRAM)
RAM estática (SRAM)
Los dos tipos de memoria RAM se diferencian en la tecnología que utilizan para guardar los datos, la memoria RAM dinámica es la más común.
La memoria RAM dinámica necesita actualizarse miles de veces por segundo, mientras que la memoria RAM estática no necesita actualizarse, por lo que es más rápida, aunque también más cara. Ambos tipos de memoria RAM son volátiles, es decir, que pierden su contenido cuando se apaga el equipo.
Coloquialmente
Coloquialmente el término RAM se utiliza como sinónimo de memoria principal, la memoria que está disponible para los programas, por ejemplo, un ordenador con 8M de RAM tiene aproximadamente 8 millones de bytes de memoria que los programas puedan utilizar.
La memoria ROM, (read-only memory) o memoria de sólo lectura, es la memoria que se utiliza para almacenar los programas que ponen en marcha el ordenador y realizan los diagnósticos. La mayoría de los ordenadores tienen una cantidad pequeña de memoria ROM (algunos miles de bytes).
Puesto que la memoria ROM también permite acceso aleatorio, si queremos ser precisos, la memoria RAM debería llamarse memoria RAM de lectura y escritura, y la memoria ROM memoria RAM de sólo lectura.
Modelos de Memoria ROM
Memoria ROM de Máscara
Esta memoria se conoce simplemente como ROM y se caracteriza porque la información contenida en su interior se almacena durante su construcción y no se puede alterar. Son memorias ideales para almacenar microprogramas, sistemas operativos, tablas de conversión y caracteres.
Generalmente estas memorias utilizan transistores MOS para representar los dos estados lógicos (1 ó 0). La programación se desarrolla mediante el diseño de un negativo fotográfico llamado máscara donde se especifican las conexiones internas de la memoria.
Las celdas de memoria se organizan en grupos para formar registros del mismo tamaño y estos se ubican físicamente formando un arreglo.
Memoria PROM
Esta memoria es conocida como ROM programable de la sigla en inglés Programmable Read Only Memory. Este tipo de memoria a diferencia de la ROM no se programa durante el proceso de fabricación, en vez de ello la programación la efectúa el usuario y se puede realizar una sola vez, después de la cual no se puede borrar o volver a almacenar otra información.
El proceso de programación es destructivo, es decir, que una vez grabada, es como si fuese una ROM normal. Para almacenar la información se emplean dos técnicas: por destrucción de fusible o por destrucción de unión. Comúnmente la información se programa o quema en las diferentes celdas de memoria aplicando la dirección en el bus de direcciones, los datos en los buffers de entrada de datos y un pulso de 10 a 30V, en una terminal dedicada para fundir los fusibles correspondientes. Cuando se aplica este pulso a un fusible de la celda, se almacena un 0 lógico, de lo contrario se almacena un 1 lógico (estado por defecto), quedando de esta forma la información almacenada de forma permanente.
El proceso de programación de una PROM generalmente se realiza con un equipo especial llamado quemador. Este equipo emplea un mecanismo de interruptores electrónicos controlados por software que permiten cargar las direcciones, los datos y genera los pulsos para fundir los fusibles del arreglo interno de la memoria.


Memoria EPROM
Este tipo de memoria es similar a la PROM con la diferencia que la información se puede borrar y volver a grabar varias veces. Su nombre proviene de la sigla en inglés Erasable Read Only Memory.
La programación se efectúa aplicando en un pin especial de la memoria una tensión entre 10 y 25 Voltios durante aproximadamente 50 ms, según el dispositivo, al mismo tiempo se direcciona la posición de memoria y se pone la información a las entradas de datos. Este proceso puede tardar varios minutos dependiendo de la capacidad de memoria.
La memoria EPROM, tal como las memorias vistas anteriormente se compone de un arreglo de transistores MOSFET de Canal N de compuerta aislada.
Cada transistor tiene una compuerta flotante de SiO2 (sin conexión eléctrica) que en estado normal se encuentra apagado y almacena un 1 lógico. Durante la programación, al aplicar una tensión (10 a 25V) la región de la compuerta queda cargada eléctricamente, haciendo que el transistor se encienda, almacenando de esta forma un 0 lógico. Este dato queda almacenado de forma permanente, sin necesidad de mantener la tensión en la compuerta ya que la carga eléctrica en la compuerta puede permanecer por un período aproximado de 10 años.
Por otra parte el borrado de la memoria se realiza mediante la exposición del dispositivo a rayos ultravioleta durante un tiempo aproximado de 10 a 30 minutos. Este tiempo depende del tipo de fabricante y para realizar el borrado, el circuito integrado dispone de una ventana de cuarzo transparente, la cual permite a los rayos ultravioleta llegar hasta el material fotoconductivo presente en las compuertas aisladas y de esta forma lograr que la carga se disipe a través de este material apagando el transistor, en cuyo caso todas las celdas de memoria quedan en 1 lógico. Generalmente esta ventana de cuarzo se ubica sobre la superficie del encapsulado y se cubre con un adhesivo para evitar la entrada de luz ambiente que pueda borrar la información, debido a su componente UV.
Memoria EEPROM
La memoria EEPROM es programable y borrable eléctricamente y su nombre proviene de la sigla en inglés Electrical Erasable Programmable Read Only Memory. Actualmente estas memorias se construyen con transistores de tecnología MOS (Metal Oxide Silice) y MNOS (Metal Nitride-Oxide Silicon).
Las celdas de memoria en las EEPROM son similares a las celdas EPROM y la diferencia básica se encuentra en la capa aislante alrededor de cada compuesta flotante, la cual es más delgada y no es fotosensible.
La programación de estas memorias es similar a la programación de la EPROM, la cual se realiza por aplicación de una tensión de 21 Voltios a la compuerta aislada MOSFET de cada transistor, dejando de esta forma una carga eléctrica, que es suficiente para encender los transistores y almacenar la información. Por otro lado, el borrado de la memoria se efectúa aplicando tensiones negativas sobre las compuertas para liberar la carga eléctrica almacenada en ellas.
Esta memoria tiene algunas ventajas con respecto a la Memoria EPROM, de las cuales se pueden enumerar las siguientes:
Las palabras almacenadas en memoria se pueden borrar de forma individual.
Para borra la información no se requiere luz ultravioleta.
Las memorias EEPROM no requieren programador.
Para reescribir no se necesita se necesita hacer un borrado previo.
Se pueden reescribir aproximadamente unas 1000 veces sin que se observen problemas para almacenar la información.
El tiempo de almacenamiento de la información es similar al de las EPROM, es decir aproximadamente 10 años.
Memoria FLASH
La memoria FLASH es similar a la EEPROM, es decir que se puede programar y borrar eléctricamente. Sin embargo esta reúne algunas de las propiedades de las memorias anteriormente vistas, y se caracteriza por tener alta capacidad para almacenar información y es de fabricación sencilla, lo que permite fabricar modelos de capacidad equivalente a las EPROM a menor costo que las EEPROM.
Las celdas de memoria se encuentran constituidas por un transistor MOS de puerta apilada, el cual se forma con una puerta de control y una puerta aislada. La compuerta aislada almacena carga eléctrica cuando se aplica una tensión lo suficientemente alta en la puerta de control. De la misma manera que la memoria EPROM, cuando hay carga eléctrica en la compuerta aislada, se almacena un 0, de lo contrario se almacena un 1.
Las operaciones básicas de una memoria Flash son la programación, la lectura y borrado.
Como ya se mencionó, la programación se efectúa con la aplicación de una tensión (generalmente de 12V o 12.75 V) a cada una de las compuertas de control, correspondiente a las celdas en las que se desean almacenar 0’s. Para almacenar 1’s no es necesario aplicar tensión a las compuertas debido a que el estado por defecto de las celdas de memoria es 1.
La lectura se efectúa aplicando una tensión positiva a la compuerta de control de la celda de memoria, en cuyo caso el estado lógico almacenado se deduce con base en el cambio de estado del transistor:
Si hay un 1 almacenado, la tensión aplicada será lo suficiente para encender el transistor y hacer circular corriente del drenador hacia la fuente.
Si hay un 0 almacenado, la tensión aplicada no encenderá el transistor debido a que la carga eléctrica almacenada en la compuerta aislada.
Para determinar si el dato almacenado en la celda es un 1 ó un 0, se detecta la corriente circulando por el transistor en el momento que se aplica la tensión en la compuerta de control.
El borrado consiste en la liberación de las cargas eléctricas almacenadas en las compuertas aisladas de los transistores.
Puertos de entrada y salida
Los microprocesadores PIC16F84 tienen 2 puertos de entrada/salida paralelos de usos generales denominados Puerto A y Puerto B. El Puerto A es de 4 bits y el Puerto B es de 8 bits. Para hacernos una idea son parecidos al puerto paralelo de nuestro ordenador, en los cuales la información sale y entra a través de 8 líneas de datos.Los puertos del microcontrolador PIC16F84 son el medio de comunicación con el mundo exterior, en ellos podremos conectar los periféricos o circuitos necesarios como por ejemplo los módulos LCD, motores eléctricos, etc.; pero estas conexiones no se podrán realizar arbitrariamente. Existen unas reglas básicas que deberán cumplirse para que el microcontrolador no sufra daños o se destruya. Para ello es necesario conocer los límites de corriente que puede manejar el microcontrolador.

Limite de corriente para los puertos "a" y "b".
Los puertos "A" y "B" del microcontrolador podrán ser programados como entradas ó salidas indiferentemente. Para el caso de que sean programados como salida se denominan "Modo Fuente" por que suministran corriente y cuando son programados como entrada se denominan "Modo Sumidero" por que reciben corriente.La máxima corriente que puede suministrar una línea programada como salida es de 20 miliamperios, pero si utilizamos todas las líneas del puerto "A" programadas como salida, no deberá exceder de 50mA para todo el puerto "A". Para el caso del puerto "B" no deberá exceder de 100 mA.Si las programamos como entradas (Sumidero), la corriente máxima que puede manejar una sola línea es de 25 mA. Para el caso del puerto "A" programado con todas sus líneas como entrada, la máxima es de 80 mA. En el caso del puerto "B" es de 150 mA.En caso de querer utilizar periféricos que manejen mayor cantidad de corriente de la especificada, habrá que aplicar un circuito acoplador como por ejemplo los buffers, transistores que se encarguen de controlar la corriente, etc.
Identificación de los Pines utilizados para los puertos de entrada y salida.
En la imagen de la Figura 18 se podrá observar claramente que el microcontrolador tiene dos puertos denominados "A" y "B". El puerto "A" tiene 5 líneas disponibles (RA0, RA1, RA2, RA3, RA4) y el puerto "B" tiene 8 líneas disponibles (RB0, RB1, RB2, RB3, RB4, RB5, RB6, RB7). Ambos Puertos suman un total de 13 líneas que podrán ser programadas independientemente como entradas o como salidas. Estas son las líneas que estarán destinadas a comunicar el microcontrolador con el mundo exterior, como por ejemplo motores, diodos luminosos "LEDs", módulos LCD, teclados matriciales, etc.
También hay que hacer mención a que el Pin número 3 perteneciente al puerto "A" (RA4) también tiene otra nomenclatura denominada "TOCKI", lo cual quiere decir que esta línea se puede programar como entrada, salida y temporizador/contador. Ya veremos más adelante como se hace esto.
Configuración de los puertos de Entrada/Salida.
Los bits de cada puerto se configuran mediante los bits correspondientes de un registro especial de control asociado que recibe el nombre de TRIS. En realidad cada puerto soporta dos registros: 1º. El registro de datos, al que se denomina Puerto A o B (PORTA o PORTB). Ya veremos con detalle cómo se ponen los datos en la salida.2º. El registro de control TRISA o TRISB, con el que se programa el sentido (Entrada o Salida) de las líneas de cada puerto.
Los Puertos A y B se corresponden con las posiciones 5 y 6 del área de datos. Cada uno de sus bits puede programarse como una línea de Entrada o de Salida, según se ponga un 1 ó un 0 respectivamente en el bit del registro de control TRIS correspondiente que regula el biestable de control.
Un 1 en el bit "x" del registro TRISA pone en alta impedancia (Entrada) la línea asociada "x" del Puerto A. Si en el bit "x" de TRISA hubiese un 0, el contenido del biestable de datos correspondiente del Puerto A pasaría a la patilla de E/S externa. Resumiendo, para configurar una patilla como Entrada, hay que cargar un 1 en el biestable de control de E/S mientras que hay que cargar un 0 si se desea que sea Salida.
Por ejemplo: Ponemos un 0 en el bit 3 del registro especial TRISA. Entonces la patilla RA3 será una salida.Por ejemplo: Ponemos un 1 en el bit 4 del registro especial TRISB. Entonces la patilla RB4 será una entrada.
Esto lo volveremos a tratar cuando estudiemos uno a uno los registros especiales. Entonces lo entenderemos mejor, pues ya tendremos más conceptos en mente que nos ayudarán a asimilarlo.
Cualquier línea puede funcionar como Entrada o como Salida. Sin embargo, si actúa como Entrada, la información que se introduce desde el exterior no se memoriza o graba, pasa simplemente por un dispositivo triestado por lo cual el valor de dicha información debe mantenerse hasta que sea leída. La lectura se realiza en "tiempo real".
Cuando una patita de E/S funciona como salida, el bit que proviene del bus de datos se guarda en el biestable del dato con lo cual la información que ofrece esta patita permanece invariable hasta que se rescriba otro bit.
Cada línea de E/S de los puertos se programa de forma independiente y puede ser Entrada o Salida. Cuando se produce un reset, todos los bits de los registros TRIS pasan a tener el valor 1 y todas las líneas de E/S actúan como Entrada por evidentes motivos de seguridad para evitar daños irreparables.

El puerto A
Dispone de un ancho de 5 bits. Las líneas RA0 a RA3 respetan el esquema de la figura 19. La salida está provista de un buffer CMOS (de transistores MOSFET), entrada y salida pasan por un latch.

La línea RA4 adopta una estructura diferente, su salida es de tipo drenador abierto, y la entrada está provista de un Trigger Schmitt. Es común con la entrada externa del temporizador 0, que ya estudiaremos más a fondo cuando lleguemos al funcionamiento del temporizador y el contador.
Una vez más, el sentido de trabajo de todas las líneas de este puerto se controla mediante el registro TRISA, en el que un bit a cero activa la línea correspondiente como salida, y un bit a 1 como entrada, Evidentemente, después de un reset, todos los bits del registro TRISA quedan a uno.

El puerto B
El puerto B es un puerto bidireccional de 8 bits completo, en el que sólo una línea se comparte con otro recurso interno. Las líneas RB0 a RB3 adoptan la estructura interna indicada en la figura 21 mientras que las líneas RB4 a RB7 la de la figura 22. La razón de ser de esta diferencia radica en el hecho de que es posible programar la generación de una interrupción durante un cambio de estado de una cualquiera de las líneas RB4 a RB7. ¿Interrupción? ¿Y qué es eso? Para salir del paso explicaré brevemente que es un estímulo, en este caso externo, que hace que el programa se detenga y atienda a una subrutina. Son muy útiles, como verás cuando las estudiemos.Todas las líneas del puerto B disponen de una resistencia de pull-up de alto valor, conectada a la alimentación. Esta resistencia se puede activar o no gracias. Dicha activación afecta a todas las líneas del puerto B y se desactiva tras un reset al igual que las líneas configuradas como salida.El sentido de trabajo de cada una de las líneas de este puerto es controlado por el registro TRISB, en el que un bit a cero hace que la línea correspondiente se active como salida, y un bit a 1 como entrada, tras un reset todos los bits se ponen a 1 (esto ya es repetitivo, pero es la lección de rigor).

No hay comentarios:

Publicar un comentario