Ecus

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 48

SISTEMA DE DRIVER INTELIGENTE SMART DRIVER

Los smart drivers son dispositivos utilizados en la mayoría de controles de actuadores en la


unidades de control más recientes , casi todas las marcas de unidades incorporan dichos
elementos, las ventajas que presentan respecto a los convencionales son significativas ,
sobre todo porque se pueden simplificar procesos y reducir componentes externos , lo que
brinda gran ventaja respecto a montaje y fallas de soldaduras entre otras , es del punto de
vista de reparación , hay que tener muy claro que este tipo de componentes suelen fallar
menos por temperatura o sobre corriente , o que quiere decir que muy rara vez se van a
poder apreciar sobrecalentados , quemados o maltratados por la corriente , de ahí que es
muy importante conocer cómo funcionan para poder entrar a un diagnostico efectivo sobre
ellos , en la actualidad los utilizan las marcas de unidades de control más modernas , por
ejemplo motorolla, denso, siemens, y en modelos más recientes como lo son vehículos del
año 2010 en adelante , lo que se hace interesante desde el punto de vista de a reparación
es que se usan en diversas unidades de control , como por ejemplo transmisión tablero y
sistemas de entretenimiento.

A continuación explicaremos el sistema de DRIVER inteligente SMART DRIVER usado por


infeneon en diversas aplicaciones de control de motor.

TLE8110EE, Smart Multichannel Low Side Switch with Parallel - Control and SPI Interface
coreFLEX Automotive Power

Este componente es un poderoso driver que puede comandar hasta 10 salidas , en las
cuales se puede sensar la temperatura y corriente , y si en estas salidas que son controles
negativos hacia bobinados principalmente, si se supera el límite máximo de corriente sobre
la bobina el mismo integrado está en la capacidad de cortar la activación del transistor ,
pero lo interesante de este trabajo es que es capaz de enviar la respuesta del sensado al
micro controlador , en este caso la señal feedback o diagnostico se realiza a través de
comunicación tipo BUS , lo que lo hace un elemento muy moderno y seguro , las
activaciones INPUT se pueden realizar con circuitos TTL o CMOS 3.3 O 5V , respecto al
bus de comunicación entre el SMART DRIVER y el microcontrolador , el sistema cuenta
con un mecanismo de comunicación a través de bus periférico interface o PCI BUS capaz
de soportar hasta 16 BIT de trabajo , dentro de las salidas existe la posibilidad de utilizar
algunas de ellas para control de modulación por ancho de pulso PWM , esto hace muy
ventajoso para el control de electroválvulas tipo EGR o EVAP.

Las siguientes son algunas de las características que hacen de este componente uno de
los más aplicados a las diferentes Unidades de control ECUS:

Overvoltage, Overtemperature, ESD –Protection

Protección contra sobre voltaje, principalmente aplicados a través de los picos inductivos
de los actuadores en este caso bobinas como los inyectores por ejemplo , también cuenta
con protección contra sobre temperatura en caso de corto circuito , o mala instalación del
componente , y por ultimo una protección contra descarga electrostática ESD la cual se
puede presentar por diversas circunstancias entre ellas a través del cableado cuando el
técnico manipule los ramales o arnés de cableado.

Direct Parallel PWM Control of all Channels

El poder contar con la posibilidad de conexión en paralelo le brinda l integrado una ventaja
en cuanto las aplicaciones, logrando utilizar el mismo HARDWARE en diferentes montajes

Safe COMMUNICATION (SPI and Parallel)

El sistema puede tener un control de diagnóstico a través del BUS serial que comparte con
el micro controlador relacionado, esto le permite un máximo de posibilidad al momento de
un diagnóstico, para esto el DRIVER utiliza los diferentes sensores al interior, que permiten
brindar la información necesaria al controlador

Efficient Communication Mode: compactCONTROL

Este tipo de estructura permite poder controlar más fácil al microcontrolador con una muy
baja potencia de activación y gran respuesta para el diagnóstico lo que reduce el daño por
entrada.

Compatible with 3.3V- and 5V- Micro Controllers I/O ports

Los nuevos controladores de 32 BIT son sistems que trabajan a 3.3 V este DRIVER esta
dispuesto para poder trabajar bajo estas condiciones , lo que brinda una ventaja importante
respecto a a aplicación en nuevas unidades de control , pero de lo contrario también eta en
posibilidad de trabajar con los tradicionales 5V.

Clamp SAFE for highly efficient parallel use of the channels

La función clamp o pinzado permite suprimir los picos a través de las cargas inductivas,
este pico de tensión puede llegar hasta los 80 V en algunos actuadores como los VVT-I
INYECTORES Y RELEVADORES, con este clamp se reduce al mínimo la posibilidad de
esfuerzo adicional , y pone a trabajar al transistor en una condición más ventajosa.
A continuación se mostrara un ejemplo de la aplicación de este componente con un
esquema de los pines que se utilizan para el circuito descrito.

A continuación se realizara una descripción de los componentes internos que hacen parte
de este integrado brindando una descripción de cada uno de los términos, para poder tener
una herramienta adicional en lo correspondiente al diagnóstico, o más importante es tener
claro la función de cada terminal puesto que en el ensamble se hace necesario realizar
mediciones sobre el componente, en la mayoría de unidades de control se sigue contando
con una salida, por cada entrada, la diferencia con estos circuitos es que de no estar en
buen estado, se podría tener códigos de falla del componente aunque se instale un
transistor de reemplazo.
CONFORMACION INTERNA DEL INTEGRADO.

1: Pulsos de entrada TTL O CMOS desde el micro controlador.

2: Sistema SPI para circuitos TTL o CMOS.

3: Registro de entrada

4: Registro de diagnóstico.

5: Control de registro.

6: Control análogo y funciones de protección y diagnóstico.

7: unidad de control lógico.

8: Sensor de Temperatura.

9: Detección contra corto circuitos.

10: Control de disparo.

11: Detección de carga abierta, circuito abierto desconectado.

12: Protección contra corto a masa.

Ahora a continuación se explicara q corresponde cada uno de los pines que conforman el
integrado, la idea es buscar el método para poder realizar las mediciones, cada uno de los
pines cuenta con una función importante , y la herramienta adecuada para poder realizar
las mediciones es el osciloscopio , el que se instala en cada uno de los pines
correspondientes.

IN 1, IN 2….: Son las entradas que provienen desde el micro controlador, estos son pulsos
generalmente a 5V, pueden ser PWM o VPW, y corresponden directamente al tiempo de
saturación en la salida de acuerdo a la numeración de la entrada, ej la IN 1, accionara la
salida 1 OUT 1.

OUT 1, OUT 2…: Estas siglas representan las salidas de Driver hacia las bobinas
correspondientes a la salida de unidad de control, cada una de estas salidas tiene un
máximo de corriente permisible, lógicamente superior a la corriente nominal del actuador,
pero cada una de estas salidas se encuentran protegidas y diagnosticadas, esto quiere
decir que si ocurre algo con esa salida el smart driver es capaz de indicarlo al micro
controlador.

VDD: esta es l tensión de alimentación de circuito, básicamente en este caso puede ser 5
o 3.3 V esto depende del regulador de tensión que le corresponde a este DRIVER, el
consumo de este elemento es muy bajo, por lo tanto no es muy importante la corriente
mínima de la fuente en el PCM.

EN: Este pin corresponde a la habilitación del trabajo a través de las entradas, este es un
pulso a positivo a través del micro o del circuito correspondiente, en algunos casos puede
ser desde el contacto, este valor en este pin es de 5V.

RST: Esta es la entrada de señal de RESET desde el regulador controlador o circuito


encargado, básicamente este reset permite que el sistema pueda empezar a trabajar
principalmente lo relacionado con el sistema de dato PCI bus. Este pulso tiene que está
colocado junto a la alimentación o puede tener un retardo que es calculado en el diseño de
la fuente del vehículo.

S_CS: este pin corresponde al comando selección del chip, este dato proviene desde el
controlador , y básicamente tiene que ver con el sistema periférico PCI , de acuerdo al
cuadro lógico del sistema PCI se puede configurar como maestro o esclavo.

S_CLK: Este pin corresponde a la señal de reloj digital proveniente del micro, básicamente
esta señal se utiliza para que el sistema de datos PCI pueda establecer una comunicación,
el ancho de cada pulso de la señal clock, permite establecer la duración de un BIT.

S_SI: Este pin está diseñado para los datos de entrada provenientes del micro dentro de
estos datos pueden estar las habilitaciones activaciones o simplemente la identificación y
solicitud de diagnóstico.

S_SO: Este pin corresponde a los pines de salida de información hacia el micro
correspondiente a los sistema de enlace PCI en este pin se presentan básicamente los
sistemas de diagnósticos del driver hacia micro controlador.
DESCRIPCION DE LA POTENCIA DE SALIDA.

Cada canal de salida esta manejado a través de un transistor mosfet canal N el cual
presenta condiciones óptimas de manejo de potencia, en este aspecto cada una de las
salidas se describe de acuerdo a la potencia del manual del fabricante para este elemento,
esta corriente debe ser usada como selección de diseño del elemento a usar en cada una
de las aplicaciones.

El canal 1 al 4 es usado para inyectores o solenoides de características iguales la corriente


nominal de estos elementos puede ser hasta del 1.5 A

En los canales del 5 al 6 se pueden utilizar para inyectores o solenoides de características


similares, en este caso la corriente no debe exceder los 1.7 A

De los canales del 7 al 10 se encuentran salidas para solenoides más sencillos,


básicamente de potencias más bajas, para este caso de 0.75 A.

Todos los canales del 1 al 10 están protegidos contra cargas inductivas de hasta 55 V, esta
protección se presenta mediante diodo CLAMP.

Todos los canales tienen la posibilidad de conectarse en paralelo, básicamente para


aumentar la capacidad, el arreglo en paralelo está permitido por el diseñador del DRIVER.
PROTECCION TIPO CLAMP

La protección, para cargas inductivas se presenta por medio de diodos supresores que
logran eliminar este pico de tensión, dentro del diseño de este circuito existen unas
fórmulas para poder garantizar la estabilidad del circuito pero sirven de mucho al momento
de entender la característica de operación del mismo.

La máxima energía del pico inductivo se puede calcular con la siguiente formula.
SISTEMA DE PROCESAMIENTO DE DATOS – CONTROLADORES Y MEMORIAS

En el circuito de procesamiento de datos se tienen 2 elementos fundamentales, el


procesador y la memoria, se estudiara las características de las memorias y los
procesadores de forma de identificarlos, no se entrara en detalles en cuanto a su
operación.

Dentro de la gama de Memorias se pueden establecer tres Grupos bien definidos.

Memorias tipo Sop: Este encapsulado es uno de los más utilizados en la actualidad,
posee una capacidad de 2 hasta 32 megas en el uso automotriz, este encapsulado logro
en su costo, capacidad y espacio un compromiso adoptado por los fabricantes de
electrónica automotriz.

La cantidad de pines utilizados es de 44 o 48 terminales, también posee una marca el cual


nos indica la posición del pin 1. Se borran eléctricamente.

Memorias tipo Plcc: Este encapsulado fue el segundo utilizado por las terminales
automotrices, el misma cuenta con un tamaño reducido y la configuración de sus patas
envuelve los 4 lados a diferencia de su antecesor (dil) la cantidad de patas puede ser de
32, 44, 48 patas. Lo particular de esta configuración es que las patas o pines se
encuentran hacia adentro y su montaje es superficial a la placa madre. Esto simplifica el
tamaño que ocupa en la placa madre y también aporta mayor capacidad en su interior.
Este tipo de memorias se borran eléctricamente. Sobre un lateral posee una marca que
nos indica la posición pin 1. Pueden ser encontradas montadas directamente sobre la
placa como también sobre un zócalo.

DIL: Este encapsulado fue unos de los primeros usados para los autos equipados con
inyección electrónica desde el año 1990. Como se aprecia en la figura este posee 2 líneas
con patas o pines de acceso, estas pueden ser de 28 o 32 pines. Una marca o muesca se
puede observar en su encapsulado, el mismo muestra la orientación de su propia
numeración, y la ubicación del pin 1. También encontraremos una ventana en el medio del
componente el cual nos indica que podemos borrar los datos de la misma con rayos
ultravioletas.
CAPACIDADES DE LAS MEMORIAS

1. Interpretación de su nomenclatura

Marrón (29): Para las memorias montadas en los automóviles se encuentran en su


mayoría 2 tipos de familias la Nro. 27 y la Nro 29, cada familia estructuralmente cumple
con ciertas condiciones como velocidad de acceso, condiciones de circuitos internos como
compuertas, estructuras, arquitectura, etc. Estas características se aplican al uso al cual
son sometidas.

Amarillo (F): Seguido del tipo de familia se observa la letra ―C=5v‖ esto está referido a su
alimentación o letra ―F=flash‖ esto está referido a que su borrado puede realizarse
eléctricamente. Esto se realiza mediante un programador de eproms, su ventaja
Desarrollar las tensiones de las memorias y beneficios del flash, borrado de los dil y Flash

Azul (200): Los números posteriores a su alimentación es la capacidad que posee la


memoria, lo que puede almacenar internamente y pueden ser para las memorias Dil, Plcc,
Sop, aplicadas a los automóviles:

128k, 256k, 512k, 1024k, 2048k, 4096k, 8192k

Equivalencias:

2. Tiempo de acceso

Verde (-70 sf): El tiempo de acceso es el tiempo que se necesita para localizar y leer una
información almacenada; el tiempo de acceso es una característica importante para
determinar la velocidad de resolución de un sistema, conociendo el tiempo de acceso se
puede predecir el tiempo necesario para procesar un trabajo, si algunas localidades de la
memoria se alcanzan más rápidamente que otras se suele tomar el valor promedio de
todas ellas, se habla entonces del tiempo de acceso promedio.

Ej.: -10 ns = menor a 10 nanosegundos.

-120 ns = menor a 120 nanosegundos

1 nanosegundo = 1/1.000.000.000 (una milmillonésima) de Segundo.

3. logo del fabricante.

Usualmente cada proveedor de memorias identifica a su producto colocando un logo. Hay


en el mercado innumerables marcas de fabricantes de memorias:

ST, AMD, ATMEL, INTEL, FUJITSU, NEC,….etc

Cabe destacar que debido a los distintos fabricantes de componentes, existen diferentes
formas de colocar la información. Pero en su mayoría uno puede ver a que tipo de familia
pertenece, su capacidad y su velocidad de acceso. Algunos datos perteneces a datos
internos de cada fabricante, numero de fabricación, lote, etc.

1001=1024=1 megabyte 001=1024=1megabyte

También existen manuales referidos a los distintos tipos de memorias y su aplicación,


donde dan todas las características correspondientes de cada una de ellas.

4. Chek Sum:

Cuando una memoria es leída entrega un valor guardado por cada dirección de la misma.

De acuerdo a la capacidad que la memoria tiene, puede almacenar más datos porque tiene
más direcciones donde guardarlos.

Cada dato en cada dirección es leído por el procesador.

Inicialmente cuando se coloca la ignición el procesador lee todos los valores almacenados
en cada dirección de la memoria y los suma matemáticamente.

Estos valores son números binarios que son sumados todos en su totalidad.

Esta suma genera un nuevo número llamado Check Sum y que no es más que la suma
matemática de todos los valores almacenados en una memoria.

Comprendamos que la memoria tiene lugares donde guardar esos valores o datos, esta
capacidad de guardar en mayor o menor medida depende de la misma capacidad en Mb
de la memoria.
El Check Sun da un número que el procesador conoce y debe coincidir. Si el Check Sun no
se corresponde, esto puede ser por un problema físico en una dirección o porque el dato
guardado se ha alterado.

En cualquiera de los casos el procesador dará un error. En muchos PMC‘s un error de


Check Sum no deja que el procesador ni siquiera accione el relay de la bomba de
combustible y por supuesto el motor no arrancara. La condición de no arranque se realiza
porque no se efectúa ninguna operación ante el error de Check Sunm. No hay relay de
bomba, no encendido ni pulsos en los inyectores.

MEMORIAS SERIALES.

Memorias EEPROM I2C 24CXX

Las memorias EEPROM que funcionan bajo el protocolo I2C han ganado poco a poco un
espacio en el hardware de los equipos electrónicos hasta transformarse en uno de los
medios de almacenamiento de información más populares por su practicidad y sencillez de
manejo. Tener la posibilidad de almacenar datos de diversa índole en una memoria no
volátil, es una característica importante de los equipos que les permite la desconexión
prolongada de cualquier suministro energético y conservar durante mucho tiempo
información valiosa que de otro modo, se perdería al desconectar un sistema. También
conocidas como memorias de protocolo ―serie‖ las 24CXX son infaltables en cualquier
equipo electrónico de consumo masivo y aquí te ayudaremos a comprender su
funcionamiento.

Estos diminutos circuitos integrados poseen la capacidad de almacenar datos organizados,


los que deben ser grabados de manera apropiada en su interior y además tienen
particularidades que los hacen sobresalir y destacar dentro de su género. Algunas de las
características dignas de mencionar, pueden ser las que a continuación enumeramos:

Pueden ser escritas y borradas de forma eléctrica = Electrically Erasable


Programable Read Only Memory.
Están garantizadas para 1 millón de ciclos de escritura/lectura.
Pueden llegar a retener la información sin ser alimentadas durante cientos de años.
Se organizan por páginas para facilitar su direccionamiento y almacenamiento de la
información.
Utilizan para su funcionamiento una tensión única (5Volts o 3,3Volts)
Son compatibles con el protocolo serial I2C (Marca registrada de Philips)
Bajísimo costo.
Amplia variedad de encapsulados para adaptar el modelo necesario, de acuerdo al
tamaño de la aplicación.
Los electrodomésticos utilizan este tipo de memorias en forma masiva, almacenando datos
de programación muy importantes para su funcionamiento

Repasemos el Concepto I2C

El Bus I2C (Inter - Integrated Circuit) es un sistema de comunicación de dos cables, con
propiedades de velocidad de transferencia de datos considerada de media a baja (400
Khz. a 100 Khz.) y que fue desarrollado por Philips Semiconductor, a comienzos de la
década del 80. Originalmente creado para reducir los costos de los equipos electrónicos,
tuvo sus primeras aplicaciones en controles de contraste, brillo y volumen en aparatos de
televisión pero actualmente encontramos conexiones por bus I2C en una gran variedad de
computadoras, equipos industriales, entretenimiento, medicina, sistemas militares y un
ilimitado abanico de aplicaciones e importantes usos potenciales.

Antes de la aparición del Bus I2C, las transferencias de datos de memorias a


microprocesadores, eran realizadas en forma paralela requiriendo de esta forma
encapsulados con una importante cantidades de pines (24, 28, o más pines). La asignación
de funciones de los pines se repartía entre el direccionamiento de la memoria, la selección,
el control y la transferencia de datos. Esta última solamente requería de 8 pines más otros
ocho pines para el direccionamiento, por mencionar algunos. En contraste con este
despilfarro de pines, el Bus I2C permite la comunicación ―chip-to-chip‖ usando solo dos
cables en una conexión serial, permitiendo de esta forma comunicar dispositivos con muy
pocas vías.

Estos dos cables son llamados Clock (SCL) y Data (SDA) y son los encargados del
direccionamiento, selección, control y transferencia de datos, de a un BIT por vez.
Una memoria 24C04 utilizada en un TV

SDA está encargado del intercambio de datos, mientras que SCL se encarga de
sincronizar al transmisor y al receptor durante la transferencia de los datos mencionados
desde un IC al otro. Dentro del sistema de comunicación I2C, los dispositivos están
identificados como Maestro (Master) y Esclavo (Slave), por lo que al dispositivo que inicia
el contacto y ―abre‖ el bus se lo denomina Master, mientras que al que recepciona y
contesta el llamado se lo denomina Slave. Los dispositivos conectados al bus pueden ser
Master solamente, Slave solamente o intercalar las funciones de Master y Slave de
acuerdo como el sistema requiera, tal como es el caso que veremos de las memorias
EEPROM I2C.

Este sistema puede interconectar a muchos IC sobre el bus (hasta 255 dispositivos) y
todos conectados a los mismos dos cables SDA y SCL. Cada dispositivo esclavo posee
una única dirección y cuando el Master transmita el llamado todos los ICs conectados al
bus lo escucharán, pero solo le contestará aquel que posea la dirección que el transmisor
incluyó en su llamada y será con este único Slave, con quien iniciará la transferencia de
datos hasta que decida ―cerrarla‖. Comenzando a comunicar La condición de START o
Inicio ocurre únicamente en la transición de un estado ALTO a un estado BAJO en la línea
SDA mientras la línea SCL se encuentre en un nivel ALTO. En cambio, la transición de un
estado BAJO a un estado ALTO en la línea SDA, mientras la línea SCL se encuentre en
un nivel ALTO, indicará una condición de STOP o Parada. Las condiciones de START y
STOP son siempre generadas por el dispositivo que asuma la condición de Master dentro
del bus.

El bus se considerará ocupado después de una situación de START y pasará a estar


nuevamente libre cierto tiempo después de la transmisión de la condición de STOP. Este
―cierto tiempo‖ será determinado por el Master y vendrá especificado en la hoja de datos
del mismo.
Transición de SDA (H a L y viceversa) para generar las condiciones de START y STOP

En Proton debemos indicarle al programa y/o al microcontrolador cuáles son los pines que
cumplirán las funciones de SDA y SCL, porque pueden existir desarrollos en que estemos
trabajando con un dispositivo que no posea un módulo SSP nativo (Synchronous Serial
Port). En este caso, no tendremos pines dedicados (por hardware) a tal fin en el
microcontrolador y debemos indicarle al sistema mediante instrucciones de programa, que
pines cumplirán la función de interconexión al Bus I2C. Esto se realiza al comienzo del
programa antes de la declaración de variables y se formaliza mediante un comando
llamado DECLARE, quedándonos la secuencia de la siguiente forma:

DECLARE SDA_PIN PORTB.0

DECLARE SCL_PIN PORTB.1

En el ejemplo propuesto, hemos ordenado que SDA sea el pin 0 del puerto B, mientras que
SCL sea el pin 1 del mismo puerto. Esta aplicación es válida para cualquier puerto del
microcontrolador mientras esté configurado en modo digital y se debe tener en cuenta que
si no se incluyen estas directivas al inicio del programa, por defecto se asignarán los pines
PORTA.0 para SDA y PORTA.1 para SCL.

Otra de las cosas que debemos indicarle a nuestro sistema durante el desarrollo es la
velocidad a la que intercambiará datos el bus ya que la mayoría de los dispositivos
actuales puede realizarlo a 400Khz o a 100Khz. Si bien ya existen circuitos integrados
capaces de trabajar a 1Mhz también nos encontramos en la actualidad con el contraste de
memorias EEPROM que no pueden intercambiar datos a más de 100Khz. Por lo tanto, si
optamos por utilizar la frecuencia mínima, incluiremos el siguiente comando: DECLARE
SLOW_BUS=ON

Luego de esto, ya estamos listos para ―abrir‖ el diálogo dentro del bus y lo haremos con el
sencillo comando: BSTART

De esta forma, el bus ya habrá sido abierto por nuestro microcontrolador asignándose éste
la función de Master y pasando a estar todo listo para la transferencia de datos hacia el
Slave que el microcontrolador decida, transmitiendo al bus la dirección pertinente. Para
leer datos, en nuestro caso alojados en una memoria, lo haremos de la siguiente forma:
BUSIN Control, Dirección, [Variable]

La sintaxis expresada nos indica que el Master (nuestro microcontrolador) recibirá (BUSIN)
un dato, el que colocará dentro de una Variable luego de haberlo sacado de uno de los
dispositivos ―colgados‖ del Bus I2C. El circuito a quién desea extraer el dato le transmite a
través de la palabra de Control que va a extraer datos de él, y que dicho dato se
encuentra en la Dirección apuntada. La palabra Control posee dos informaciones
importantes a destacar que son el nombre que posee nuestro dispositivo remoto dentro del
Bus y la instrucción acerca de que vamos a leer en él. Si por el contrario lo que desea
hacer el sistema es escribir un dato en el dispositivo Slave seleccionado, lo hará mediante
la siguiente forma: BUSOUT Control, Dirección, [Variable].

Con una sintaxis muy similar al caso anterior, el Master transmitirá (BUSOUT) un dato, el
que tomará de una Variable, y lo grabará en uno de los dispositivos conectados al bus y
seleccionado con la palabra de Control. En esta palabra se indicará a cuál de todos los
dispositivos le hablará, indicándole que grabará en él y que a este proceso lo hará en una
Dirección definida dentro del programa principal. Cabe agregar en este punto que Proton y
la mayoría de los fabricantes de memorias recomiendan efectuar una rutina de demora o
espera luego de haber grabado un dato a través de BUSOUT, para asegurar la grabación
del dato, la que se efectiviza mediante la expresión: DELAYMS 10 , indicándonos con esto
que efectuará un retardo o demora (Delay) de 10 milisegundos. Luego, sólo nos queda
―cerrar‖ el bus y lo haremos con la instrucción: BUSTOP Eso es todo. Ya tenemos la
forma de abrir el bus, de leer o de grabar en un dispositivo Slave y de cerrar nuevamente
el bus. Es momento de saber cómo manejar la palabra de Control y la Dirección de
lectura/escritura.

Organización Interna de las Memorias

No todas las memorias EEPROM I2C se direccionan y controlan de la misma forma. Por lo
tanto, haremos un breve resumen de los datos más relevantes a tener en cuenta al
momento de emplear la palabra Control dentro de los comandos BUSIN y BUSOUT.

Palabra o Byte de Control

La palabra o Byte de Control, nos indicará la dirección que posee la memoria dentro del
bus y si vamos a leer o a escribir en ella.

24C00 = 1|0|1|0|X|X|X|R/W

R/W significa Read o Write, que en español equivale a Leer o Escribir respectivamente
según lo que decidamos hacer con la memoria. Si vamos a leer la memoria (Read) este bit
adoptará el valor 1. En cambio, al grabar un dato en la misma (Write), el valor será 0. Por
su parte X, significa que el valor que adopte en estas posiciones no tiene relevancia, por lo
que podemos adoptar para este lugar, un cero o un uno que el resultado será el mismo.
Como dato adicional podemos mencionar que la memoria 24C00 posee una capacidad de
128 bits, organizada en una sola página con 16 Bytes de 8 bits

24C01/24C02/24C04 = 1|0|1|0|A2|A1|A0|R/W

Para este grupo de memorias tenemos la misma dirección en los cuatro bits iniciales
(1010) que en el caso anterior, lo mismo para el bit final de R/W, pero encontramos un
significativo cambio en las posiciones A0, A1 y A2 que coinciden con los pines uno, dos y
tres respectivamente, según las hojas de datos de las memorias.
Los pines A2, A1 y A0 se utilizan para seleccionar el chip al que direccionaremos la
transferencia de datos

Con estos tres bits, podemos direccionar hasta ocho memorias conectadas al mismo bus,
trabajo que puede realizar cómodamente el microcontrolador. La única que se diferencia
de este grupo es la 24C04 que debe tener siempre conectado A0 a GND o a VCC,
pudiendo por lo tanto, direccionarse sólo cuatro unidades de la misma a través de A1 y A2.
A0, en este caso, servirá para direccionar el ―puntero‖ de escritura o lectura, hacia la primer
página de 256 Bytes o hacia la segunda. Aquí empezaremos a ver ya, cómo la estructura
interna de estas memorias está organizada en ―páginas‖. Por último, destacamos que en
este grupo de memorias encontramos la siguiente característica: sumarse a otras iguales
para incrementar la capacidad de almacenamiento.

Por su parte la memoria 24C02 posee una página de 256 Bytes y la 24C04 ya posee dos
páginas de 256 Bytes cada una, sumando así 512 Bytes de capacidad. Vemos entonces,
que las 24C01 y 24C02 poseen una sola página, por lo que la palabra de control para ellas
será igual a 1010000X, siendo X el bit que defina la lectura o escritura en la memoria,
mientras que la 24C04 tendrá dos palabras de control, según la página donde decidamos
trabajar. Esto es, 1010000X para la primer página y 1010001X para la segunda.

24C08/24C16 = 1|01|0|B2|B1|B0|R/W

En el caso de estos modelos, repetimos los primeros cuatro bits iníciales que identifican a
las memorias EEPROM seriales (1010) y el último bit R/W, mientras que nos encontramos
con la terminología B2, B1 y B0 dentro de la palabra de control en estos modelos.
Tabla que nos muestra cómo seleccionar las páginas en memorias 24C08 y 24C16

En el caso de estas dos memorias, no podremos colocar en el bus múltiple cantidad de


ellas sino que sólo tendremos posibilidad de colocar una sola, a diferencia de las anteriores
vistas hasta aquí. Esto es debido a que a pesar de poseer la misma disposición de pines
que los modelos anteriores, A2, A1 y A0 no poseen conexión interna colocándose
generalmente estos a GND. Por su parte, B2, B1 y B0 sirven para identificar por software
la página (o bloque) dentro de la memoria. Es decir, que para la 24C08 que posee una
disposición de cuatro páginas de 256 Bytes (4 X 256 X 8 bits = 1 KByte = 8 Kbit); mientras
que la 24C16, dispondrá de 8 páginas de 256 Bytes de 8 bits lo que equivale a un total de
2KByte que es lo mismo que 16Kbit. Por lo tanto, razonando lo mencionado y analizando el
cuadro superior, vemos que tendremos 4 palabras de control para la 24C08 y 8 Palabras
de control para la 24C16: una por cada página de 256 Bytes.

24C08 y 24C16 son tamaños de memoria altamente utilizadas en los equipos de TV y DVD
para almacenar información
La palabra Dirección

Habiendo llegado hasta aquí, nos queda resolver solamente la forma en que estará
compuesta esta palabra, la que será usada para decidir el casillero que ocuparemos con
información dentro de la página que habremos seleccionado con anterioridad. En el caso
de la 24C00 teníamos una página de tan sólo 16 Bytes, por lo que tendremos apenas 16
―filas‖ para ubicar Bytes de información. Protón Lite acepta cualquiera de las tres
notaciones para las palabras de Control y de Dirección, es decir: Binaria, Decimal o
Hexadecimal, por lo que podemos escribir para facilitar el trabajo, un comando de la
siguiente forma:

BUSIN 161, 8, [Dato]

En el ejemplo mostrado tenemos la palabra de control 161, lo que equivale a 10100001 en


binario y que nos indica que accederemos a la primer página (página cero) de cualquier
memoria de las vistas y que la citada memoria será leída.

Luego viene el valor 8, que sería 00000100 en binario, lo que nos indica que se leerá la
octava de todas las filas de Bytes que tenga esta página. Mientras que por último, el dato
extraído será volcado en una variable de tamaño BYTE a la que hemos denominado ―Dato‖

Escribir en esta misma dirección sería:

BUSOUT 160, 8, [Otro_Dato]

El último bit de la palabra de control a pasado a ser cero (antes teníamos 161 y ahora
tenemos 160), y el valor a grabar será el que exista en ese momento dentro de la variable
―Otro_Dato‖, también de tamaño BYTE y declarada al inicio del listado del programa.

Programa ejemplo para leer una EEPROM I2C con Proton


Con este sencillo programa de ejemplo podemos leer la primer página de una memoria
EEPROM I2C y colocar en un display LCD cada uno de los valores leídos durante medio
segundo antes de pasar al próximo valor, hasta leerlos a todos. Para otras páginas,
variaremos la palabra de control según nuestras necesidades de uso. El ejemplo muestra
la utilización de un PIC16F84A y la declaración de los pines que se utilizarán como SDA y
SCL. También cabe destacar que se utilizará una baja velocidad de bus y que el LCD se
conecta al puerto por defecto para tal fin, que en este caso es el B.

De esta forma se pueden guardar una multitud de datos en una memoria EEPROM I2C y
tenerlos siempre listos para su utilización durante el desarrollo del programa. Además,
funciones extras dentro del programa del microcontrolador nos pueden permitir detectar el
corte de la tensión de alimentación y, mediante el uso de una batería de respaldo o Back-
Up, grabar inmediatamente todas las variables dentro de la memoria para luego proceder a
apagar el sistema de forma automática hasta que se reponga la energía. Un ejemplo de
esta aplicación son los contadores de fichas de los videojuegos de salón, los flippers y
la mayoría de las máquinas recreativas que trabajan con fichas o monedas. Mientras la
máquina funciona normalmente, la batería de respaldo se mantiene cargada y al momento
de un apagón o de la desconexión para su traslado, la información se guarda de manera
automática para su posterior control.

Serial Peripheral Interface

El Bus SPI (del inglés Serial Peripheral Interface) es un estándar de comunicaciones,


usado principalmente para la transferencia de información entre circuitos integrados en
equipos electrónicos. El bus de interface de periféricos serie o bus SPI es un estándar para
controlar casi cualquier electrónica digital que acepte un flujo de bits serie regulado por un
reloj.

Bus SPI: un maestro y un esclavo.

Incluye una línea de reloj, dato entrante, dato saliente y un pin de chip select, que conecta
o desconecta la operación del dispositivo con el que uno desea comunicarse. De esta
forma, este estándar permite multiplexar las líneas de reloj.
SPI bus: un maestro y tres esclavos.

Muchos sistemas digitales tienen periféricos que necesitan existir pero no ser rápidos. La
ventajas de un bus serie es que minimiza el número de conductores, pines y el tamaño del
circuito integrado. Esto reduce el coste de fabricar montar y probar la electrónica. Un bus
de periféricos serie es la opción más flexible cuando muchos tipos diferentes de periféricos
serie están presentes. El hardware consiste en señales de reloj, data in, data out y chip
select para cada circuito integrado que tiene que ser controlado. Casi cualquier dispositivo
digital puede ser controlado con esta combinación de señales. Los dispositivos se
diferencian en un número predecible de formas. Unos leen el dato cuando el reloj sube
otros cuando el reloj baja. Algunos lo leen en el flanco de subida del reloj y otros en el
flanco de bajada. Escribir es casi siempre en la dirección opuesta de la dirección de
movimiento del reloj. Algunos dispositivos tienen dos relojes. Uno para capturar o mostrar
los datos y el otro para el dispositivo interno.

MICROCONTROLADORES.

El microcontrolador es una de las formas más básicas de un sistema con microprocesador.


Aunque son mucho más pequeños que los microprocesadores personales y los grandes
ordenadores, se construyen microcontroladores con los mismos elementos básicos. En el
sentido más simple, los microprocesadores producen un modelo específico basado en
unas entradas y unas salidas, con las instrucciones en un programa con microprocesador.

Como la mayoría de microprocesadores, los microcontroladores son simplemente


ejecutores de instrucciones de propósito general. La estrella real de un sistema con
microprocesador, es un programa de instrucciones que son proporcionadas por un
programador. Este programa le dice al microprocesador que realice largas secuencias de
acciones muy simples para lograr tareas útiles como las pensadas por el programador.

La inferior proporciona una vista global de un sistema con microprocesador. Simplemente


cambiando los tipos de dispositivos de entrada y de salida, éste diagrama de bloques
podría ser el de un microprocesador personal, un PCM O un simple un
microcontrolador (MCU) de cualquier modulo del auto. Los dispositivos de entrada y de
salida (E/S) mostrados en la figura son lo típicos encontrados en un sistema con
microprocesador.
Entradas de un Sistema con Microprocesador

Los dispositivos de entrada proporcionan información del mundo exterior al sistema con
microprocesador. En un ordenador personal, el dispositivo de entrada más común es el
teclado, igual que una máquina de escribir. Los sistemas con microprocesadores
normalmente usan dispositivos de entrada mucho más simples como interruptores o
pequeños teclados, aunque los dispositivos de entrada más exóticos se encuentran en los
sistemas basados en microprocesador. Un ejemplo de un dispositivo de entrada exótico
para un microprocesador es el sensor de oxígeno en un automóvil que mide la eficacia de
la combustión tomando muestras en el tubo de escape.

La mayoría de entradas del microprocesador pueden procesar sólo señales de entrada


digital, al mismo nivel de voltaje que el de la fuente de alimentación. El nivel 0 V o tierra se
le llama VSS y el nivel positivo de la fuente de alimentación se le llama VDD y es
típicamente de 5 Vdc. Un nivel aproximado de 0 voltios indica una señal lógica ‘0’ y un
voltaje aproximadamente igual al nivel positivo de la fuente de alimentación indica una
señal lógica ‘1’.

Por supuesto, el mundo real está lleno de señales analógicas o señales que son de otros
niveles de voltaje. Algunos dispositivos de entrada traducen los voltajes de señal de algún
otro nivel a los niveles VDD y VSS, necesarios para el microprocesador. Otros dispositivos
de entrada convierten las señales analógicas en señales digitales (a valores binarios ‗1‘ y
‗0‘) para que el microprocesador los pueda entender y manipular.

Algunos microprocesadores incluyen circuitos convertidores analógicos/digitales en el


mismo circuito integrado. Los transductores se pueden usar para traducir otras señales
del mundo real a niveles de señal lógica (Ej. un sensor). Que un microprocesador puede
entender y manipular. Algunos ejemplos que incluyen transductores, como los sensores de
temperatura, sensores de presión, detectores de nivel de luz y otros. Con estos
transductores, casi cualquier propiedad física se puede usar como entrada a un sistema
con microprocesador.

Salidas de un Sistema con Microprocesador

Se usan dispositivos de salida para comunicar la información o acciones del sistema con
microprocesador al mundo exterior. En un ordenador personal, el dispositivo de salida más
común es la pantalla CRT(tubo de rayos catódicos). Los sistemas con microprocesador
usan a menudo dispositivos de salida mucho más simples como los LEDs, lámparas, o
zumbadores. Circuitos convertidores (a veces construidos en el mismo circuito integrado
microprocesador) pueden convertir señales digitales a niveles de voltaje analógicos. Del
―controlador‖ en microcontrolador viene del hecho de que estos pequeños sistemas con
microprocesador normalmente controlan algo en comparación con un ordenador personal
que normalmente procesa información. En el caso del ordenador personal, la mayoría de
las salidas es de información (cualquier información en una pantalla CRT o en el papel de
la impresora). Por otro lado, en un sistema con microprocesador, la mayoría de las salidas
son señales de nivel lógico digital, que se usan para manejar LEDs o dispositivos eléctricos
como relés o actuadores Ej Inyectores.
Unidad Central de Proceso (CPU)

La CPU (Central Processor Unit) es el centro de cada sistema microprocesador. El trabajo


de la CPU es ejecutar obedientemente las instrucciones de un programa que le fue
proporcionado por un programador. Un programa con microprocesador le dice a la CPU
que lea (read) la información de las entradas y que la escriba (write) a la memoria de
trabajo o que lea la información de la memoria de trabajo y la escriba a las salidas. Algunas
instrucciones del programa involucran decisiones simples que causan al programa
continuar con la siguiente instrucción o saltar a un nuevo lugar del programa. En un
capítulo posterior, se verán de cerca el juego de instrucciones disponibles para un
microcontrolador en particular.

En un ordenador personal, hay varios niveles de programas, empezando con el programa


interno, que es el control más básico del funcionamiento del microprocesador. Otro nivel
incluye programas de usuario que se cargan en la memoria del sistema cuando están a
punto de ser usados. Esta estructura es muy compleja y no sería un buen ejemplo para
mostrar a un principiante cómo trabaja el microprocesador.

En un microcontrolador normalmente, solamente un programa en particular está trabajando


para el control de una aplicación. Por ejemplo, la CPU MC68HC05 sólo reconoce 60
instrucciones diferentes, pero éstas son representativas del juego de instrucciones de
cualquier sistema con microprocesador. Este tipo de sistema con microprocesador es un
buen modelo para aprender el fundamento de funcionamiento de un microprocesador,
porque es posible saber lo que está pasando exactamente en cada paso de la ejecución de
un programa en la CPU.

Reloj (Clock)

Salvo excepciones, los microprocesadores usan un pequeño oscilador del reloj (clock)
para activar la CPU, para mover de un paso a la secuencia siguiente. En el capítulo de
arquitectura de un microprocesador, se puede ver que incluso las instrucciones simples de
un microcontrolador están compuestas de una serie de pasos aún más básicos. Cada uno
de estos pasos diminutos en el funcionamiento del microprocesador toma un ciclo del reloj
de la CPU.

Memoria del Microprocesador

Se usan varios tipos de memoria para los diferentes propósitos en un sistema con
microprocesador. Los tipos principales de memoria encontrados en un microcontrolador
son:

Memorias para almacenar el Programa:

ROM (Read Only Memory): memoria sólo de lectura, este tipo de memoria se programa en
fábrica y se llama Máscara.

EPROM (Erasable Programmable Read Only Memory): memoria sólo de lectura,


programable eléctricamente y se borra por luz ultravioleta a través de una ventana en la
parte superior del dispositivo.

OTP (One Time Programmable): memoria sólo de lectura, programable eléctricamente una
sola vez.
FLASH: memoria programable y borrable eléctricamente, por bloques. Estos tipos se usan
principalmente para almacenar los programas y los datos permanentes que deben
permanecer inalterados incluso cuando no hay ninguna alimentación aplicada al
microcontrolador.

Memoria para almacenar Datos:

RAM (Random Access read/write Memory): memoria de acceso a lectura o escritura


aleatorio, se usa para el almacenamiento temporal de datos y el cálculo intermedio de los
resultados durante las operaciones. Este tipo de memoria pierde los datos cuando se
queda sin alimentación.

EEPROM (Electrically Erasable Programmable Read Only Memory): memoria sólo de


lectura programable y borrable eléctricamente.

La unidad más pequeña de una memoria, es de un solo bit, que puede guardar uno valor
lógico ‗0‘ o ‗1‘.

Estos bits se agrupan en conjuntos de ocho bits para hacer uno byte. Los
microprocesadores más grandes utilizan grupos de 16 o 32 bits, llamados ‗palabras‘ o
word. El tamaño de una ‗palabra‘ (word) puede ser diferente para cada microprocesador,
pero un byte siempre es de ocho bits. Los ordenadores personales trabajan con programas
muy grandes y con grandes cantidades de datos, para ello usan formas especiales de
dispositivos de almacenamiento, llamados almacenamiento en masa, como los discos
blandos, los discos duros, y los discos compactos. No es raro encontrar varios millones de
bytes de memoria RAM en un ordenador personal, con discos duros con varios gigabytes o
discos compactos muy similares a los usados para las grabaciones de música con una
capacidad de 640 millones de bytes de memoria de sólo lectura. En comparación, los
sistemas con microcontrolador típico tienen una memoria total entre 1,000 y 64,000 bytes.

Programa de un Microprocesador

La Figura inferior muestra el programa como una nube, porque se origina en la imaginación
del ingeniero o programador del microprocesador. Esto es comparable a un ingeniero
eléctrico que piensa en un nuevo circuito o un ingeniero mecánico que deduce un nuevo
ensamblaje. Los componentes de un programa son las instrucciones del juego de
instrucciones de la CPU. Así como el diseñador del circuito puede construir un circuito
sumador con simple puertas AND, OR y NOT, un programador puede escribir un programa
para sumar números con simples instrucciones.

Los programas se guardan en la memoria de un microprocesador donde pueden ser


ejecutados de modo secuencial por la CPU. En el capítulo de programación, se aprenderá
a escribir programas y prepararlos para ser cargados en la memoria de un
microprocesador.

El Microcontrolador

Hasta ahora se han visto varias partes de un sistema con microprocesador y ya se está
preparado para hablar sobre los microcontroladores. En la mitad superior de la figura
inferior se muestra un sistema con microprocesador genérico, con una parte adjunta de
contorno punteado. Esta parte, es un microcontrolador y la mitad inferior de la figura es un
diagrama de bloques que muestra su estructura interior con más detalle. El cristal no se
contiene dentro del microcontrolador, pero es una parte necesaria del circuito oscilador. En
algunos casos, se puede sustituir el cristal por un resonador cerámico que es más
económico o un aún menos caro con un conjunto RC (resistencia-condensador).

Un microcontrolador puede definirse como un sistema microprocesador completo, que


incluye la CPU, la memoria, un oscilador del reloj, las E/S y otros periféricos en un solo
circuito integrado. Cuando algunos de estos elementos como las E/S o la memoria no
están incluidos, al circuito integrado se le llama microprocesador. La CPU de un
ordenador personal es un microprocesador.

En la imagen se puede observar un ejemplo de un PCM, donde se puede ver:

1. Procesador (y en el caso de no ser esta su memoria principal Microcontrolador).

2. Memoria.

3. Cristal.
Códigos ASCII

Los microprocesadores deben manejar muchos tipos de información diferente de los


números. El texto (los caracteres alfanuméricos) y las instrucciones se deben poner en un
código, de semejante manera, para que el microprocesador pueda entender esta
información. El código más común para la información de tipo texto, es el código estándar
para el intercambio de información americano (o ASCII).

El código ASCII establece una correlación ampliamente aceptada entre los caracteres
alfanuméricos y los valores binarios específicos. Usando el código ASCII $41, corresponde
a la letra mayúscula A, $20 corresponde a un carácter de espacio, etc. El código ASCII
traduce caracteres a códigos binarios de 7-bits, pero en la práctica la información de los
caracteres se lleva normalmente con 8-bits, poniendo el bits más significativo igual a 0 (el
de más a la izquierda).

Este código ASCII permite, que equipos fabricados por varios fabricantes, puedan
comunicarse porque todos usan este mismo código. La Tabla 2 muestra la relación entre
los caracteres ASCII y el valor hexadecimal.
Tabla 2. Conversión de Hexadecimal a ASCII

Código de trabajo del microprocesador

Los microprocesadores utilizan otro código para dar las instrucciones a la CPU, llamado
código de trabajo o ‗opcode‘. Cada ‗opcode‘ instruye a la CPU para ejecutar una sucesión
muy específica de pasos, que juntos logran un funcionamiento pretendido. Los
microprocesadores de diferentes fabricantes usan diferentes juegos de ‗opcodes‘ porque
estos ‗opcodes‘ son internamente alambrados en la lógica de la CPU. El juego de
instrucciones para una CPU específica, es el conjunto de todos los funcionamientos que
la CPU sabe realizar.

Los ‗opcodes‘ son una representación del conjunto de instrucciones y los código
mnemotécnicos son otros. Aunque los ‗opcodes‘ difieren de un microprocesador a otro,
todos los microprocesadores realizan los mismos tipos de tareas básicas de maneras
similares. Por ejemplo, la CPU MC68HC05 puede entender 62 instrucciones básicas.
Algunas de estas instrucciones básicas tienen algunas ligeras variaciones, cada una
requiere un ‗opcode‘ por separado. El juego de instrucciones del MC68HC05 está
representado a través de 210 únicas instrucciones ‗opcodes‘. En otro capítulo se muestra
cómo la CPU ejecuta realmente las instrucciones, pero primero se necesitan entender unos
conceptos más básicos.

Códigos Mnemotécnicos de las Instrucciones y Ensambladores

Un ‗opcode‘ como $4C es entendido por la CPU, pero no significa mucho a un humano.
Para resolver este problema, se usa un sistema de código mnemotécnico equivalente a la
instrucción. El ‗opcode‘ $4C corresponde al código mnemotécnico INCA que significa
―incrementar el acumulador.‖ Aunque en este libro se muestra la información que
correlaciona las instrucciones mnemotécnicas y los ‗opcodes‘ que ellos representan, esta
información raramente la usa un programador, porque el proceso de traducción se maneja
automáticamente por un programa para el microprocesador llamado ensamblador
(assembler). Un ensamblador es un programa que convierte un programa escrito en
código mnemotécnico, en una lista de código máquina (‗opcodes‘ y otra información) que
puede ser usado por una CPU.

Un ingeniero primero desarrolla un conjunto de instrucciones para el microprocesador en


forma de código mnemotécnico, después usa un ensamblador para traducir estas
instrucciones en ‗opcodes‘ para que la

CPU lo pueda entender. En otros capítulos se verán las instrucciones, como escribir un
programa y el programa ensamblador. Sin embargo, ahora solo hay que entender que las
personas preparan instrucciones para una microprocesador en una forma de código
mnemotécnico, pero que el microprocesador entiende sólo ‗opcodes‘; así que, se requiere
un paso, la traducción de cambiar los mnemónicos a ‗opcodes‘, que es la función del
ensamblador.

Números Octales

Antes de dejar los sistemas de números y códigos, se ven los dos códigos adicionales de
los que se puede haber oído hablar. El sistema Octal (base 8) se usó para algún trabajo
del microprocesador, pero raramente se usa hoy en día. La anotación Octal usa los
números del 0 al 7, representados en tres dígitos binarios, lo mismo que en hexadecimal
se representan en cuatro dígitos binarios. El sistema octal tiene la ventaja de usar los
mismos símbolos de los números decimales, a diferencia de los símbolos hexadecimales,
que añaden de la A a la F.

Los dos motivos que causaron el abandono del sistema octal en favor del hexadecimal
fueron: En primer lugar, la mayoría de microprocesadores usan palabras de 4, 8, 16, o 32
bits; estas palabras no se pueden agrupar en grupos de tres bits. Algunos de los primeros
microprocesadores usaron palabras de 12-bits agrupados en tres bits cada uno. En
segundo lugar el sistema octal no es tan compacto como el hexadecimal; por ejemplo, el
valor en ASCII para la letra mayúscula A es 10000012 (en binario), 4116 (en hexadecimal)
y 1018 (en octal).

Cuando un programador está hablando sobre el valor ASCII de la letra A, es más fácil decir
―cuatro y uno‖ que decir ―uno cero uno‖.

La Tabla 3 muestra la equivalencia entre el sistema octal y el binario. La columna ―binario


directo‖ muestra la equivalencia dígito por dígito, con los dígitos de la columna ―octal‖ en
grupos de tres bits binarios. El bit de más a la izquierda (el noveno) se muestra escrito en
negrita. Este bit se desecha para hacer los deseados 8- bits. La columna ―binario 8-bits‖
tiene la misma información binaria que la columna ―binario directo‖, exceptuando que los
bits se reagrupan en cuatro bits. Cada grupo de cuatro bits equivale a un dígito
hexadecimal.

Al traducir mentalmente los valores de octal a binario, el valor octal se representa con tres
dígitos. Con cada dígito octal representado con grupos de tres bits binarios, hay un bit de
más, (3 dígitos x 3 bits = 9 bits).

Entonces es fácil olvidarse de quitar el bit de más y terminar con un bit extra (el bit
noveno). Al traducir de hexadecimal a binario, es más fácil porque cada dígito hexadecimal
equivale exactamente a cuatro bits binarios.

Dos dígitos hexadecimales exactamente iguales de ocho bits binarios en un byte.


BCD (Binario Codificado en Decimal)

Binario codificado en decimal (BCD) es una anotación híbrida usada para expresar valores
decimales en forma binaria, Tabla 4. BCD usa cuatro bits binarios para representar cada
dígito decimal. Cuatro dígitos binarios pueden expresar 16 diferentes cantidades físicas,
pero en este caso habrá seis combinaciones con valor de bit que son considerados
inválidos (específicamente, los valores hexadecimales valor A hasta la F). Los valores BCD
se muestran también con el signo $ porque realmente son números hexadecimales que
representan cantidades decimales.

Cuando el microprocesador hace que una operación sume en BCD, realiza una suma
binaria y entonces ajusta el resultado en la forma BCD. Por ejemplo, la suma BCD
siguiente:

910 + 110 = 1010

El microprocesador suma

0000 10012 + 0000 00012 = 0000 10102

Pero 10102 es equivalente a A16 que no es un valor BCD válido. Cuando el


microprocesador termina el cálculo, se realiza un chequeo para ver si el resultado todavía
es un valor BCD válido. Si hubiera cualquier acarreo de un dígito BCD a otro o si hubiera
cualquier código inválido, se realizaría una sucesión de pasos para corregir el resultado a
la forma BCD apropiada. El binario 0000 10102 se corrige a 0001 00002 (10 en BCD) en
este ejemplo.
En la mayoría de casos, no es ineficaz el uso de la anotación BCD en cálculos con
microprocesador. Es mejor cambiar de decimal a binario como información entera, el
microprocesador hace todos los cálculos en binario y cambia el resultado binario a BCD o
a decimal, como se necesite para mostrarlo. Esto es cierto porque:

Primero, no todos los microcontroladores son capaces de hacer cálculos en BCD, porque
necesitan un indicador de acarreo dígito a dígito que no está presente en todos los
microprocesadores (aunque las MCU de Motorola tienen este indicador). Segundo, obliga
al microprocesador emular la conducta humana que es menos eficaz que permitir al
microprocesador trabajar en su sistema binario nativo.

Transistores CMOS

La Figura 3 muestra los símbolos para un transistor CMOS tipo N y P. Las características
exactas de estos transistores se pueden determinar por su esquema físico, tamaño y
forma. El propósito de este libro, es tratarlos como dispositivos conmutadores simples.

El transistor tipo N en la Figura 3 tiene su terminal ‗fuente‘ [3] conectado a tierra. Para que
un transistor tipo N conduzca, el voltaje de la ‗puerta‘ [2] debe ser más alto que el voltaje
de la ‗fuente‘ [3], por una cantidad conocida como ‗umbral‘. Se dice que este transistor tipo
N conduce (entre los terminales [1] y [3]), cuando hay un voltaje lógico 1 en su ‗puerta‘ [2].
Cuando la ‗puerta‘ está en lógica 0, se dice que este transistor tipo N no conduce y actúa
como un interruptor abierto entre los terminales [1] y [3].

El transistor tipo P en la Figura 3 tiene su terminal ‗fuente‘ [4] conectado a VDD. Para que
un transistor tipo P conduzca, su voltaje de ‗puerta‘ [5] debe ser más bajo que el voltaje de
la ‗fuente‘ [4], por una cantidad conocida como ‗umbral‘. El transistor tipo P se diferencia
del tipo N con un pequeño círculo en la ‗puerta‘ [5].

Cuando hay un voltaje lógico 0 en la ‗puerta‘ [5] este transistor tipo P se dice que conduce
y actúa como un interruptor cerrado entre los terminales [4] y [6]. Cuando la ‗puerta‘ está
en voltaje lógico 1, este transistor tipo P no conduce y actúa como un interruptor abierto
entre los terminales [4] y [6].

Es relativamente fácil integrar miles transistores del tipo P y N en un microcontrolador y


conectarlos de varias maneras para realizar operaciones lógicas complejas. En los
siguientes párrafos, se ven algunos de los circuitos lógicos más básicos que se encuentran
en un micro controlador.
Puertas Simples

Los tres tipos de puertas lógicas básicas encontradas en un microcontrolador son el


Inversor, la puerta NAND y la puerta NOR. Un diseñador de lógica usa varias
combinaciones de estas puertas básicas para formar circuitos lógicos más complejos,
como los que suman dos números binarios. Aunque que no se piensa en el libro enseñar
técnicas de diseño con lógica, se describen estos circuitos para dar un mejor
entendimiento de cómo trabaja un microcontrolador con información digital.

Inversor

La Figura 4 muestra el símbolo lógico de un Inversor, su Tabla de verdad y un circuito


CMOS equivalente. Cuando un nivel de señal lógico (0 o 1) se presenta a la entrada [1] de
un inversor, el nivel lógico opuesto aparece en su salida [2].

Viendo el circuito CMOS equivalente a la derecha de la Figura 4 y la Tabla 5, se puede


explicar lo siguiente: Cuando la entrada [1] está a un nivel lógico 0, el transistor tipo N [4]
no conduce y el transistor tipo P [3] conduce, la salida [2] que los une, está a VDD (lógica
1). Cuando la entrada [1] está en nivel lógico 1, el transistor tipo P [3] no conduce y el
transistor tipo N [4] conduce, conectando la salida [2] a tierra (lógica 0).

Puerta NAND

La Figura 5 muestra el símbolo de una puerta lógica NAND, su Tabla de verdad y un


circuito CMOS equivalente. Cuando ambas entradas [1] y [2] de la puerta NAND están en
niveles lógicos 1, la salida [3] estará a lógica 0. Si cualquiera de las entradas de la puerta
NAND está en lógica 0, la salida estará a 1.

Viendo el circuito CMOS equivalente a la derecha de la Figura 5 y la Tabla 6, se puede


explicar lo siguiente: Cuando ambas entradas [1] y [2] están en lógica 1, ninguno de los
dos de los transistores tipo P [6] y [4] no conducen y los transistores tipo N [5] y [7]
conducen, para que la salida [3] esté conectada a tierra (lógica 0). Cuando la entrada [1]
está a lógica 0, el transistor tipo N [5] no conduce y desconecta la salida [3] de tierra, sin
tener en cuenta la condición del transistor tipo N [7]. También, cuando la entrada [1] está a
un nivel lógico 0, el transistor tipo P [4] conduce, conectando la salida [3] a VDD (lógica 1).
Igualmente, cuando la entrada [2] está en nivel lógico 0, el transistor tipo N [7] no conduce,
desconectando la salida [3] de tierra, sin tener en cuenta la condición del transistor tipo N
[5]. También, cuando la entrada [2] está a un nivel lógico 0, el transistor tipo P [6] conduce,
conectando la salida [3] a VDD (lógica 1).

Aunque ésta es una simple función lógica, muestra cómo los transistores CMOS pueden
interconectarse para realizar la lógica Booleana con simples señales de nivel lógico. La
lógica de Boole (llamada así, por el matemático irlandés que la formuló) tiene 2 valores (0 y
1) basados en el sistema algebraico con formas matemáticas y relaciones.
Puerta NOR

La Figura 6 muestra el símbolo lógico, la Tabla de verdad y un circuito CMOS equivalente.


Cuando ninguna entrada [1] y [2] de una puerta NOR está a un nivel lógico 1, la salida [3]
estará a un nivel lógico 1. Si cualquier entrada de la puerta NOR está a un nivel lógico 1, la
salida estará a lógica 0.

Viendo el circuito CMOS equivalente a la derecha de la Figura 6 y la Tabla 7, se puede


explicar lo siguiente: Cuando ambas entradas [1] y [2] están a un nivel lógico 0, los
transistores tipo N [5] y [7] no conducen y los transistores tipo P [4] y [6] conducen y la
salida [3] queda conectada a VDD (lógica 1). Cuando la entrada [1] está a un nivel lógico 1,
el transistor tipo P [4] no conduce, desconectando la salida [3] de VDD sin tener en cuenta
la condición del transistor tipo P [6]. También, cuando la entrada [1] está a un nivel lógico
1, el transistor tipo N [5] conduce, conectando la salida [3] a tierra (lógica 0). Igualmente,
cuando la entrada [2] está a un nivel lógico 1, el transistor tipo P [6] no conduce,
desconectando la salida [3] de VDD sin tener en cuenta la condición del transistor tipo P
[4]. También, cuando la entrada [2] está a lógico 1, el transistor tipo N [7] conduce,
conectando la salida [3] a tierra (lógica 0).

Puertas de Transmisión, Buffers y Flip-Flops

Los microcontroladores incluyen los tipos más complejos de puertas lógicas y los
elementos funcionales mostrados en la sección anterior. En esta sección, se estudian
algunas de estas estructuras más complejas, las dos estructuras primeras —la puerta de
transmisión y el Buffer de tres estados— introduciendo la idea de señales de alta
impedancia controladas lógicamente, la tercera — Medio Flip-Flop — introduce una
estructura, que puede mantener una señal en la salida, aún después de que la señal de
entrada haya cambiado.

Los Flip-Flops son vitales para los microcontroladores, para realizar contadores y tareas
secuenciales.

Puerta de transmisión

La Figura 7 muestra el símbolo lógico, la Tabla de verdad y un circuito CMOS equivalente.


Cuando la entrada de control [3] está a un nivel lógico 1, se dice que la puerta de
transmisión conduce y cualquier nivel lógico presente en la entrada [1] también estará en la
salida [2]. Cuando la entrada de control [3] está a un nivel lógico 0, se dice que la puerta de
transmisión no conduce y el nodo de salida [2] estará desconectado de todo (alta
impedancia o Hi-Z).

Viendo el circuito CMOS equivalente a la derecha de la Figura 6 y la Tabla 7, se puede


explicar lo siguiente: Cuando la entrada de control [3] está a un nivel lógico 0, la puerta del
transistor tipo N [6] estará a lógico 0 y la puerta del transistor tipo P [5] estará a un nivel
lógico 1 (VDD). No hay voltaje entre tierra y VDD, que harían conducir el transistor tipo P
[5] o el transistor tipo N [6], así que no hay ninguna conducción entre la entrada [1] y la
salida [2]. Desde el nodo de salida [2] está eficazmente aislado de todo, entonces se dice
que está en alta impedancia (Hi-Z).

Cuando la entrada de control [3] está a un nivel lógico 1, se dice que la puerta de
transmisión conduce y entonces tiene una conexión directa de la entrada [1] a la salida [2].
Si las dos entradas de control [3] y [1] están a un nivel lógico 1, el transistor tipo P [5]
conducirá y conectará la entrada [1] y salida [2]. Aunque la puerta detransistor tipo N [6]
esté en nivel lógico 1, la ‗fuente‘ [1] también está al mismo voltaje, entonces el transistor [6]
no conducirá. Si la entrada de control [3] está a un nivel lógico 1 y la entrada [1] está a un
nivel lógico 0, el transistor tipo N [6] conducirá y conectará la entrada [1] y la salida [2].
Aunque la puerta del transistor tipo P [5] esté a un nivel lógico 0, la ‗fuente‘ [1] también
estará al mismo voltaje, entonces el transistor [5] no conducirá.

La puerta de transmisión mostrada en la Figura 7 a veces se llama interruptor analógico


porque es capaz de dejar pasar señales intermedias entre los niveles lógicos legales.

Las puertas de transmisión pueden formar multiplexores de datos, como el mostrado en la


Figura 8.

Cuando la señal seleccionada [3] está a un nivel lógico 1, la puerta de transmisión [6]
conducirá y la puerta de transmisión [7] (debido al inversor [5]) no conducirá. Así que la
salida [4] no tendrá el mismo nivel lógico que la entrada [1] y las señales 1 de la entrada [2]
no afectarán a la salida [4]. Cuando la señal seleccionada [3] está a un nivel lógico 0, la
puerta de transmisión [7] conducirá y la puerta de transmisión [6] no conducirá. Así que la
salida [4] no tendrá el mismo nivel lógico que la entrada [2] y las señales 1 en la entrada [1]
no afectarán a la salida.

Buffer de tres estados

La Figura 9 muestra el símbolo lógico, un circuito CMOS equivalente y la Tabla de verdad


para un

Buffer de tres estados. Cuando la entrada de control [3] está a un nivel lógico 0, se dice
que el Buffer no conduce y la salida [2] está en alta impedancia que aísla el nodo. Cuando
la entrada de control [3] está a un nivel lógico 1, se dice que el Buffer conduce y cualquier
nivel lógico que esté presente en la entrada [1] también estará en la salida [2].
Viendo el circuito CMOS equivalente a la derecha de la Figura 9 y la Tabla 9, se puede
explicar lo siguiente: Cuando la entrada de control [3] está a un nivel lógico 0, la puerta del
transistor tipo N [6] estará a un nivel lógico 0 y la puerta del transistor tipo P [5] a través del
inversor [9] estará a un nivel lógico 1 (VDD), entonces ambos transistores [5] y [6] no
conducirán. El nodo de salida [2] quedará aislado del todo, se dice que está en alta
impedancia.

Cuando la entrada de control [3] está a un nivel lógico 1, la puerta del transistor tipo N [6]
estará a un nivel lógico 1 y la puerta del transistor tipo P [5] estará a un nivel lógico 0. Si la
entrada del Buffer [1] está a un nivel lógico 0, la salida del inversor [4] estará a un nivel
lógico 1 y hará conducir el transistor tipo N [8] y dejará de conducir el transistor tipo P [7].
Con la entrada de control [3] a un nivel lógico 1 y la entrada [1] a un nivel lógico 0, la salida
del Buffer [2] estará conectada a tierra a través de los transistores tipo N [6] y [8] qué
estarán en conducción.

Cuando la entrada de control [3] está a un nivel lógico 1, la puerta del transistor tipo N [6]
estará a un nivel lógico 1 y la puerta del transistor tipo P [5] estará a un nivel lógico 0. Si la
entrada del Buffer [1] está a un nivel lógico 1, la salida del inversor [4] estará a un nivel
lógico 0, haciendo conducir el transistor tipo P [7] y dejará de conducir el transistor tipo N
[8]. Con la entrada de control [3] y la entrada [1], ambas a un nivel lógico 1, la salida del
Buffer [2] se conectará a VDD a través de los transistores tipo P [7] y [5], que estarán en
conducción.
Medio Flip Flop (HFF)

La Figura 10 muestra el símbolo lógico y un circuito CMOS equivalente de un medio Flip-


Flop (HFF).

Cuando la entrada de reloj [2] está a un nivel lógico 1, la puerta de transmisión [9] conduce
y la puerta de transmisión [8] no conduce. Se dice que el medio Flip-Flop es transparente,
porque la señal de entrada [1] pasa directamente a las salidas Q [3] y Q negada [4].
Cuando el reloj [2] está a un nivel lógico 0, la puerta de transmisión [8] conduce y la puerta
de transmisión [9] no conduce. En este estado, el medio Flip-Flop se dice que está
enclavado (latched). La puerta de transmisión [8], el inversor [6] y el inversor [7] forman un
―anillo‖ estable y las salidas Q [3] y Q negada [4] permanecen al mismo nivel lógico que
cuando el reloj cambió de 1 a 0.

Tipos de Memoria

Los microcontroladores utilizan varios tipos de información que requiere almacenarla en


diferentes tipos de memoria. Las instrucciones que controlan el funcionamiento de los
microcontroladores se guardan en una memoria no-volátil para que el sistema no tenga
que ser reprogramado después de que se deje de alimentar.

Para trabajar con las variables y los resultados intermedios, es necesario guardarse en una
memoria que pueda escribirse rápidamente y fácilmente durante el funcionamiento del
sistema. No es importante conservar este tipo de información cuando no hay alimentación,
por lo que puede usarse una memoria volátil. Estos tipos de memorias se les puede
modificar su contenido escribiendo y sólo se pueden leer por la CPU del microcontrolador.

Otra información sobre las memorias, los datos de entrada son leídos por la CPU y los
datos de salida son escritos por la CPU. Las entradas/salidas E/S (I/O input/output) y los
registros de control son también una forma de memoria del microcontrolador, pero son
diferentes a los otros tipos de memoria, porque la información puede ser detectada y/o
cambiada por otra cosa diferente de la CPU.

Memorias Volátiles

RAM: Memoria de Acceso Aleatorio (Random Access Memory)

La RAM es una forma de memoria volátil que puede ser leída o escrita por la CPU. Como
su nombre implica, se puede acceder a las posiciones de la RAM en cualquier orden. Esta
es el tipo de memoria más común en un microcontrolador. La RAM requiere una cantidad
relativamente grande de área de silicio del circuito integrado y debido a esto el costo es
alto, por esto, normalmente las cantidades de RAM incluidas en los microcontroladores
suelen ser pequeñas.

Memorias No-Volátiles

ROM: Memoria de sólo Lectura (Read-Only Memory)

La ROM consigue su información durante el proceso industrial del circuito integrado. La


información debe ser proporcionada por el cliente antes de integrar el circuito, que una vez
fabricado contendrá esta información. Cuando se ha terminado el microcontrolador, esta
información puede ser leída por la CPU pero no puede cambiarse. La ROM está
considerada como una memoria no-volátil porque la información no cambia si se deja de
alimentarla. La ROM es el tipo más simple, más pequeña y más barata de memoria no-
volátil.

PROM: Memoria Programable de sólo lectura (Programmable ROM)

La PROM es similar a la ROM, sólo que puede ser programada después de fabricar el
circuito integrado.

EPROM: Memoria Eléctricamente Programable (borrable por UV)

La EPROM puede ser borrada exponiéndola a una fuente de luz ultravioleta. Los
microcontroladores con EPROM tienen una pequeña ventana de cuarzo que permite al
circuito integrado ser expuesto a la luz ultravioleta para borrarse. El número de veces que
puede borrarse y reprogramarse una EPROM se limita a unos cientos ciclos y depende del
dispositivo en particular. Para programar la información en una memoria EPROM se usa un
procedimiento especial. La mayoría de microcontroladores con EPROM usan un voltaje
adicional típico de +12 Vdc, durante la programación de la EPROM. La CPU no puede
escribir información en una posición de la EPROM tal como se hace para escribir en una
posición de la RAM.

Algunos microcontroladores tienen internamente un circuito de programación de la


EPROM, para que la CPU del microcontrolador pueda programar las posiciones de
memoria de la EPROM. Cuando la EPROM se está programando, no se conectan los
buses de direcciones y de datos tal como se haría en una memoria normal.

De manera análoga a las casillas, esto sería quitar el mueble entero de soporte de los
buzones y tomándolo como un almacén donde las cajas se llenarían con información.
Mientras los buzones están programándose, no se puede acceder a los buzones del
edificio. Algunos microcontroladores con EPROM (no el MC68HC705J1A) tienen un modo
especial de funcionamiento que los hace parecer una memoria EPROM normal de la
industria.

Estos dispositivos pueden programarse con un programador de propósito general de


EPROM.

OTP: Memoria EPROM programable uno sola vez

Cuando un microcontrolador con EPROM se encapsula con plástico opaco, se le llama un


microcontrolador de programable una sola vez o OTP. Como que la luz ultravioleta no
puede atravesar el encapsulado, la memoria no puede borrarse. El silicio dentro de una
OTP es idéntico a uno encapsulado con una ventana de cuarzo. El encapsulado en
plástico es mucho más barato que el encapsulado en cerámico con una ventana de cuarzo.
Las MCU con OTP son ideales para aplicaciones de alto volumen.

EEPROM: Memoria Programable y Borrable eléctricamente

Las EEPROM se pueden borrar eléctricamente por los comandos de un microcontrolador.


Para programar un nuevo valor en una posición, se debe borrar primero dicha posición y
entonces realizar una serie de pasos de programación. Esto es algo más complicado que
cambiar una posición de la RAM a la que simplemente puede escribirse un nuevo valor por
la CPU. La ventaja de la EEPROM es que es una memoria no-volátil. La

EEPROM no pierde sus contenidos cuando se deja de alimentarla. La diferencia con la


Memoria RAM es el número de veces que se puede borrar y reprogramar una posición de
EEPROM que está limitada, típicamente a 10,000 ciclos. El número de veces que se puede
leer una posición de EEPROM es ilimitado.

FLASH: Memoria Programable y Borrable eléctricamente

Las memorias Flash se pueden borrar y programar eléctricamente (típicamente a 10.000


ciclos de programación/borrado). Ocupan menor área de silicio dentro de un circuito
integrado.

E/S como un tipo de Memoria

El estado y el control de las Entradas/Salidas, es un tipo de posición de memoria que


permite al sistema microcontrolador conseguir la información ‗a‘ o ‗del‘ mundo exterior.
Este tipo de posición de memoria es inusual porque la información puede detectarse y/o
puede cambiarse por otra cosa diferente a la CPU.

Los tipos más simples de posiciones de memoria son los puertos de entrada y salida. En
una MCU de 8- bits, un simple puerto de entrada consiste en ocho pins que pueden ser
leídos por la CPU. Un simple puerto de salida consiste en ocho pins que la CPU puede
controlar (escribir a). En la práctica, una posición de un simple puerto de salida
normalmente se lleva a cabo con ocho básculas y ocho caminos de realimentación, que
permiten a la CPU leer lo que se escribió previamente en la dirección de dicho puerto de
salida.

La Figura 11 muestra los circuitos equivalentes de un bit de RAM, un bit de un puerto de


entrada y un bit de un puerto de salida típico que tienen la capacidad de almacenar la
lectura anterior. En una MCU real, estos circuitos se repiten ocho veces para hacer una
sola posición de 8-bits de RAM, puerto de entrada o puerto de salida. El medio flip-flop
(HFF), Figura 11, es transparente a la entrada. Cuando la señal de reloj está en estado
alto, los datos pasan libremente de la entrada D a la salida Q y . Cuando la entrada de reloj
está en estado bajo, los datos se almacenan en las salidas Q y .
Cuando la CPU guarda un valor en la dirección que corresponde el puerto de salida en la
Figura 11 (c), se activa la señal WRITE para almacenar el dato de la línea del bus de datos
en el medio flip-flop [4]. La salida de esta bascula, la cual tiene un buffer [5], aparece como
un nivel digital en el terminal de salida. Cuando la CPU lee la dirección de este puerto de
salida, se activa la señal READ para habilitar el multiplexor [6]. Este multiplexor acopla los
datos de salida del medio flip-flop hacia la línea bus de datos.

Estados internos y Registros de control

Los estados internos y los registros de control son simplemente posiciones de memoria. En
lugar de detectar y controlar los pines externos, el estado y los registros de control
detectan los niveles de señal lógicos internos (indicadores).

Mirando la Figura 11 y comparando el bit de una RAM con el puerto de salida. La única
diferencia es que el bit de salida tiene un buffer para conectar el medio flip-flop a un pin
externo. En el caso de un bit de control interno, la salida del buffer se conecta a alguna
señal de control interno en lugar de a un pin externo. Un bit de estado interno está como un
bit de puerto de entrada excepto que la señal que es detectada durante una lectura, es una
señal interna en lugar de un pin externo.

La familia de microcontroladores MC68HC05 incluyen pines de E/S paralelos. La dirección


de cada terminal es programable por un software accesible por un bit de control. La Figura
12 muestra la lógica para un pin de E/S bidireccional que incluye un latch en el puerto de
salida y un bit de control de dirección de datos.

Un pin del puerto se configura como una salida si su correspondiente bit DDR (registro de
dirección de datos) se pone a 1. Un pin se configura como una entrada si su
correspondiente bit DDR se pone a 0. Un ‗reset‘ o ‗power on‘, ponen a 0 todos los bits DDR
y configura todos los pines del puerto como entradas. Los bits DDR son capaces de ser
escritos o leídos por el procesador.

Mapa de memoria

Puesto que hay más de mil posiciones de memoria en un sistema MCU, es importante
saber de alguna manera por donde se ha pasado. Un mapa de memoria es una
representación gráfica del espacio total de la memoria de la MCU. La Figura 14 es un
mapa de memoria típico que muestra los recursos de la memoria del MC68HC705J1A.

A lo largo de la columna izquierda de la Figura 14 se muestran las direcciones, con los


valores de 4- dígitos hexadecimales empezando por arriba con $0000 y aumentando hasta
$07FF en la parte inferior. $0000 corresponde a la primera posición de memoria
(seleccionada cuando la CPU tiene todas las líneas del bus interno de direcciones a 0).
$07FF corresponde a la última posición de memoria seleccionada (cuando la CPU tiene
todas las 11 líneas del bus interno de direcciones a 1). La columna siguiente, dentro de
rectángulos, se identifican los tipos de memorias (RAM, EPROM, registros de E/S, etc.,
que residen en una área particular de memoria).

Cada rectángulo puede interpretarse como una fila de 2048 casillas (posiciones de
memoria) y cada una de estas contiene ocho bits de datos como lo muestra la Figura 13.

Algunas áreas, como los registros de E/S, necesitan ser mostradas en más detalle porque
es importante saber los nombres de cada posición individual.

A las primeras 256 posiciones de memoria ($0000–$00FF) se puede acceder por el


microcontrolador de un modo especial llamado ‗modo de direccionamiento directo‘. Los
modos de direccionamiento se describen en mayor detalle en el Juego de Instrucciones
del MC68HC05.

En el modo de direccionamiento directo, la CPU asume que los dos dígitos hexadecimales
superiores de la dirección son 0; así, en la instrucción sólo se necesita dar explícitamente
los dos dígitos de la parte baja de la dirección. Los registros internos de E/S y los 64 bytes
de RAM se localizan en el área de memoria $0000–$00FF.

En el mapa de memoria de la Figura 14, la expansión del área de memoria de E/S


identifica cada posición del registro con los dos dígitos de la parte baja de su dirección en
lugar de los 4-dígitos completos de la dirección.

Por ejemplo, los valores de los 2- dígitos hexadecimales $00 aparecen a la derecha del
registro de datos del puerto A, qué realmente se localiza en la dirección $0000 del mapa de
memoria.
Figura 14. Mapa de Memoria Típico
La Memoria como un Periférico

Las memorias pueden tener una forma de periférico. Los usos de los diferentes tipos de
memoria fueron discutidos anteriormente, pero no fue considerada la circuitería lógica que
se requiere para soportar éstas memorias. Las memorias ROM y RAM son circuitos
directos, no requieren ningún soporte lógico que la de selección de dirección, para
distinguir una posición de otra. Esta circuitería lógica de selección está contenida en el
mismo circuito de la propia memoria.

Las memorias EPROM (PROM borrable) y EEPROM (PROM eléctricamente borrable)


requieren una lógica de soporte para la programación (y de borrado en el caso de la
EEPROM). Por ejemplo, la circuitería lógica de soporte, de los periféricos en el
MC68HC705J1A, contiene internamente un programador de PROM en la MCU. Un registro
de control incluye unos bits de control para seleccionar entre los modos de programación y
de lectura, para habilitar el alto voltaje alto de alimentación requerido para la programación.

Arquitectura del Microcontrolador

Todo lo que hace la CPU se basa en la secuencia de pasos simple. Por ejemplo, un
oscilador genera un reloj que es usado para hace funcionar la CPU a través de estas
secuencias. El reloj de la CPU es muy rápido, hablando en términos humanos parece que
las cosas están pasando casi instantáneamente. Pasando por estas secuencias paso a
paso, se entenderá el funcionamiento de cómo un microcontrolador ejecuta los programas.

También se tomará conocimiento de las capacidades de un microcontrolador, así como sus


limitaciones.

Arquitectura del Microcontrolador

Los microcontroladores de Motorola MC68HC05 y MC68HC11 de 8-bits tienen una


organización específica, que se llama arquitectura Von Neumann, nombre de un
matemático americano. En esta arquitectura, la CPU y una serie de memoria está
interconectada por un bus de direcciones y un bus de datos. El bus de direcciones
identifica la posición de memoria que se está accediendo y el bus de datos se usa para
llevar la información de la CPU a la posición de memoria (casilla) o de la posición de
memoria a la CPU.

Motorola en la implementación de esta arquitectura, tiene unas casillas especiales dentro


de la CPU, llamadas registros de la CPU, las cuales actúan como un pequeño bloc de
notas (llamado en inglés: small scratch pad) y como un panel de control para la CPU. Estos
registros de la CPU son similares a los de una memoria, en que la información se puede
escribir en ellos y almacenarlos. Sin embargo, es importante recordar que estos registros
están alambrados directamente en la CPU y no forma parte de la memoria direccionable
disponible en la CPU.

Toda la información (otra cosa que los registros de la CPU) accesible a la CPU está
prevista (por la CPU) estar en una sola fila de mil o más casillas. Esta organización a veces
se la llama sistema de mapa de memoria de E/S porque la CPU trata todas las posiciones
de memoria igual como si ellas contienen instrucciones de programa, variables de datos, o
controles de entrada-salida (E/S). Hay otras arquitecturas de microcontrolador, pero en
este libro no está pensado explicar estas variaciones.

Afortunadamente, la arquitectura de la familia MC68HC05 de Motorola es más fácil de


entender y usar.
Esta arquitectura abarca las ideas más importantes de los microcontroladores binarios
digitales; así que, la información presentada en este libro es aplicable a otras arquitecturas.

El número de líneas en el bus de direcciones determina el número total de casillas


posibles; el número de líneas en el bus de datos determina la cantidad de información que
puede guardarse en cada casilla. El

MC68HC705J1A, por ejemplo, el bus de direcciones tiene 11 líneas, teniendo un máximo


de 2048 casillas (en general se dice que la MCU puede acceder a 2 K posiciones). El bus
de datos del MC68HC705J1A es de ocho bits, cada casilla puede soportar un byte de
información. Un byte tiene ocho dígitos binarios o dos dígitos hexadecimales o un carácter
ASCII o un valor decimal de 0 a 255.

Registros de la CPU

Las diferentes MCU tienen diferentes juegos de registros de la CPU. Las diferencias son
principalmente en el número y el tamaño de los registros. La Figura 15 muestra los
registros de la CPU de la familia MC68HC05. Aunque la CPU tiene un juego de registros
relativamente simples, son representativos de todos los tipos de registros de CPU y
pueden ser usados para explicar todos los conceptos fundamentales. Este capítulo
proporciona una descripción breve de los registros del MC68HC05, como una introducción
a la arquitectura de las CPU en general. En el Juego de Instrucciones del MC68HC05 se
incluye información más detallada sobre los registros del MC68HC05.

El registro (A) es un registro ‗scratch pad‘ de 8-bits, también llamado acumulador porque
a menudo se usa para almacenar uno de los operandos o el resultado de una operación
aritmética.

El registro (X) es un registro de índice de 8-bits, que también puede servir como un simple
‗scratch pad‘. El propósito principal del registro de índice es apuntar a una área de
memoria donde la CPU carga (lee) o guarda (escribe) la información. A veces un registro
de índice se le llama registro puntero. Se aprenderá más sobre los registros de índice
cuando se describa el modo de direccionamiento indexado.
El registro contador de programa (PC) es usado por la CPU para guardar la pista de la
dirección de la siguiente instrucción a ser ejecutada. Cuando se alimenta la CPU o
después de un ‗reset‘, el registro PC se carga desde un par de posiciones específicas de
memoria llamadas vector de reset. Las posiciones del vector de reset contienen la
dirección de la primera instrucción que será ejecutada por la CPU. Así que las
instrucciones se ejecutan, la lógica de la CPU incrementa el registro PC, tal que siempre
apunta al próximo fragmento de información que la CPU necesitará. El mismo número de
bits que adapta el registro PC, será exactamente igual al número de líneas del bus de
direcciones. Esto determina el espacio total de memoria potencialmente disponible que
puede acceder la CPU. En el caso del MC68HC705J1A, el registro PC es de 11 bits; por
consiguiente, su CPU puede acceder a 2 Kbytes (2048 bytes) de memoria. Los valores
para este registro se expresan con cuatro dígitos hexadecimales, donde los cinco bit de la
parte superior de los 16 bits correspondientes a la dirección binaria, siempre estarán a 0.

El registro de código de condición (CCR) es un registro de 8-bits y guarda los


indicadores de estado, que reflejan el resultado de alguna operación anterior de la CPU.
Los tres bits de la parte alta de este registro no se usan y siempre son iguales a 1. Las
instrucciones Branch (bifurcación) usan los bits de estado para hacer simples tomas de
decisiones.

El registro indicador de pila (SP) se usa como un indicador de la siguiente posición


disponible en una pila, cuya característica es: la última que entra, es la primera que sale
(LIFO o Last In Firts Out). La pila o

‗stack’ puede pensarse que es como un montón de tarjetas, cada una de ellas guarda un
solo byte de información.

En cualquier momento dado, la CPU puede poner una tarjeta encima de la pila o puede
tomar una tarjeta de la pila. Las tarjetas dentro de la pila no pueden recogerse a menos
que todas las tarjetas amontonadas encima se hayan quitado primero. La CPU logra este
efecto de la pila por medio del registro SP. El registro SP apunta a una posición de
memoria (casilla), igual que si se piensa en la siguiente tarjeta disponible. Cuando la CPU
envía un fragmento de dato hacia la pila, el valor del dato se escribe en la casilla apuntada
por el registro SP, entonces el SP se decrementa para apuntar a la siguiente posición de
memoria (casilla) anterior. Cuando la CPU extrae un dato de la pila, el registro SP se
incrementa para apuntar a la casilla recientemente usada y el valor del dato se leerá de
esa casilla. Cuando la CPU se pone en marcha o después de una instrucción ‗reset del
indicador de pila‘ (RSP), el SP apunta a una posición de memoria específica de la RAM
(una cierta casilla).

Tiempos

Se usa un reloj (clock) de alta frecuencia (típicamente derivada de un cristal de cuarzo


conectado a la MCU), para controlar las secuencias de las instrucciones de la CPU. Las
MCU típicas dividen la frecuencia básica del cristal por dos o más para llegar a la
frecuencia de reloj de bus. Cada memoria lee o escribe a uno ciclo de frecuencia de reloj
del bus. En el caso del MC68HC705J1A, se puede trabajar con un oscilador de 4 MHz
(máximo), para dividir por dos y llegar a un reloj de 2 MHz (máximo) del procesador
interno. Cada subpaso de una instrucción necesita un ciclo de este reloj de bus interno
(500 ns). La mayoría de las instrucciones necesitan de dos a cinco de estos subpasos; así
que, la CPU es capaz de ejecutar más de 500,000 instrucciones cada segundo.

También podría gustarte