Programación Microcontrolador

Anuncio
A PÉNDICE F
C ARGA
DE PROGRAMAS EN EL
MICROCONTROLADOR
El programa de control para el vehículo autobalanceado debe implementarse en
el microcontrolador incorporado en el mismo. Para ello es necesario escribir el programa y compilarlo. Una vez que se tiene el programa compilado, para programar el
microcontrolador o, lo que es lo mismo, cargar el programa en la memoria no volátil
incorporada en la placa del controlador, se utilizará el circuito programador apropiado
a nuestro microcontrolador.
En nuestro caso, al tratarse de un microcontrolador ATMega128 del fabricante Atmel, se ha recurrido a un dispositivo programador genérico para esta familia de microcontroladores, el AVRISP mkII In-System Programmer, del mismo fabricante. En la
Fig. 6.1 se muestra el programador utilizado.
Figura 6.1: Programador AVRISP mkII.
123
F. CARGA DE PROGRAMAS EN EL MICROCONTROLADOR
El programador AVRISP mkII está diseñado para la programación y actualización
de la memoria Flash de controladores de la familia AVR RISC de 8-bits a través de una
interfaz ISP, sin necesidad de extraer el microcontrolador del sistema en el que se encuentra embebido, lo cual permite la programación en el mismo sistema de trabajo. La
interfaz ISP (o SPI, Serial Peripheral Interface) proporciona un bus de comunicaciones
para la transferencia de información entre circuitos integrados en equipos electrónicos.
Existen dos formatos de conexión para la interfaz ISP, uno de 6-pines y otro de 10pines. El programador AVRISP mkII (con conexión USB) se suministra actualmente
con el conector de 6-pines, mientras que la placa microcontroladora mavric-iib con la
que contamos tiene un conector de 10-pines. Debido a esto será necesario preparar un
cable adaptador que modifique la distribución de señales a los pines. La distribución
de señales en cada caso se muestra en la Fig. 6.2.
Figura 6.2: Distribución de pines en las dos configuraciones de ISP.
Para solucionar este inconveniente se ha preparado un adaptador con dos bloques
correspondientes a cada uno de los dos tipos de conectores, de forma que se pueda
conectar por una parte el programador de 6-pines y por otra un nuevo cable adaptado
a 10-pines para la placa del microcontrolador. La adaptación se ha realizado mediante
cableado en una placa perforada y se ha sellado con cola térmica para evitar contactos.
El adaptador puede verse en la Fig. 6.3.
Figura 6.3: Adaptador ISP de 6-pines a 10-pines.
124
F. CARGA DE PROGRAMAS EN EL MICROCONTROLADOR
El la Fig. 6.4 se puede apreciar el conjunto de programador y adaptador necesarios
para programar la placa mavric-iib.
Figura 6.4: Conjunto programador y adaptador ISP 6 a 10-pines.
En el extremo a conectar en la placa microcontroladora, la conexión debe realizarse
de modo que el pin 1 del conector coincida con el del bloque en la placa, tal y como se
muestra en la Fig. 6.5.
Figura 6.5: Conexión del adaptador ISP a la placa microcontroladora.
El programador AVRISP mkII incluye un kit de desarrollo para sistemas que incorporan microcontroladores de la familia antes mencionada. El software incluido en
el mismo nos permite cargar el programa en memoria a través de dos herramientas
software. La primera de ellas es AVR Studio, el entorno de desarrollo de Atmel para
la plataforma Windows. Es una herramienta más compleja ya que está pensada para
la simulación, programación y depuración de código siempre y cuando el sistema lo
permita. La segunda permite utilizar el programador desde la línea de comandos en
entorno MS-DOS.
125
F. CARGA DE PROGRAMAS EN EL MICROCONTROLADOR
El PC desde el cual se va a cargar el programa a la memoria del microcontrolador
debe tener instalados los drivers del programador y el software asociado al mismo.
De igual modo debe tener un puerto USB libre ya que será la interfaz a través de la
cual el programador se conecte al PC.
Los pasos a seguir para la carga del programa en la memoria del microcontrolador
son:
1. Conectar el programador a un puerto USB del PC.
2. Conectar el programador (a través del adaptador) al puerto ISP de la placa del
microcontrolador (sin alimentación).
3. Alimentar la placa microcontroladora. Esto hará que el LED del programador
tome color verde.
4. Desde la consola de ”Símbolo de Sistema” en Windows, ir al directorio donde se
encuentra el programa STK500 que se ha instalado con el software de AVR. En
la instalación por defecto será:
C:\Archivos de programa\AtmelAVR Tools{\}STK500
5. Ejecutar el programa stk500 con los siguientes comandos:
stk500 -cUSB -dATMEGA128 -e -pf -ifc:\mica128\main.hex
6. Durante la programación el LED toma color naranja. Una vez finalizada la programación vuelve a color verde. Una vez terminado el proceso, cortar la alimentación del microcontrolador y retirar el conector del programador (adaptador).
Los parámetros utilizados al ejecutar el programa STK500 corresponden a:
- c: Configura el puerto de comunicación a utilizar. En nuestro caso USB.
- d: Nombre del dispositivo a programar. En nuestro caso ATMEGA128.
- e: Borra el dispositivo antes de realizar la programación.
- pf: Dispositivo a programar. En este caso la "fïndica que es del tipo flash.
- if: Nombre del archivo flash de entrada. El formato del archivo debe ser HEX
Intel Extendido. La ruta c:\mica128\main.hex indica donde se encuentra el
archivo a programar.
126
F. CARGA DE PROGRAMAS EN EL MICROCONTROLADOR
Para lograr mayor comodidad y rapidez a la hora de cargar los programas, se ha
dejado fija la ruta al archivo con el programa. De esta forma, una vez compilado, se copia el contenido de la carpeta build (de la aplicación compilada dentro del proyecto
de TinyOS), es decir, la carpeta mica128, a la carpeta C:\ y de esta forma podremos
acceder a la programación con la misma instrucción y parámetros.
Posibles problemas durante la programación:
El LED del programador toma color rojo: El programador no detecta la alimentación del circuito objetivo.
El software de programación avisa de que el dispositivo a programar no es alcanzable: Puede que uno de los conectores no esté conectado de manera correcta
o el circuito objetivo no esté alimentado.
Habrá que tener en cuenta que si no se copia el archivo a programar, es decir,
la carpeta mica128 actual, al directorio raíz, es posible que se esté cargando una
versión no actualizada del programa o un programa distinto.
Advertencia: Un corte en la alimentación mientras se está programando la memoria flash o la desconexión del programador durante el proceso pueden provocar un
mal funcionamiento de la placa microcontroladora al no contener un contenido correcto en la memoria flash o eeprom. En ese caso el microcontrolador puede incluso
llegar a quedar inutilizable salvo reprogramación con programadores de sobretensión
que suelen ser de coste elevado y poco comunes.
127
F. CARGA DE PROGRAMAS EN EL MICROCONTROLADOR
128
Descargar