Sei sulla pagina 1di 8

Sistemas Microprocesados GR1- GR6

PROGRAMACION DE LOS MICROCONTROLADORES

INTRODUCCIÓN.

Un microcontrolador es un dispositivo electrónico formado por: microprocesador, memorias e


interfaz para conectar dispositivos de entrada y salida. Mientras los microprocesadores (uP) se
utilizan en computadoras, celulares, cámaras, calculadoras programables etc. los
microcontroladores (uC) se usan en aplicaciones donde no se requiere grandes cantidades de
memoria así: en robots, en semáforos, termómetros digitales, relojes digitales, calculadoras
básicas, taxímetros y principalmente en actividades de automatización (domótica).

Una de las ventajas de los microcontroladores es su bajo costo (es el dispositivo de control más
barato), sin embargo debido a la baja corriente que puede manejar y sobre todo a la alta
sensibilidad al ruido eléctrico trae como consecuencia que no se utilicen uC a nivel industrial,
utilizándose dispositivos robustos como son los PLC’s (cuyo principal elemento es un uC).

MICROCONTROLADORES AVR

Son desarrollados por Atmel; existen 4 familias Tiny, Atmega, Xmega, AVR32, las primeras tres
familias son de 8 bits y difieren la una de la otra principalmente a la capacidad de memoria y
número de pines.

Figura 1 Familias de microcontroladores AVR

Fuente: www.atmel.com

Como se puede apreciar dentro del Atmel hay varios uC, se debe seleccionar el dispositivo
necesario según la aplicación, sin embargo en el curso se empleara el Atmega164P por ser uno
de los más completos.

MICROCONTROLADOR ATMEGA 164P

Es el microcontrolador que se empleará en el desarrollo de curso, presenta dos encapsulados:

Ing. Jhon Pilataxi EPN Página 1


Sistemas Microprocesados GR1- GR6

Figura 2 Encapsulado del uC Atmega 164P

Fuente: www.atmel.com

Al momento de simular un circuito se debe tomar en consideración que el modelo que tiene
Proteus corresponde al de la derecha (figura 2) razón por la cual difiere la distribución de pines
con respecto al uC que se adquiere, cuya distribución es la siguiente:

Figura 3 Pines del uC Atmega 164P

Fuente: www.atmel.com

Al emplear lenguaje Assembler se obtiene un gran ahorro de recursos del microcontrolador ya


que este lenguaje es el único en el que cada sentencia de programación se convierte en una
instrucción para el microcontrolador a través de la compilación; por su parte en los otros
lenguajes (C o Basic) una sentencia se convierte usualmente en varias líneas de instrucciones,
por lo cual para obtener un mismo resultado se requiere de mayores recursos de memoria
Flash.

Para programar al uC (pasar el archivo .hex a la memoria flash); se utiliza la interfaz SPI, a
través de un software (PROGISP u otro) y hardware (programador USBasp) o mediante el AVR

Ing. Jhon Pilataxi EPN Página 2


Sistemas Microprocesados GR1- GR6

Drago con el cual no se requiere software adicional y se programa al uC directamente desde


AVR Studio. El costo de AVR Drago es superior al de un programado convencional.

Figura 4 AVR Drago

Figura 5 Programadores USBasp interfaz SPI

Los drivers del programador (USBasp) deben ser descargados e instalados, para su
funcionamiento.

PROGRAMACION DEL uC.

Internamente el microcontrolador tiene fusibles que permiten modificar el hardware interno


del mismo, si el microcontrolador es nuevo se debe programar los fusibles lo cual se lo realiza
en el PROGISP (o cualquier otro software) en el cual se selecciona el estado de los fusibles
previa a la programación por del microcontrolador. Una vez que se ha programado los fusibles
no es necesario volver a programarlos siempre y cuando no se requiera modificar el estado de
alguno de estos.

Ing. Jhon Pilataxi EPN Página 3


Sistemas Microprocesados GR1- GR6

Figura 6 Interfaz Progisp

En la interfaz se debe seleccionarl uC a emplear.

Al dar click en el icono que se encuentra a lado derecho de auto, se desplegara la


