Robots Móviles
Software y documentación para robots móviles

Placa de depuración

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.

[ Placa conectada al robot móvil ]

Materiales

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.

Esquema

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.

[ Esquema de la placa ]

Comentarios sobre el montaje

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.

[ Placa de depuración ]

Programación

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