Tarjeta GPBOT: Guía Rápida |
La tarjeta GPBOT, diseñada por el profesor Guillermo González de Rivera, se emplea en el laboratorio de la asignatura de Robótica de la Escuela Técnica Superior de la Universidad Autónoma de Madrid (EPS-UAM).
En esta página se recopila información sobre la tarjeta, se muestran ejemplos de programación en ensamlador y C y se presentan las diferentes herramientas software, para trabajar desde entornos Linux y Windows.
Microcontrolador MC68HC908GP32 de Motorola (8 bits), que incorpora entre otras cosas:
4 puertos de E/S, de 8 bits (Puertos A,B,C y D)
32KB de memoria Flash
512B de RAM
Unidad de comunicaciones serie asíncronas (SCI)
Unidad de comunicaciones serie síncrona (SPI)
Dos temporizadores de 16 bits
8 canales A/D de 8 bits
Bus de expansión dividido en 4 conectores para cable plano de bus (puertos A, B, C y D)
Conector para cable monitor
Alimentación: Entre 5.5 y 13.5 voltios, a través de clemas o conector tipo jack (alimentación regulada)
Velocidad de funcionamiento: Cristal de 9.8304 Mhz, con el que se consigue una velocidad de bus de 2.45MHz
Conexión directa con la tarjeta GP_IFAZ, para controlar hasta 4 motores de corriente continua y conectar 4 sensores de infrarrojos
Tres puertos (A,B y D) son conectores para cable plano de bus, de 10 vías. Hay un cuarto conector de 16 vías, por donde sale el puerto C, E y algunas señales de control
Algunos de los pines tienen otras funciones. Si además se usa la tarjeta GP_IFAZ, se usan 4 pines de entrada para los sensores y 8 pines de salida para los motores:
La GPBOT se alimenta a través de un conector de tipo Jack o conectando los cables a la clema de alimentación. La alimentación puede estar comprendida entre 5.5 – 13.5 voltios (está regulada).
Existen diferentes entornos para trabajar con la GPBOT:
Entorno de desarrollo M68ICS08 de la empresa P&E Microcomputer Systems. Disponible sólo para plataformas Windows. Descarga gratuita. Incluye un editor, ensamblador, programador y depurador, todo integrado.
Entorno CodeWarrior, de la empresa MetroWerks. Entorno integrado para desarrollo de aplicaciones en C. Sólo plataformas Windows. Permiten descargar una versión de evaluación, limitada.
Compilador cruzado SDCC(RECOMENDADO). Herramienta libre y multiplataforma (disponible para Windows, Linux, MAC, etc), distribuida bajo licencia GPL. Es un compilador de C para microcontroladores de 8 bits, entre ellos el 68hc08, pero también es válido para los PIC, 8051, Z80, y algunos otros. Se utiliza en la consola, pero se integra perfectamente con otros IDEs, como por ejemplo Anjuta. También incluye el ensamblador as-hc08. Está disponible en Debian.
Sofware de grabación GPBOT-DOWN. Permite programar la GPBOT desde plataformas Linux. Disponible bajo licencia GPL.
NOTA: Las directivas del ensamblador empleado por el M68ICS08 y por el as-hc08 son diferentes, por ello los programas .asm no se pueden llevar directamente de una a otra herramienta (los cambios, no obstante, son mínimos).
Datasheet del 68HC08GP32: Especificaciones técnicas del microcontrolador 6808. Motorola.
Manual de usuario del sistema GPBOT. Guillermo González de Rivera. 2002.
Manual de programación del sistema GPBOT: Ejemplos de programación, set de instrucciones, etc... Se utiliza el entorno M68ICS08. Guillermo González de Rivera, Ivan González, Carlos Jesús Venegas. 2003.
En la siguiente tabla se muestran ejemplos en ensamblador para el as-hc08 y el entorno M68ICS08 de Windows. Son ejemplos muy básicos, para a partir de ellos hacer cosas más complejas.
Ejemplos en ensamblador |
AS-HC08 |
M68ICS08 |
Ejecutable |
Descripción |
-------- |
Plantilla para la realización de otros programas. Contiene los ficheros con la definición de los registros del 6808, mapa de memoria para la GPBOT, ficheros makefiles de ejemplo, etc. |
||
---------- |
Plantilla modelo para hacer programas en ensamblador |
||
PUERTO A. Ejemplo de configuración del puerto A para salida. Se configuran todos los pines para salida y se envía un valor. Si se conectan leds se puede visualizar el dato. |
|||
PUERTO A. Ejemplo de configuración de pines para entrada y salida. Los 4 bits de mayor peso del puerto A se configuran para salida y los 4 de menor peso para entrada |
|||
PUERTO B. Ejemplo de configuración del puerto B para salida. Se configuran todos los pines para salida y se envía un valor. Si se conectan leds se puede visualizar el dato. |
|||
PUERTO B. Ejemplo de configuración de pines para entrada y salida. Los 4 bits de mayor peso del puerto B se configuran para salida y los 4 de menor peso para entrada |
|||
PUERTO D. Ejemplo de configuración del puerto D para salida. Se configuran todos los pines para salida y se envía un valor. Si se conectan leds se puede visualizar el dato. |
|||
TEMPORIZADOR 1. Ejemplo de cómo realizar una pausa por espera activa (sin interrupciones), utilizando el temporizador 1. Se pueden hacer esperas desde 100ms hasta 25 segundos. |
|||
TEMPORIZADOR 1. Se hace parpadear un led conectado al Bit 0 del puerto B, usando la interrupcion de overflow del TIM1 |
|||
TEMPORIZADOR 1. Se hace parpadear un led conectado al Bit 0 del puerto B, usando la interrupcion del comparador 0 del TIM1 |
|||
TEMPORIZADOR 1. Con el canal 0 se hace parpadear un led conectado al bit PB0 y con el 1 otro conectado al bit PB1, mediante interrupciones. |
|||
TEMPORIZADOR 1. Ejemplo para el capturador 0, que está asociado al PIN PTD4. Cada vez que hay una transición en ese pin (paso de 0-1 o de 1-0) se incrementar el valor sacado por el puerto B |
|||
TEMPORIZADOR 1. Ejemplo de posicionamiento de servos del tipo FUTABA 3003. Se utiliza el temporizador 1 (TIM 1). El posicionamiento se hace por interrupciones. Se usa la interrupcion de overflow para determinar el periodo de la senal PWM (20ms) y el comparador 0 para calcular el ancho del pulso |
|||
TEMPORIZADOR 1. Posicionamiento de 8 servos del tipo FUTABA 3003. utilizando el TIM1. |
|||
SCI. Ejemplo de uso de las comunicaciones serie. Se hace eco de todo lo recibido |
|||
CONVERSOR A/D. Prueba del conversor analogico/digital .Se leen muestras del CANAL 0 (PB0) y se sacan por el puerto A |
|||
SENSORES CNY70. Ejemplo de manejo del sensor CNY70, en modo digital. Se lee el sensor IR1 (Conectado al pin PTC5) y se saca su estado por el puerto B |
|||
SENSORES CNY70. Ejemplo de manejo del sensor CNY70, en modo digital. Se lee el sensor IR3 (Conectado al pin PTA5) y se saca su estado por el puerto B |
|||
SENSORES CNY70. Ejemplo de manejo de los 4 sensores CNY70, en modo digital. Su estado se refleja en los bits PB0-PB4 del puerto B |
|||
MOTORES. Ejemplo de activación de los motores 1 y 2. El programa los pone en marcha y se queda en un bucle infinito |
|||
MOTORES. Ejemplo para los motores 1 y 2. Se hace que vayan hacia adelante, atrás, derecha, izquierda y finalmente se paran. |
|||
--------------- |
TODOS LOS EJEMPLOS ANTERIORES |
Ejemplos para el compilador SDCC, probados en una máquina Linux
Ejemplos en c |
Fichero |
Descripción |
Plantilla para la realización de otros programas. Contiene los ficheros con la definición de los registros del 6808, ficheros makefiles de ejemplo, etc. |
|
Plantilla modelo para hacer programas en C |
|
PUERTO A. Ejemplo de configuración del puerto A para salida. Se configuran todos los pines para salida y se envía un valor. Si se conectan leds se puede visualizar el dato. |
|
PUERTO A. Ejemplo de configuración de pines para entrada y salida. Los 4 bits de mayor peso del puerto A se configuran para salida y los 4 de menor peso para entrada |
|
PUERTO B. Ejemplo de configuración del puerto B para salida. Se configuran todos los pines para salida y se envía un valor. Si se conectan leds se puede visualizar el dato. |
|
PUERTO B. Ejemplo de configuración de pines para entrada y salida. Los 4 bits de mayor peso del puerto B se configuran para salida y los 4 de menor peso para entrada |
|
PUERTO D. Ejemplo de configuración del puerto D para salida. Se configuran todos los pines para salida y se envía un valor. Si se conectan leds se puede visualizar el dato. |
|
TEMPORIZADOR 1. Ejemplo de cómo realizar una pausa por espera activa (sin interrupciones), utilizando el temporizador 1. Se pueden hacer esperas desde 100ms hasta 25 segundos. |
|
TEMPORIZADOR 1. Se hace parpadear un led conectado al Bit 0 del puerto B, usando la interrupcion de overflow del TIM1 |
|
TEMPORIZADOR 1. Se hace parpadear un led conectado al Bit 0 del puerto B, usando la interrupcion del comparador 0 del TIM1 |
|
TEMPORIZADOR 1. Con el canal 0 se hace parpadear un led conectado al bit PB0 y con el 1 otro conectado al bit PB1, mediante interrupciones. |
|
TEMPORIZADOR 1. Ejemplo para el capturador 0, que está asociado al PIN PTD4. Cada vez que hay una transición en ese pin (paso de 0-1 o de 1-0) se incrementar el valor sacado por el puerto B |
|
TEMPORIZADOR 1. Ejemplo de posicionamiento de servos del tipo FUTABA 3003. Se utiliza el temporizador 1 (TIM 1). El posicionamiento se hace por interrupciones. Se usa la interrupcion de overflow para determinar el periodo de la senal PWM (20ms) y el comparador 0 para calcular el ancho del pulso |
|
TEMPORIZADOR 1. Posicionamiento de 8 servos del tipo FUTABA 3003. utilizando el TIM1. |
|
DELAY. Módulo para hacer pausas, mediante espera activa. |
|
DELAY. Prototipos y definiciones para el módulo delay.c |
|
SCI. Módulo para comunicaciones serie. Funciones para enviar, recibir y configurar el SCI |
|
SCI. Prototipos y definiciones para el módulo sci.c |
|
SCI. Ejemplo de uso de las comunicaciones serie. Se hace eco de todo lo recibido |
|
SCI. Se envía un menú por el SCI para que el usuario pueda interactuar |
|
CONVERSOR A/D. Prueba del conversor analogico/digital .Se leen muestras del CANAL 0 (PB0) y se sacan por el puerto A |
|
SENSORES CNY70. Ejemplo de manejo del sensor CNY70, en modo digital. Se lee el sensor IR1 (Conectado al pin PTC5) y se saca su estado por el puerto B |
|
SENSORES CNY70. Ejemplo de manejo del sensor CNY70, en modo digital. Se lee el sensor IR3 (Conectado al pin PTA5) y se saca su estado por el puerto B |
|
SENSORES CNY70. Ejemplo de manejo de los 4 sensores CNY70, en modo digital. Su estado se refleja en los bits PB0-PB4 del puerto B |
|
MOTORES. Ejemplo de activación de los motores 1 y 2. El programa los pone en marcha y se queda en un bucle infinito |
|
MOTORES. Ejemplo para los motores 1 y 2. Se hace que vayan hacia adelante, atrás, derecha, izquierda y finalmente se paran. |
|
ROBOT. Programa para hacer que el robot siga una línea negra |
|
TODOS LOS EJEMPLOS ANTERIORES |
Asignatura de Robótica, en la EPS de la Universidad Autónoma de Madrid.
Club de Robótica-Mecatrónica,de la EPS (UAM)
SDCC. Compilador cruzado de C para el 68hc08, Libre y multiplataforma.
Entorno de desarrollo M68ICS08, de la empresa P&E Microcomputer Systems. Sólo para Windows.
Entorno CodeWarrior, de la empresa MetroWerks. Entorno integrado para desarrollo de aplicaciones en C. Sólo plataformas Windows.
GPBOT-DOWN. Programación de la GPBOT desde entornos Linux.
27/Mayo/2004: Publicada página en la web
Guillermo González de Rivera. Diseñador del sistema de desarrollo GPBOT.
Iván González. Coautor del manual de programación de la GPBOT. Parte de los ejemplos de esta página están basados en sus programas.
Carlos Jesús Venegas. Coautor del manual de programación de la GPBOT. Parte de los ejemplos de esta página están basados en sus programas.