Exponsor

CURSO TÉCNICO INSTALADOR DE ENERGÍA SOLAR TÉRMICA

Visita el siguiente enlace: http://enersolartermica.blogspot.com.es/ ¡No pierdas esta magnifica oportunidad de poder formarte en esta profesión con gran demanda de empleo! Ahora por oferta de lanzamiento y por tiempo limitado puedes adquirir este curso por solo 9,95€, cuando su valor de mercado es de 49€.

jueves, 23 de abril de 2009

LAS COMUNICACIONES ASÍNCRONAS ( III )

Otro componente muy popular con un elevado nivel de integración para auxiliar al microprocesador en su manejo de unidades periféricas es el conocido como Interfaz Programable Periférica (simbolizada en la literatura como PPI, acrónimo del inglés Programmable IPeripheral Inteface), de la cual el circuito integrado 8255 (o su equivalente el 82C55) es quizá uno de los más conocidos. Su relación de terminales "pins" es la siguiente:



A continuación tenemos otro diagrama que muestra al PPI 82C55 no con la asignación física de "pins" arriba mostrada sino con las terminales reacomodadas de modo funcional para que el funcionamiento de este circuito integrado sea un poco más comprensible (ampliar imagen):


Como puede verse, hay tres puertos disponibles para la canalización paralela de datos binarios, el puerto A (port A, seleccionable con una entrada de A1A0 = 00), el puerto B (port B, seleccionable con una entrada de A1A0 = 01) y el puerto C (port C, seleccionable con una entrada de A1A0 = 10). La entrada A1A0 = 11 está reservada para girarle una instrucción a este componente para que lleve a cabo alguna de las funciones que puede llevar a cabo. Las líneas D0 a la D7 son para canalizar los datos de entrada o de salida de una palabra de 8 bits a través de uno de los tres puertos. En un sistema, este componente se conectaría de una manera como la siguiente:



El siguiente diagrama nos muestra cómo se utilizaría el PPI 82C55 para construír un circuito para llevar cabo la lectura de una de las 16 teclas de un teclado externo:



Obsérvese cómo las teclas del teclado externo están dispuestas en un arreglo rectangular de renglones (conectados independientemente a cuatro de las ocho terminales del puerto A) y columnas (conectadas independientemente a cuatro de las ocho terminales del puerto B). A su máxima capacidad, este mismo diseño se puede ampliar fácilmente para leer cada una de las teclas de un teclado de 64 teclas no muy diferente al que está usando el lector en estos momentos.

Como el nombre del componente lo indica, el PPI 82C55 es programable. A continuación tenemos la forma en la cual la ejecución de las instrucciones se puede llevar a cabo:



Como ya se mencionó previamente, la entrada A1A0 = 11 está reservada para girarle una indicación al PPI 82C55 de que una instrucción será llevada a cabo. Al poner esta entrada, los ocho bits a la entrada del puerto A se convierten en un byte de comando (Command Byte A), y los ocho bits a la entrada del puerto B también se convierten en otro byte de comando (Command Byte B). Dependiendo del valor que tenga cada uno de estos ocho bits en cada uno de estos dos bytes de comando, se obtendrá un resultado diferente. Por ejemplo, si al bit 4 del byte de comando A se le pone un valor de 1 lógico, entonces el puerto A se convertirá en un puerto para la entrada de datos, y si se le pone un valor de 0 lógico, se convertirá en un puerto para la salida de datos. El bit 2 del byte de comando A es interesante, porque nos permite seleccionar uno de los modos de operación del PPI 82C55, el cual funcionalmente puede trabajar de hasta tres modos distintos (designados por los fabricantes como mode 0, mode 1, mode 2) de acuerdo con lo que indican los siguientes diagramas:



Existen otros controladores periféricos programables más recientes, además de los ya mencionados que marcaron la pauta a seguir, tales como el PIC12C508/509, el PIC16F84A, el PIC16F628 el PIC18F4550, y el PIC16F87X.

No se entrará más a fondo aquí en el estudio de este tipo de componentes porque ello requeriría de un libro como este.