siguiente interfaz en donde se selecciona el estado de los fusibles; cabe destacar que trabajan
con lógica inversa 0=activado y 1= desactivado:

Figura 7 Fusibles del uC Atmega164P

Ing. Jhon Pilataxi EPN Página 4


Sistemas Microprocesados GR1- GR6

Cabe destacar se emplean lógica inversa es decir 0, significa activado y 1 desactivado.

Fusibles del Atmega 164P


CKDIV8: Cuando se lo activa ocasiona que la frecuencia del reloj empleado para el
microcontrolador se divida para ocho. Con este fusible desactivado la frecuencia del reloj
empleado para el microcontrolador no sufre división alguna.

CKOUT: Colocando cero en este fusible se obtiene que la señal de reloj del microcontrolador
salga por el pin CLK0 correspondiente al PB0 en el Atmega164P. Esta señal de reloj puede ser
usada externamente para cualquier fin. Mientras que si este fusible está en uno el pin PB0
puede ser empleado de la manera habitual.

SUT 1 y SUT 0: Mediante estos dos fusibles se maneja tanto el Retardo de Reset (Start-up time
from power-down and power-save) como el Retardo de Arranque (Additional delay from reset)
los cuales varían de acuerdo al tipo de fuente de reloj que se haya seleccionado mediante los
fusibles CLKSEL3..0.

El Retardo de Reset es el tiempo que el microcontrolador permanece en estado de reset


después de un reset con el fin de que la alimentación de voltaje se estabilice antes de que el
CPU del microcontrolador empiece a trabajar. Por su parte el Retardo de Arranque es el
tiempo que el microcontrolador permanece en estado de reset después de que se ha activado
el cristal de reloj con el fin de que el cristal mencionado se estabilice.

Para el reloj interno de 8MHz que es el que se emplea en este proyecto se tiene las opciones
mostradas en la siguiente tabla para la configuración de los fusibles SUT 1 y SUT 0.

Power conditions Start-up time from Additional delay SUT1..0


power-down and from reset
power-save (Vcc=5,0V)
BOD enabled 6CK 14CK 00
Fast rising power 6CK 14CK + 4,1ms 01
Slowly rising power 6CK 14CK + 65ms 10
Reserved 11
Tabla1: Opciones para Retardo de Reset y de Arranque para cuando se emplea el reloj interno de 8MHz.

Fuente: Manual ATmega48/88/168

El CK mostrado en la tabla corresponde a ciclos del reloj del Watchdog Timer. Es preferible
configurar a SUT1 y SUT0 con 00 con el fin de que el Retardo de Arranque sea mínimo.

CLKSEL 3..0: Mediante estos cuatro fusibles se determina el tipo de reloj que empleará el
microcontrolador de acuerdo a la siguiente tabla.

Device clocking option CKSEL3..0


Low power crystal oscillator 1111 - 1000
Full swing crystal oscillator 0111 - 0110
Low frequency crystal oscillator 0101 - 0100
Internal 128kHz RC oscillator 0011
Calibrated internal RC oscillator 0010

Ing. Jhon Pilataxi EPN Página 5


Sistemas Microprocesados GR1- GR6

External clock 0000


Reserved 0001

Tabla2: Opciones de dispositivo de reloj


Fuente: Manual ATmega48/88/168

Calibrated internal RC oscillator es la opción por defecto mediante la cual se emplea el reloj
interno de 8MHz. Por su parte mediante las otras opciones se puede escoger otros tipos de
reloj tanto internos como externos con diferentes finalidades como por ejemplo de una baja
frecuencia, de una mayor frecuencia, de baja potencia, etc.

JTAGGEN: este fusible permite activar la interfaz JTAG, habilita las líneas del pórtico de acceso
a pruebas (tap) constituido por 4 líneas del pórtico c (pc2 … pc5), este interface también
permite programar las memorias de fábrica viene habilitado (0), este se debe deshabilitar
(colocar en 1).

SPIEN: Este fusible de fábrica viene con cero debido a que de esta forma se habilita la
programación por SPI que es la que utilizan los programadores habituales. Por su parte si
colocamos uno a este fusible, la programación por SPI quedará deshabilitada.

