Programar el microcontrolador

Objetivo

  • Aprender a realizar la programación del microcontrolador

Introducción

En este tutorial se va a mostrar la programación utilizando el programador USBASP y el software Extreme Burner.

Antes de comenzar es necesario asegurarse que el programador se encuentra instalado correctamente, para esto es necesari orevisar el administrador de dispositivos de windows y comprobar que no hallan errores, el problema mas común es que no se instalan los controladores para esto es necesario descargarlos e instalarlos.(ver link), dependiendo al versión de windows el proceso puede ser diferente, si se presenta algun recomiendo revisar como instalar controladores sin firma en la versión de windows correspondiente.

Conexión de Hardware

La conexión del programador al microconttrolador es muy sencilla, simplemente se deben conectar los pines de alimentación, tierra, RESET, SCK, MISO y MOSI del programador al microcontrolador, en las imagenes a continuación se muestran los pines que se deben conectar.
usbasp.png

Programador USBASP

usbasp_pinout.png

Pin Out USBASP

atmega16a_usbasp.png

Descripción de pines ATMEGA16

Programación en Extreme Burner

Al abrir el programa encontraremos la ventana que aparece a continuación, lo primero que se debe hacer es verificar que el software tenga selccionado el microcontrolador adecuado:

extreme1.png

A continuación se abre el archivo .HEX que se desea programar en el microcontrolador (ver sección Atmel Studio), para este ejemplo se programará en el microcontrolador atmega16 un contador de 8 bits, la visualización se hará en el puerto A mediante unos leds con resistencias de 220 ohmios a tierra.

.org 0                         ;posicion del vector de interrupción RESET
rjmp reset

reset:
    ldi r16,high(RAMEND)
    out SPH,r16
    ldi r16,low(RAMEND)
    out SPL,r16                ; se carga la pila del microcontrolador
    ldi r16,0xFF               ; se carga el registro 16 con el valor binario 0b11111111 o  0xFF en hexadecimal
    out DDRA,r16               ; se habilita el puerto A como salida
    ldi r18,0x00               ; se carga el registro 18 con cero
loop:
    out PORTA,r18              ; se sacan los datos del registro 18 al puerto A
    inc r18                    ; se incrementa en 1 el valor de r18, r18=r18+1
    rcall retardo              ; llamado a la subrutina retardo
    rjmp loop                  ; reinicio de la secuencia

retardo:
    ldi r16,0xFF       ; r16=255
delay1:    
    ldi r17,0xFF           ; r17=255
delay2:    
    dec r17    ; decrementa r17 en 1
    brne delay2    ; si r17!=0 entonces salta a delay2
    dec r16    ; decrementa r16
    brne delay1    ; si r16!=0 entonces salta a delay1
    ret                        ; retorno de subrutina
extreme2.png

Después de seleccionar el código se procede a programar el microcontrolador, para esto se da click en el botón Write All".

extreme3.png

Si todo se realizó correctamente deberá aparecer el mensaje "ALL TASKS COMPLETED SUCCESFULY"

extreme4.png
Unless otherwise stated, the content of this page is licensed under Creative Commons Attribution-ShareAlike 3.0 License