Robots Móviles
Software y documentación para robots móviles
|
En el presente documento se describe cómo construir una placa que ayude en tareas de depuración de programas en el microcontrolador MC68HC11. Se ofrecen ideas sobre las conexiones a realizar con el puerto D de dicho microcontrolador y unas rutinas en ensamblador para utilizar los recursos de la placa.
Para el montaje vamos a utilizar una placa perforada, sobre la que colocaremos el resto de los componentes, 4 leds (se recomienda que sean de distintos colores), 4 resistencias de 220 ohmios, 1 buzzer, 1 conector macho 10 pines, 1 peine de pines, 1 jumper y cable (rígido a ser posible). Además, utilizaremos también, un cable de 10 hilos con dos terminales hembra debidamente construido para conectar la nueva placa a la del controlador.
No se utilizará todo material. Por ejemplo, del peine de pines solamente utilizaremos tres pines, para hacer un conmutador; cortaremos la placa perforada a unas dimensiones que resulten apropiadas para nuestro montaje, etc.
Como se mencionó anteriormente, utilizaremos el puerto D para conectar la placa al microcontrolador, de esta forma dejaremos el resto de puertos libres para sus usos principales correspondientes. Se recuerda que el puerto D es el que lleva las comuniaciones serie del micro; en este montaje se utilizan los pines del SPI, por lo que, obviamente, no se podrá simultáneamente utilizar las comunicaciones síncronas y la placa de depuración.
En la figura siguiente se muestran las conexiones necesarias entre el conector de 10 pines, que llega de la CT6811 o similares, y los otros componentes. En JP1 utilizaremos tres pines que cortaremos del peine, como puede verse, en una posición se atacará el led azul y en la otra el buzzer. Para la asignación de colores no se ha seguido ningún criterio especial, incluso los leds podrín ser del mismo color. La única recomendación que aquí se hace es la de, en el caso de que se utilicen leds azules, se compartan con el buzzer ya que son los que menos luz emiten (a pesar de ser mucho más caros que los otros).
También se observa que se utilizan los bits PD2 a PD5. Esto debemos tenerlo en cuenta para la programación. El resto de pines se dejan sin utilizar pero fácilmente se podrían introducir modificaciones para añadir dos leds más, por ejemplo, a utilizar desde los bits PD0 y PD1.
El montaje de todos los componentes en la placa perforada no debe tener demasiada complicación. Solamente, quizá, sea interesante comentar que no se debe invertir la polaridad de los diodos led, por ejemplo; si se invierte, no emitirán luz. Estos dispositivos son bastante robustos y no ocurre nada si se conectan al revés, si no lucen de una forma, la correcta es la contraria. De todas formas se recuerda que suelen tener una pata más larga que la otra y la larga se corresponde con el positivo.
La programación es muy sencilla. Podemos dividirla en dos fases: Inicializació y uso. En la fase de inicialización se configuran los puertos SPI y D para poder utilizar los bits PD2 a PD5 como salidas. Esto queda recogido en la rutina inidbg, además se apagan todos los leds (por si queda alguno encendido).
* ----------------------------------------------------------------------- * debug.inc * * Rutinas para inicialización y acceso a los recursos de la placa de * depuración para conectar al puerto D del MC68HC11. * * Requisitos * Se supone que el registro X apunta a los registros de control, es * decir, tiene cargado el valor $1000 (LDX #$1000). * * Uso * Para configurar la placa: BSR inidbg * Para encender un led en particular: BSET PORTD,X LRED * Para apagar un led en particular: BCLR PORTD,X LRED * ----------------------------------------------------------------------- * ----------------------------------------------------------------------- * Símbolos * ----------------------------------------------------------------------- PORTD EQU $08 ; Dirección del puerto D DDRD EQU $09 ; Configuración del puerto D SPCR EQU $28 ; Configuración del SPI LBLUE EQU $04 ; Led azul LRED EQU $08 ; Led rojo LYELLOW EQU $10 ; Led amarillo LGREEN EQU $20 ; Led verde * ----------------------------------------------------------------------- * inidbg * Configura los puertos del SPI y D para utilizar la placa de depuración. * * Entradas: * Salidas : * Modifica: Los registros A, SPCR y DDRD. * ----------------------------------------------------------------------- inidbg LDAA #$04 ; Configura el puerto SPI STAA SPCR,X LDAA #$3C ; Configura el puerto D STAA DDRD,X ; Bits 5-2 de salida CLR PORTD,X ; Todos los leds apagados RTS |
En el código que se muestra a continuación se utiliza la rutina inidbg y se encienden y apagan los leds con las instrucciones BSET y BCLR.
* ----------------------------------------------------------------------- * debugtst.asm * * Prueba de la placa de depuración y de las rutinas de la biblioteca. * ----------------------------------------------------------------------- ORG $0000 ; Programa en RAM interna LDX #$1000 ; Apunta a los registros de control BSR inidbg ; Inicializa la placa de depuración inicio BSET PORTD,X LRED ; Enciende el led rojo BSR f_wait ; Hace una pausa BSET PORTD,X LYELLOW ; Enciende el led amarillo BSR f_wait ; Hace una pausa BSET PORTD,X LGREEN ; Enciende el led verde BSR f_wait ; Hace una pausa BSET PORTD,X LBLUE ; Enciende el led azul BSR f_wait ; Hace una pausa BCLR PORTD,X LRED ; Apaga el led rojo BSR f_wait ; Hace una pausa BCLR PORTD,X LYELLOW ; Apaga el led amarillo BSR f_wait ; Hace una pausa BCLR PORTD,X LGREEN ; Apaga el led verde BSR f_wait ; Hace una pausa BCLR PORTD,X LBLUE ; Apaga el led azul BSR f_wait ; Hace una pausa BRA inicio include debug.inc ; Carga la biblioteca de la placa include wait.inc ; Carga la biblioteca de pausa END |
También puede accederse al código fuente en ensamblador directamente desde estos enlaces: debugtst.asm, debug.inc y wait.inc. El primero es el programa de prueba en sí, el segundo es un fichero de include para la placa y el tercero es para pausas. Esta facilidad de ficheros include sólo puede utilizarse desde el ensamblador Ras, si se utiliza otro programa ensamblador siempre puede incluirse a mano desde el editor.
© Javier de Lope Asiaín 2000-2002
|
||
Última modificación
17-Abr-2001 |
FastCounter by bCentral |