WDTON: Este fusible habilita (con uno) o deshabilita (con cero) al Watchdog Timer el cual es
un temporizador que va contando a medida que el programa del microcontrolador se ejecuta,
esta cuenta se la tiene que resetear periódicamente por programa ya que si el Watchdog
Timer alcanza un valor previamente seteado reseteará el microcontrolador.

El Watchdog Timer también puede ser activado por código de programa pese a que no esté
activado por fusible, pero sin embargo si el fusible WDTON está activado no habrá manera de
desactivar el Watchdog Timer por programa.

El Watchdog Timer es de utilidad para cuando el programa se queda encerrado en un lazo


infinito y queremos un reset ante dicha condición.

EESAVE: Con este fusible en cero se evita que la EEPROM interna del microcontrolador sea
borrada cuando cargamos un programa al mismo, por el contrario la EEPROM será borrada
ante cada carga de programa al microcontrolador si este fusible está en uno.

BODLEVEL 2..0: Con estos fusibles se decide si se empleará o no el Brown-out Reset, el cual es
un reset por caída de tensión en la alimentación. Además con estos fusibles se establece los
niveles de voltaje de reacción de este tipo de reset de acuerdo a como se muestra en la
siguiente tabla.

BODLEVEL 2:0 Fuses Min. 𝑉𝐵𝑂𝑇 Typ. 𝑉𝐵𝑂𝑇 Max. 𝑉𝐵𝑂𝑇 Units
111
110 1,7 1,8 2,0
101 2,5 2,7 2,9 V
100 4,1 4,3 4,5
011
010 Reserved
001

Ing. Jhon Pilataxi EPN Página 6


Sistemas Microprocesados GR1- GR6

000

Tabla 3: Opciones para los fusibles BODLEVEL


Fuente: Manual ATmega48/88/168

Es aconsejable disponer de un Brown-out Reset para un funcionamiento más seguro por lo que
en el microcontrolador empleado se ha configurado estos fusibles de tal manera de obtener
un nivel de 2,7 V (histéresis 2,5V – 2,9V) para el Brown-out Reset.

LB2 y LB1: Estos fusibles también conocidos como los bits de candado sirven para establecer
niveles de protección sobre la memoria Flash, la EEPROM, los fusibles y los propios bits de
candado tal como se muestra en la siguiente tabla.

Memory lock bits Protection type


LB mode LB2 LB1
1 1 1 No memory lock features enabled.
Further programming of the flash and EEPROM is disabled in parallel
2 1 0 and serial programming mode. The fuse bits are locked in both serial
and parallel programming mode.
Further programming and verification of the flash and EEPROM is
3 0 0 disabled in parallel and serial programming mode. The boot lock bits
and fuse bits are locked in both serial and parallel programming mode.

Tabla 4: Opciones para los fusibles BODLEVEL


Fuente: Manual ATmega48/88/168

En la interfaz de PROGISP, se debe seleccionar las opciones Program Flash y Chip Eraser y
recomendablemente Verify Flash. La opción Black Check y Lock Check tienen que estar
deshabilitadas caso contrario los uC se bloquearan.

Si se va a programar los fusibles (uC nuevo) se selecciona Program Fuse.

Figura 8: Si no se va a modificar el hardware interno, no se programan fusibles.

Ing. Jhon Pilataxi EPN Página 7


Sistemas Microprocesados GR1- GR6

Figura 9: Si no se va a modificar el hardware interno, no se programan fusibles.

Para cargar el archivo punto .hex (lenguaje de maquina), se da click sobre la opción Load Flash
y en la interfaz que se presenta se selecciona el archivo deseado y finalmente se presiona
Auto.

BIBLIOGRAFIA:

- Manual microcontrolador Atmega 164P


- www.atmel.com
- PILATAXI J, VIÑAN W, CHAVEZ D; “Diseño e Implementación de un sistema de
asistencia a la conducción de un robot tipo CAR-LIKE cuando se detecta fatiga del
Usuario”; EPN Abril 2014; Capitulo 3.

Ing. Jhon Pilataxi EPN Página 8

Potrebbero piacerti anche