Es importante señalar que para poder utilizar un UART con el fin de que el microprocesador pueda llevar a cabo comunicaciones seriales hacia el mundo exterior bajo un estandard de comunicaciones seriales como la norma RS-232 (en la cual el "1" lógico está especificado como un voltaje positivo de +15 volts, y el "0" lógico como un voltaje negativo de -15 volts), se requiere otro componente que pueda garantizar las conversiones eléctricas de los niveles de voltaje usados por los otros componentes con los que trabaja el microprocesador (por ejemplo, los niveles de cero volts para un "0" y de +3 volts para un "1" con que funcionan los circuitos integrados TTL), un componente como el transceptor (transceiver) MAX232:



Con la adición de cinco capacitores externos de bajo costo especificados por el fabricante, la conversión realizada por este circuito es llevada a cabo en forma directa sin mayor ciencia:



El diagrama funcional del circuito integrado MAX232 (ampliar imagen):



nos indica que si la terminal de entrada para convertir señales con niveles TTL/CMOS es la terminal 11 (T1IN), entonces las señales ya convertidas a niveles RS-232 se podrán obtener en la terminal 14 (T1OUT); mientras que si la terminal de entrada para convertir señales con niveles RS-232 es la terminal 13 (R1IN), entonces las señales ya convertidas a niveles TTL/CMOS se podrán obtener en la terminal 12 (RIOUT). El circuito integrado proporciona otros dos pares de terminales para lograr lo mismo, los pares 10/7 (conversión TTL/CMOS a RS-233) y 8/9 (conversión RS-232 a TTL/CMOS).

Lo interesante del circuito integrado MAX232 es que aunque puede generar las señales de voltaje RS-232 de +15 volts y -15 volts, lo puede hacer alimentado con una fuente de voltaje de +5 volts.

A continuación (ampliar imagen) se muestra la transmisión de un byte con el cambio de niveles de voltaje en el pin de salida del UART (o y +5 volts) a los niveles de voltaje mayores (-12 volts y +12 volts) requeridos para la transmisión bajo el estándard RS-232, usando el caracter ASCII que representa a la letra "J" (B7B6B5B4B3B2B1=01001010):



Consideraremos que el bit B0=0 está siendo usado como bit de paridad. Obsérvese que antes y después de la transmisión del byte se requiere agregarle dos bits al dato que será enviado:

(1) Un bit de comienzo (START) puesto antes del byte, en este caso igual a "0".

(2) Un bit de terminación (STOP) puesto después del byte, en este caso igual a "1".

Al comienzo de la transmisión de cada byte, es necesario añadir el bit de comienzo START para hacerle saber al receptor que un byte de datos va a ser enviado, el cual le permitirá al receptor poder sincronizarse con los bits posteriores. El bit de terminación STOP proporciona un período de tiempo antes de que el siguiente bit de comienzo (START) sea transmitido, y tiene un nivel (ó sentido) opuesto al bit de comienzo para permitirle al bit de comienzo el poder ser "visto" por el receptor. El proceso de "enmarcar" un dato entre un bit de comienzo START y un bit de terminación STOP es conocido en la literatura técnica como framing, y podemos representar un "marco" de la siguiente manera:



en donde el bit de comienzo START está representado a la izquierda de color verde, el bit de paridad que le sigue está representado de color marrón, los siete bits que representan un símbolo ASCII son de color ciano, y el bit de terminación STOP está representado a la derecha de color rojo.

En el siguiente diagrama esquemático simplificado de una microcomputadora tenemos la presencia ineludible de un UART, el UART 16C550, junto con el PPI 82C55 (designado en el diagrama como un bloque funcional PIO, un acrónimo del inglés que significa Programmable Input Output, lo cual para nuestros propósitos no es más que otra designación para los componentes PIC y PPI utilizados en conjunción con el UART para el manejo de las unidades periféricas), junto con el imprescindible MAX232 para el envío y recepción de señales seriales RS-232 de y hacia equipo periférico (ampliar imagen):



No hay comentarios: