Módulos microcontrolador con un Dallas 5000

Esta sección presenta un módulo microcontrolador genérico que permite el uso de microcontroladores en formato DIP de 40 pines compatible pin a pin con un 8051 de Intel.
Como ejemplo, se ha recurrido a emplear un microcontrolador Dallas 5000. Analizando las características del microcontrolador (ver características), nos damos cuenta que nos permite tener cuatro puertos para nuestro uso, ya que interiormente cuenta con 32 kbytes de memoria interna, la cual nosotros podemos dividirla a nuestro gusto en los dos espacios de memoria típicos en estos dispositivos, memoria de programa y memoria de datos.
Para hacer funcionar este modulo, vamos a necesitar una tensión de alimentación, lo más estable posible, para ello, la construimos a partir de una tensión de 9 voltios que nos dará un transformador, que será el encargado de transformar la tensión de red a esta. Una vez tenemos la tensión de 9 voltios, será rectificada hasta llegar a una tensión de unos 5 voltios exactos, todo este proceso se encargan de realizarlo un puente rectificador de diodos, y un 7805 con sus respectivos condensadores de filtrado.
Observando las características del fabricante del microcontrolador, nos damos cuenta que un pico de 0.3 voltios, nos podría estropear el micro, con lo cual a la salida de la fuente de alimentación diseñada se le añadirá un diodo de protección, en este caso el 1N5878. Una vez tenemos la tensión de alimentación, sería conveniente saber cuando hay alimentación o no, todo ello nos lo va a indicar un diodo led, con su correspondiente resistencia limitadora.
Para hacer funcionar el microcontrolador nos hace falta un reloj de cuarzo, de 11.059 MHz, para hacer que sea compatible con las velocidades mas usuales de comunicaciones, es decir, con este cristal podemos comunicarnos con otros dispositivos a las velocidades estándar de 300,1200, 2400, 9600, 19200, 57600 baudios.
Para el circuito de reset, necesitamos una resistencia de valor 1K para que funcione. Si nos fijamos en este dato, normalmente todos los microcontroladores necesitan de un condensador, por que ya llevan incluido en el propio encapsulado la resistencia de pull-up. Para que el diseño, lo mas estándar posible, se le ha dotado de un condensador para aquellos dispositivos, que en su circuito de reset ya lleven incorporado la resistencia. Esto generalmente a pasar con los dispositivos CMOS.
Dependiendo del microcontrolador a instalar, cuando estemos en el proceso de montaje de la placa, decidiremos si instalamos la resistencia o el condensador, o ambos a la vez, posibilidad que es posible, gracias al jumper que existe para tal efecto, de tal manera que utilizamos uno de los dos, pero nunca los dos a la vez.
La señal /EA necesita tener un valor lógico de 1 en este microcontrolador. Para el resto de microcontroladores dependerá. Para que no surjan incompatibilidades en el diseño, se ha optado por disponer de una serie de interruptores los cuales nos configuran el valor de esta señal de manera adecuada.
Cuando vamos a programar el Dallas 5000, necesitamos que la señal de reset se mantenga a nivel alto y la señal /PSEN este al mismo tiempo con nivel bajo, para ello usamos otro de los interruptores que posee el sistema, además de un transistor con su resistencia limitadora que nos invertirá la señal. Durante el tiempo que este el interruptor accionado.
Si hemos observado el esquema, nos encontramos con un quinto puerto, que solo tiene algunas señales, pues bien, este puerto es para conectar a otro dispositivos que tenga la necesidad de usar solo estas señales. Hay que advertir que mientras estemos utilizando este puerto, si conectáramos un dispositivo al puerto normal, el sistema se volvería inestable, pudiendo no funcionar.
COMPONENTES |
CANTIDAD |
| C.I. Compatible con 8x51 | 1 |
| C.I. 7805 | 1 |
| Condensador Electrolítico 1000µF/35V | 1 |
| Condensador Electrolítico 10µF/63V | 1 |
| Condensador 33pF | 2 |
| Condensador 100nF | 1 |
| Condensador 100µF | 1 |
| Conector Molex 2x5 | 5 |
| Cristal de cuarzo 11.0592MHz | 1 |
| Diodo 1N5817 | 1 |
| Diodo Led (cualquier color) | 1 |
| Regleta Circuito Impreso Atornillable 2 Conductores | 1 |
| Microinterrupores 4 bits | 1 |
| Tira jumpers (3) + 1 capucha | 2 |
| Radiador 7805 | 1 |
| Resistencia 330 Ohm 1/4W | 1 |
| Resistencia 1K 1/4W | 1 |
| Resistencia 10K 1/4W | 1 |
| Torretas Separadoras 10mm | 4 |
| Pulsador Normalmente Abierto | 1 |
| Puente Rectificador Diodos BC250/1500 | 1 |
| PCB 1 Cara (167 x 92)mm | 1 |
| Zócalo 8 pines torneados | 1 |
| Zócalo 16 pines torneados | 1 |
| Zócalo 40 pines torneados* | 2 |
| Cable para puentear | |
* Se sugiere que al microcontrolador se inserte siempre en un zócalo para evitar así, la rotura de sus patillas en las operaciones de quita y pon de este sobre el zócalo soldado a la placa. Si se va a estar continuamente insertando y quitando el microcontrolador de la placa, nos convendría poner un zócalo de tipo ZIF.
Vamos a explicar de manera puntual los pasos a seguir para la transmisión de programas desde el PC al microcontrolador. Para ello vamos a necesitar dos de los módulos diseñados, estos son:
Suponemos que los dos módulos están montados siguiendo los esquemáticos y los fotolitos proporcionados, y que además de los módulos anteriores, poseemos un cable serie que conecte el módulo de comunicaciones con el PC, y tenemos una cinta Bus que nos conectaran ambos módulos.
El primer paso a seguir será la conexión del cable serie desde el ordenador al módulo de comunicaciones, para ello, y como medida de protección conectaremos uno de los extremos del cable serie al PC, estando este APAGADO, pues podríamos causar cortocircuitos en el PC, que podrían dar al traste con los puertos serie del PC. Una vez solucionado este tema, conectaremos el otro extremo del cable serie al módulo de comunicaciones. Interconectaremos los dos módulos mediante un cable cinta BUS, conectándolo al puerto 3 de la placa microcontroladora.
Una vez realizado tal conexión, vamos a terminar de configurar la placa, para ello, y dependiendo el microcontrolador elegido, deberemos seleccionar el tipo de reset adecuado para el sistema, para ello moveremos el jumper de la siguiente manera:

Jumper |
|
1-2 |
Reset a través de un Condensador |
2-3 |
Reset a través de una resistencia |
Configuración del jumper 1
Además de esta pequeña configuración, queda otra todavía más
importante si cabe, es la que va a determinar el funcionamiento del microcontrolador. Se
trata del valor que tiene que tener el pin
, para ello, después de mirar en las hojas de características de nuestro
micro, procederemos a la configuración manual de los microinterruptores que pose la
placa. Su funcionamiento se recoge en la siguiente tabla:
Microinterruptor |
Función |
1 |
ON: Fuerza un 1 en el reset (modo programación en el Dallas 5000). |
OFF: Modo normal de funcionamiento. |
|
2 |
ON: |
OFF: |
|
3 |
Libre para futuras ampliaciones. |
4 |
Libre para futuras ampliaciones. |
Configuración de los microinterruptores 1
Ahora ya podremos enchufar el PC y configurar el programa de comunicaciones adecuado. Como en el 90 % de todos los ordenadores actuales, el sistema operativo por excelencia es la plataforma Windows en todas sus versiones, este sistema operativo lleva incluido una utilidad que se llama HyperTerminal, el cual puede leer los puertos serie del PC.
Los valores con los cuales configuraremos este tipo de programas son:
Con todos estos valores ya configurados y puesto en modo programación, nos debería aparecer una pantalla similar a esta, al darle al intro en el PC:

A partir de esta pantalla ya podemos empezar a trabajar con el microcontrolador.
Como se puede observar en la imagen, el microcontrolador nos ha devuelto una línea característica del programa invocado para la transmisión, ya sea esta serie o paralela. En concreto, aquí se ha utilizado un microcontrolador de la casa Dallas, el modelo Dallas 5000. Cuando el microcontrolador se encuentre listo para recibir el próximo comando, nos lo hará saber a través de este símbolo ">".
Este tipo de micro implementa una interfaz en línea de comandos de fácil uso y que es similar a la utilizada por numerosos programas de este estilo. En concreto los comandos que utiliza este modelo son:
Comando |
Función |
C |
Retorno de CRC-16 chequeo de la RAM interna. |
D |
Visualizala RAM en hexadecimal del formato de INTEL. |
F |
Rellenar la RAM interna con un valor constante. |
G |
Obtener el valor actual de un puerto |
K |
Cargar 40-bits de código encriptado. |
L |
Cargar fichero hexadecimal en formato INTEL. |
P |
Poner un valor en un puerto. |
R |
Leer el registro MCON. |
T |
Refleja datos hexadecimales en formato INTEL. |
U |
Borrar la clave de seguridad. |
V |
Verificar la RAM interna en hexadecimal. |
W |
Escribir en el registro MCON. |
Z |
Poner la clave de seguridad |
^C |
Interrupción de cualquier operación que se este realizando. |
Xon/Xoff |
Control del flujo de la transmisión. |
Comandos del DALLAS 5000(T).
Pasamos brevemente a dar una explicación más detallada de estos comandos:
C: Sintaxis: C[Dirección Inicial [Dirección Final]]
Este comando nos va a devolver un valor que va a ser el CRC de la RAM que le se le indique.
D: Sintaxis: D[Dirección Inicial [Dirección Final]]
Visualiza el rango de memoria indicado ( es opcional), en formato hexadecimal de INTEL.
F: Sintaxis: F byte [Dirección Inicial [Dirección Final]]
Rellena la memoria con un valor en bytes el rango seleccionado, que es opcional.
G: Sintaxis: G
Lectura de los datos que contienen los puertos 0, 1, 2 y 3 y son mostrados en grupos de dos pares de valores hexadecimales.
K: Sintaxis: K byte-1 byte-2 byte-3 byte-4 byte-5
Carga la calve de encriptación. Los cinco bytes son mostrados antes de que sean puestos en los registros.
L: Sintaxis: L
Carga de ficheros .hex, con el formato INTEL. Cada byte escrito en memoria es verificado a posterior, si ocurriese que se encontraran valores diferentes se produciría de inmediato un error.
P: Sintaxis: P <Valor de P0> <Valor de P1> <Valor de P2> <Valor de P3>
Escribe los valores introducidos en todos los puertos simultáneamente.
R: Sintaxis: R
Muestra el valor del registro MCON.
T: Sintaxis: T
Sigue la entrada de ficheros con formato .hex de INTEL. Su valor inicial es OFF.
U: Sintaxis: U
Limpia el "Security Lock" o clave de seguridad. La variable RANGE
es puesta a 32K y la partición es puesta para toda la memoria de programas. Nota:
mientras de esta desbloqueando el "Security Lock", se ponen a cero el registro
de encriptación, el Vector RAM y el bit
de la RAM. Los comandos U y Z son los únicos comandos que pueden ser
ejecutados cuando el chip esta bloqueado.
V: Sintaxis: V
Verifica el contenido de la memoria RAM con el formato hexadecimal INTEL. Este comando opera de manera similar al comando L (load), excepto que este no escribe, simplemente compara byte de la memoria con byte de la fuente.
W: Sintaxis: W byte
Escribe un byte en el registro MCON, para configurar la Partición, el Rango y el bit ECE2. Los bits PAA y SL no son afectados por este comando.
Z: Sintaxis: Z
Pone a 1 el "Security Lock". Solo los comandos U y Z pueden ser ejecutados después.
^C: Sintaxis: ^C
Hace un reset de todas las operaciones.
Xon/Xoff : Sintaxis: Xon/Xoff
Estos dos comandos ofrecen el control del flujo de la transmisión. En el modo de transmisión serie, no es necesario ninguno de ellos, aunque puede responder a los dos.
Una vez ya conocemos el lenguaje que empleará nuestro microcontrolador, vamos a explicar como introducirle un programa, que antes de todo, deberá haber sido compilado y enlazado, obteniendo el fichero.hex.
Una vez el microcontrolador nos ha mostrado su mensaje, pulsaremos L y seguidamente nos vamos al menú de Transferir, Enviar archivo de texto... y una vez situados en esta opción, buscaremos nuestro fichero y confirmaremos la operación. Pasado un pequeño espacio de tiempo, que dependerá de la velocidad de conexión y de lo grande que sea nuestro fichero, el micro nos responderá con un ">", y a partir de ahí, ya podemos desconectar el modo programación (microinterruptor 1 a OFF) y pulsar el reset para inicialice el sistema.