Anda di halaman 1dari 30

Tcnicas Digitales 2

ATmega2560: Caractersticas, Programacin y


Simulacin
Autor: Mg. Ing. GUILLERMO A. FERNNDEZ
Ingeniera Electrnica Facultad de Ingeniera U.Na.M.
Ober Misiones Argentina Ao 2017
Caractersticas: Recursos del ATmega2560
ATmega2560 (TQFP de 100 pines): Es un microcontrolador de
8 bits construido con tecnologa CMOS de baja potencia, basado en la Diagrama
arquitectura AVR RISC mejorada. Es fabricado por la firma ATMEL de Bloques
(actualmente de MICROCHIP).

CPU de Alto Rendimiento:


- Arquitectura Harvard RISC.
- Ejecucin de hasta 16 MIPS (clock: 16 MHz).
- 135 instrucciones, la mayora ejecutable en un ciclo de reloj.
- 32 (de 8 bits) registros de trabajo de propsito general.
Memoria:
- 256 KBytes de FLASH (auto-programable en-circuito).
- 8 KBytes de SRAM (datos voltiles).
- 4 KBytes de EEPROM (datos NO voltiles).
- Ciclos de escritura/borrado: 10000 FLASH; 100000 EEPROM.
- Bloqueo de programacin para seguridad del software.
Perifricos:
- 11 Puertos de E/S (todos c/8 lneas E/S): Puertos A, B, C, D, E, F, G, H, J, K y L.
- 6 Temporizadores: 2 de 8 bits (TC0 y TC2); 4 de 16 bits (TC1, TC3, TC4 y TC5).
- 4 Canales PWM (2 por TC0 y TC2) y 12 Canales PWM (3 por TC1, TC3, TC4 y TC5).
- 1 ADC de 10 bits con 16 canales de entrada.
- 2 Mdulos de comunic. SPI (master/slave).
- 2 Mdulos de comunic. de dos cables, compatible con I2C.
- 4 Mdulos de comunic. USART.
- 1 Comparador Analgico con 2 entradas fijas y multiplexor 16 canales de entrada.
Caractersticas Especiales:
- Power-on Reset y Brown-out Reset programable.
- Modos de bajo consumo.
- Fuentes de interrupcin internas y externas.
- Oscilador interno calibrado.
U.Na.M. Facultad de Ingeniera Tcnicas Digitales 2 Mg. Ing. Guillermo A. Fernndez 2
Caractersticas: Pinout del Arduino MEGA
Arduino(TQFP
ATmega2560 MEGA de 100 pines): Es un microcontrolador de
8 bits construido con tecnologa CMOS de baja potencia, basado en la
(ATmega2560)
arquitectura AVR RISC mejorada. Es fabricado por la firma ATMEL
(actualmente de MICROCHIP).

U.Na.M. Facultad de Ingeniera Tcnicas Digitales 2 Mg. Ing. Guillermo A. Fernndez 3


Caractersticas: CPU del ATmega2560
Diagrama (TQFP de 100 pines): Es un microcontrolador de
ATmega2560
8de
bitsBloques
construido con tecnologa CMOS de baja potencia, basado en la
arquitectura AVR RISC mejorada. Es fabricado por la firma ATMEL AVR CPU
(actualmente de MICROCHIP).
32 x 8-bit General Purpose Working Program Counter
(PC)
R31 (Z high) R30 (Z low)
Registros (16-bits)
Punteros para R29 (Y high) R28 (Y low)
Direcc. Indirecto R27 (X high) R26 (X low)
R25 R24
R23 R22
R21 R20
R19 R18
R17 R16 FLASH memory
R15 R14 (program)
R13 R12
R11 R10
R9 R8
R7 R6
R5 R4
Instruction
R3 R2 Register
R1 R0
7 0 7 0

Instruction
Decode

DATA memory
Stack Pointer
(SPH:SPL)

Status Register
(SREG) ALU

U.Na.M. Facultad de Ingeniera Tcnicas Digitales 2 Mg. Ing. Guillermo A. Fernndez 4


Caractersticas: Memoria de Programa
Memoria flash: Almacena las instrucciones (palabras de 16 32 bits).
Mapa de Memoria de Registro Contador de Programa (PC): Almacena la direccin de la prxima instruccin que debe ejecutarse. La cantidad
Programa (FLASH) de bits que posee este registro depende del tamao de la memoria de programa. El ATmega2560 posee un PC de 17 bits
(palabra de 3 Bytes) para acceder a 217 = 131072 palabras de 16 bits.
15 0
Vectores: Alojan instrucciones relacionadas con la ocurrencia de un evento (reset e interrupciones). Cada vector posee una
0x0000 Vector de RESET
direccin particular (vector) en la memoria de programa. De esta forma, cuando se produce el evento, el registro PC se carga
con la direccin asociada al mismo. La siguiente tabla muestra la direccin de los vectores y los eventos asociados:

Seccin para
Software del
256 KB

Usuario

Seccin para
Bootloader
FLASHEND
FLASHEND = 0x1FFFF (ATmega2560)

Seccin Bootloader: Esta porcin de memoria flash permite


almacena el programa bootloader (no incluido de fbrica), el cual
se ejecuta por unos instantes al resetearse el microcontrolador.
Gracias a la capacidad de autoprogramacin que posee la memoria
flash de estos dispositivos, el bootloader puede escribir y leer Nota: La lista anterior determina los niveles de prioridad
cdigo en la memoria de programa, sin la necesidad de de las diferentes interrupciones ante el suceso simultneo
herramientas externas complejas (slo se requiere un conversor de de las mismas. Cuanto menor sea la direccin, mayor ser
USB a TTL, la placa Arduino MEGA ya lo tiene incorporado) el nivel de prioridad. RESET tiene la prioridad ms alta

U.Na.M. Facultad de Ingeniera Tcnicas Digitales 2 Mg. Ing. Guillermo A. Fernndez 5


Caractersticas: Memoria de Datos
Mapa de Memoria de Registros de Trabajo
Datos (SRAM) Estos registros permiten almacenar temporalmente datos utilizados por la ALU al ejecutar instrucciones
aritmtico-lgicas y de transferencia de datos. Esta informacin puede ser datos (de 8 bits) o bien direcciones de
datos a la cual apuntan los registros X (R27:R26), Y (R29:R28) y Z(R31:R30).
7 0 Registros de E/S Estndar
0x0000 Son Registros de Propsito Especial (SFRs), ya que se utilizan para almacenar informacin de configuracin y
32 Registros de Trabajo
0x001F (R0...R31) control del microcontrolador y sus perifricos, por ejemplo: Registros Puntero de Pila (SP); Contador de Programa
0x0020 (PC); Manejo de la memoria EEPROM; Configuracin y acceso a los puertos; entre otros. Ver pgina 399 de la hoja
64 Registros de E/S
de datos del microcontrolador.
Estndar
0x005F Registros de E/S Extendido:
0x0060 Son Registros de Propsito Especial (SFRs), para almacenar informacin de configuracin otros perifricos (ADC,
416 Registros de E/S USART, etc.). Ver pgina 399 de la hoja de datos del microcontrolador.
Extendido SRAM Interna:
0x01FF Es el espacio de memoria de memoria de datos donde el usuario puede utilizar para almacenar datos que sern
0x0200 utilizados por el programa alojado en la memoria flash.
SRAM Interna SRAM Externa
(8K 8) Forma parte de la Interfaz de Memoria Externa del dispositivo. Esta interfaz permite incorporar al mapa de
memoria de datos del microcontrolador, dispositivos externos tales como: memorias SRAM, FLASH y perifricos
RAMEND como displays LCD, ADCs y DACs.
0x2200
Memoria EEPROM
Esta memoria se utiliza para el almacenamiento de datos en forma permanente (memoria no voltil). El
SRAM Externa ATmega2560 posee 4 KBytes de memoria EEPROM de datos, la cual se encuentra organizada como un espacio de
(64K 8) datos independiente de la SRAM. El acceso a la EEPROM se efecta a travs de los siguientes registros ubicados
en el espacio de registros de E/S estndar:
- EEARH:EEARL Debe almacenar la direccin de la EEPROM a la que se quiere acceder (para leer o escribir).
- EEDR Debe almacenar el dato a escribir o bien almacena el dato ledo.
0xFFFF - EECR Es el reg. de control de la EEPROM, posee los bits y flags para controlar la escritura/lectura.
RAMHEND = 0x21FF (ATmega2560) Esta memoria tiene una duracin de al menos 100.000 ciclos de escritura/borrado.

U.Na.M. Facultad de Ingeniera Tcnicas Digitales 2 Mg. Ing. Guillermo A. Fernndez 6


Caractersticas: Seales y Opciones de Clock
SEALES DE RELOJ
Seal Clock CPU (clkCPU)
La seal de reloj de la CPU se rutea a partes relacionadas con el funcionamiento de
la CPU del dispositivo, como ser: Registros de Memoria SRAM, Registro de Estado
(SREG) y la memoria de datos que contiene el Puntero de Pila (SP). Detener el reloj
de la CPU, impide que el ncleo realice operaciones generales y clculos.
Seal Clock I/O (clkI/O)
Esta seal de reloj es utilizada por la mayora de los mdulos de E/S, como ser
TIMERS, SPI y USART. El mdulo de Interrupcin Externa tambin utiliza esta
seal de reloj, pero debe considerarse que algunas alarmas externas son detectadas
por lgica asncrona, permitiendo que tales interrupciones sean detectadas incluso si
la seal de reloj de E/S se detiene.
Seal Clock FLASH (clkFLASH)
Esta seal de reloj controla la operacin de la memoria flash y est activa
simultnemente con la seal clkCPU.
Seal Clock ASY (clkASY)
Esta seal permite que los TIMERs sean sincronizados directamente desde un reloj
externo que puede ser de 32 kHz. Esto posibilita que los TIMERs se utilicen como
reloj de tiempo real, incluso cuando el dispositivo est en modo de reposo.
Seal Clock ADC (clkADC)
El ADC est provisto de un reloj dedicado, lo cual permite realizar la operacin de
conversin AD, reduciendo el ruido generado por los circuitos digitales al detener las
seales de reloj del CPU y de E/S. Esto proporciona resultados de conversin ADC
Distribucin y Opciones
ms precisos.
de las Seales de Clock

U.Na.M. Facultad de Ingeniera Tcnicas Digitales 2 Mg. Ing. Guillermo A. Fernndez 7


Caractersticas: Seales y Opciones de Clock
OPCIONES DE RELOJ

1) Oscilador a cristal de baja potencia:


Los pines XTAL1 (entrada) y XTAL2 (salida) permiten la conexin de un resonador cermico o un cristal
de cuarzo a un amplificador inversor interno al dispositivo, el cual puede utilizarse como oscilador para
generar la seal de reloj del sistema clkSYS. El valor de C1 y C2 depende de la frecuencia del resonador o
cristal utilizado, de la capacitancia parsita de la conexin y el ruido electromagntico del entorno. Para
resonadores cermicos con Fosc de 0,4 MHz a 0,9 MHz, C1 = C2 deben ser los recomendados por el
fabricante. Para cristales con Fosc de 0,9 MHz a 16 MHz, C1 = C2 deben ser de 12 pF a 22 pF.

2) Oscilador a cristal en rango completo:


En esta configuracin tambin se utilizan los pines XTAL1 y XTAL2 para conectar un cristal que forma parte del oscilador interno del
microcontrolador y que genera la seal de reloj del sistema clkSYS. En este caso, la configuracin permite operar al microcontrolador en
entornos ruidosos y la salida XTAL2 tambin puede manejar otras entradas de reloj. El consumo de corriente es mayor que en el caso
anterior. Esta configuracin de reloj puede utilizarse slo cuando la tensin de alimentacin del dispositivo es de 2,7 V a 5,5 V. El valor de
C1 y C2 depende de la frecuencia del cristal utilizado, la capacitancia parsita de la conexin y el ruido electromagntico del entorno. Para
cristales con Fosc de 0,4 MHz a 16 MHz, C1 = C2 deben ser de 12 pF a 22 pF.

U.Na.M. Facultad de Ingeniera Tcnicas Digitales 2 Mg. Ing. Guillermo A. Fernndez 8


Caractersticas: Seales y Opciones de Clock
3) Oscilador a cristal de baja frecuencia:

XTAL1/TOSC1 El dispositivo puede utilizar un cristal de 32.768kHz como parte del oscilador baja frecuencia que posee
el dispositivo. Este cristal puede conectarse a los pines XTAL, cuando se desea que el mismo forme
parte del oscilador que proporciona la seal de reloj del sistema clkSYS, o bien a los pines TOSC cuando
se desea que el mismo forme parte del oscilador para el mdulo TIMER 2 que posee. El valor de los
capacitores externos Ce puede obtenerse a travs de:

XTAL2/TOSC2
Ci: Capacitancia de entrada del pin
Ce + Ci = 2 .CL CS Ci (XTAL1/TOSC1) Ci (XTAL2/TOSC2)

CS: Capacitancia parsita P/ Osc. del Sistema 18 pF 8 pF


CL: Capacitancia del cristal P/ Osc. del TIMER 2 6 pF 6 pF

4) Oscilador RC interno calibrado:


El microcontrolador posee un oscilador RC interno que puede utilizarse para generar la seal de reloj del sistema clkSYS, sin necesidad de
componentes externos. Este oscilador proporciona una seal con frecuencia entre 7,3 MHz y 8,1 MHz, la cual es calibrada a 8 MHz (en
condiciones: VCC = 3 V; tamb = 25C; precisin = 10%) durante el reset del dispositivo, cuando el hardware interno carga el valor de
calibracin preprogramado de fbrica en el registro OSCCAL (posicin 0x66). El valor preprogramado de fbrica reside en la posicin 0x000
correspondiente a los Signature Bytes. Durante la operacin del microcontrolador, el valor del registro OSCCAL puede ser modificado por
el programa del usuario para ajustar la frecuencia de oscilacin segn el rango indicado anteriormente.

U.Na.M. Facultad de Ingeniera Tcnicas Digitales 2 Mg. Ing. Guillermo A. Fernndez 9


Caractersticas: Seales y Opciones de Clock
5) Oscilador RC interno de 128 kHz:
Este oscilador RC interno de baja potencia que proporciona un reloj de sistema de 128kHz. La frecuencia es nominal a VCC = 3V y 25 C.

6) Seal de reloj externa:


El dispositivo tambin permite la inyeccin de una seal de reloj externa a travs del pin XTAL1, la
cual puede ser de una frecuencia no mayor a 16 MHz. Cuando se utiliza esta configuracin de reloj,
debe evitarse cambios bruscos en la frecuencia de la seal aplicada para asegurar un funcionamiento
estable de la MCU. Una variacin en la frecuencia de ms del 2% puede conducir a un
comportamiento impredecible. Si se requieren cambios de ms del 2%, asegurarse de que el
dispositivo se mantenga en estado de Reset durante los cambios.

Prescaler del reloj del sistema:

Como lo muestra la figura, el ATmega2560 posee un prescaler para el reloj del sistema. El mismo
puede configurarse a travs del registro CLKPR (0x61). Este recurso puede utilizarse para disminuir
la frecuencia del reloj del sistema y as bajar el consumo de energa del dispositivo (cuando esto sea
un requisito de diseo). El prescaler afecta a todas las opciones de fuente de reloj utilizadas en el
microcontrolador.

U.Na.M. Facultad de Ingeniera Tcnicas Digitales 2 Mg. Ing. Guillermo A. Fernndez 10


Caractersticas: Fuentes de Reset
Qu sucede cuando se resetea el ATmega2560?
Cuando se produce el reinicio del dispositivo, todos los registros de E/S
se cargan con sus valores iniciales predeterminados y el programa
inicia la ejecucin desde el Vector de Reset (0x0000). Si el programa
embebido en el microcontrolador utiliza interrupciones, el Vector de
Reset debe alojar una instruccin de salto (por ejemplo JMP, salto
absoluto) a la rutina principal para poder saltear los vectores de
interrupciones de las fuentes de interrupcin utilizadas en el programa.
Luego de que todas las fuentes de reset se hayan desactivado, se invoca
un contador de retardo que provoca una prolongacin del estado de
reset interno para permitir que sucedan algunos eventos, por ejemplo,
que la tensin de alimentacin del dispositivo alcance un nivel estable
antes de que comience la operacin normal del mismo. Este tiempo de
prolongacin del reset interno es definido por el usuario a travs de los
fusibles SUT y CKSEL. Por otra parte, existen diferentes fuentes que
ocasionan el reset del dispositivo, esta pueden ser de origen interno o
externo al mismo como se muestra a continuacin. El diagrama del
circuito indicado en la siguiente figura muestra la lgica de reset.

INTERNAS Watchdog Reset.


Fuentes de
Reset
Power-On Reset (POR).
(ATmega2560)
EXTERNAS External Reset (RESET).
Brown-out Reset (BOR). Circuito lgico de Reset

U.Na.M. Facultad de Ingeniera Tcnicas Digitales 2 Mg. Ing. Guillermo A. Fernndez 11


Caractersticas: Fuentes de Reset
Power-On Reset El microcontrolador posee un circuito interno que monitorea su tensin de
alimentacin VCC. Este circuito denominado de POR, puede utilizarse para activar
el reset de arranque, as como para detectar un fallo en la tensin de alimentacin.
Al energizar el microcontrolador, el circuito POR detecta cuando VCC alcanza el
voltaje umbral VPOT (rising) e inicia el estado de reset interno hasta que se cumple
el tiempo de espera tTOUT, cuyo valor depende de la configuracin de los fusibles
SUTx. Este proceso tambin se genera (sin la presencia del retardo tTOUT) cuando la
tensin VCC disminuye por debajo del valor del voltaje umbral VPOT (falling). Ambos
valores de la tensin umbral figuran en la siguiente tabla.

Caractersticas mejoradas de Power-On Reset (TAMB= - 40 to +85C)

Arranque con pin RESET conectado a VCC.

Circuito RC p/extender
el reset en el arranque.

Arranque con reset extendido externamente.

U.Na.M. Facultad de Ingeniera Tcnicas Digitales 2 Mg. Ing. Guillermo A. Fernndez 12


Caractersticas: Fuentes de Reset
External Reset Brown-Out Reset

Este reset se genera por un nivel bajo en el pin RESET. Este pin puede El dispositivo posee un circuito para deteccin de apagado (BOD) que supervisa el
recibir un pulso que cumpla con las caractersticas indicadas en la siguiente nivel de tensin en AVCC (no pin VCC) durante el funcionamiento, comparndolo con
tabla. Cuando la seal aplicada al pin alcanza el voltaje de reposicin del un nivel de disparo fijo VBOT, Este nivel puede ser seleccionado con los fusibles
umbral VRST (en su flanco ascendente), se produce un estado de reset BODLEVEL. Cuando el BOD est habilitado y la tensin en AVCC disminuye a un
durante un tiempo de espera tTOUT que depende de la configuracin de los valor por debajo del nivel de disparo VBOT-, el Reset de Brown-Out se activa
fusibles SUTx. El reset externo se genera, incluso si el reloj del sistema no inmediatamente. Cuando la tensin en AVCC aumenta por encima del nivel de
est funcionando. disparo VBOT+, se produce un estado de reset durante un tiempo de espera tTOUT que
Caractersticas del External Reset depende de la configuracin de los fusibles SUTx. El circuito BOD slo detecta una
cada en AVCC si la tensin permanece por debajo del nivel de disparo VBOT- durante
un tiempo mayor que tBOD. El nivel de activacin del circuito BOD posee una
histresis para asegurar la deteccin libre de picos. La histresis mencionada, est
dada por:
Caractersticas del Brown-Out Reset V V
VBOT VBOT HYST VBOT VBOT HYST
2 2
donde VBOT depende de los fusibles BODLEVEL.

U.Na.M. Facultad de Ingeniera Tcnicas Digitales 2 Mg. Ing. Guillermo A. Fernndez 13


Caractersticas: Fuentes de Reset
Este timer cuenta los pulsos que son generados por un oscilador interno de 128kHz. Si el WDT est
Watchdog Reset habilitado, puede producir un reset o una interrupcin o bien ambos, cada vez que su temporizacin expira
(desborda su contador). De esta forma, en funcionamiento normal del WDT, se requiere que el programa
ejecutado por el microcontrolador utilice la instruccin WDR (Watchdog Timer Reset) para borrar al
Watchdog contador del WDT antes que expire la temporizacin. Si esto no sucede, se producir un reset, una
Timer interrupcin del sistema o bien ambos. Segn esto, el WDT puede operar de tres formas:
- Modo interrupcin: El WDT proporciona una interrupcin cuando expira su temporizado. Esta
interrupcin puede utilizarse para despertar al dispositivo de algunos de los modos SLEEP, y tambin
como un temporizador general del sistema.
- Modo reset del sistema: El WDT proporciona un reset del sistema cuando expira su temporizado.
Normalmente se utiliza para evitar que el sistema que se cuelgue en caso de que se ejecute cdigo no
vlido.
- Modo interrupcin-reset: Combina los modos anteriores, generando primero una interrupcin y
luego el reset del sistema. Este modo permite, por ejemplo, un apagado seguro al guardar (en memoria
no voltil) datos crticos antes de reiniciar el sistema.
Cuando el temporizado del WDT expira, genera un pulso de reinicio corto con duracin de 1 ciclo de reloj,
como se aprecia en la figura. En el flanco descendente de este pulso, produce un estado de reset durante
un tiempo de espera tTOUT que depende de la configuracin de los fusibles SUTx.
WDTCSR Registro de Control del WDT
WDP3:WDP0 Config. Prescaler
WDCE Habilitacin de cambio
WDIF Flag de interrup. por WDT
Configuracin del WDT
WDTON Fusible

U.Na.M. Facultad de Ingeniera Tcnicas Digitales 2 Mg. Ing. Guillermo A. Fernndez 14


Caractersticas: Fusibles de Configuracin
Los fusibles de configuracin permiten modificar ciertas caractersticas de operacin del dispositivo. Estos se queman cuando se graba la memoria flash del
dispositivo. Los mismos estn agrupados en tres palabras de un byte cada una, como se muestra a continuacin:
Byte extendido de fusibles Configuracin de la tensin VBOT para el Brown-Out Reset

Byte alto de fusibles


Habilita Debugging On-Chip

Habilita Debugging a travs de interface JTAG

Habilita el Watchdog Timer

Configuracin del espacio para el Bootloader

U.Na.M. Facultad de Ingeniera Tcnicas Digitales 2 Mg. Ing. Guillermo A. Fernndez 15


Caractersticas: Fusibles de Configuracin
Byte bajo de fusibles

Configura prescaler del reloj del sistema para DIV8.


Habilita salida del reloj del sistema a travs del pin CLKO (puerto PE7).
Los fusibles SUTx y CKSELx, permiten configurar el tiempo de espera tTOUT y
el tiempo de inicio (start-up time), los cuales se suman para establecer el
estado de reset interno, luego de que el dispositivo es reseteado. Para que el
microcontrolador pueda comenzar a operar correctamente, estos tiempos
permiten la estabilizacin de la tensin de alimentacin VCC y de la seal de
de reloj del sistema, respectivamente.

Opciones de fuente de reloj

Observando las tablas anteriores, puede notarse que el ATmega2560 posee preprogramado de fbrica los fusibles CKSELx = 0010, SUTx = 10, CKDIV8 = "0, lo
cual indica que la fuente de reloj del sistema por defecto es el oscilador RC interno en 8 MHz dividida por 8, dando por resultado un reloj del sistema de 1 MHz.
Mientras que el tiempo de inicio (stat-up time) se establece al mximo y el tiempo de espera (tTOUT) activado. Esta configuracin predeterminada garantiza que
todos los usuarios puedan realizar la configuracin de la fuente de reloj deseada utilizando cualquier interfaz de programacin disponible.

U.Na.M. Facultad de Ingeniera Tcnicas Digitales 2 Mg. Ing. Guillermo A. Fernndez 16


Programacin en Assembler
Encabezado: Posee informacin referente al autor, fecha de
desarrollo, versin del programa, tarea que realiza el mismo, etc.
Inclusin: La directiva include le dice al ensamblador que lea y
ensamble un archivo especificado. En este caso m2560def.inc
contiene la especificacin del microcontrolador utilizado (a travs de la
directiva device), las definiciones de sus registros de E/S (y sus
respectivos bits), de los fusibles de configuracin, las delimitaciones de
las memorias de datos y de programa, etc.
Comentarios: Describen las tareas realizadas para documentar la
operacin del programa. Se escriben seguido de ; o bien de // .
Definiciones: En esta parte se definen, constantes y registros.
Tambin se puede definir bits. La directiva equ asigna un valor
constante (que no puede cambiarse o redefinir posteriormente) a una
etiqueta, la cual puede utilizarse en expresiones posteriores. En este
caso, la directiva mencionada se usa para dar un nombre a las
posiciones (direcciones) de memoria SRAM. La directiva def permite
referenciar los registros a travs de smbolos, los cuales pueden
utilizarse en el resto del programa para referirse al registro al que
est asignado. En este caso se usa para asignar un nombre a los
registros de trabajo que se utilizan en el programa.
Origen: La directiva org establece el contador de programa (PC) con
un valor absoluto. En este caso recibe la direccin 0x0000 de la
memoria de programa, donde se encuentra el vector de reset. De esta
forma, cada vez que se produce el reset del microcontrolador, se
ejecutar la instruccin alojada en dicho vector (en este caso LDI
temp1, val_1). Esta directiva tambin determina la direccin a partir
de la cual se almacenar el programa en la memoria correspondiente.
Rutina Principal: Contiene el conjunto de instrucciones que se
ejecuta de forma cclica, para efectuar la tarea deseada por el usuario.
U.Na.M. Facultad de Ingeniera Tcnicas Digitales 2 Mg. Ing. Guillermo A. Fernndez 17
Atmel Studio 7: Generar un Proyecto
Atmel Studio 7 es un Entorno de Desarrollo Integrado (IDE) que permite escribir y depurar (debugging) aplicaciones destinadas a dispositivos AVR/ARM bajo
Windows (XP/Vista/XP/7/8). Este IDE proporciona recursos para la administracin de proyectos, edicin de archivos de cdigo fuente (en assembler, C y C++),
simulador, ensamblador, compilador para C / C ++, programacin y depuracin en el chip.

Paso 1
Para generar un proyecto en Atmel Studio 7:
Paso 0: Crear una carpeta que alojar el
proyecto Paso 2a
Paso 1: File New Project
Paso 2: En Installed seleccionar:
o a) Assembler si se desea realizar un
proyecto en assembler.
o b) C/C++ seleccionar Create Project Paso 2b
from Arduino sketch si se desea realizar
un proyecto en sketch de Arduino.
Paso 3: Completar:
o Name: Nombre del proyecto.
o Location: Carpeta donde se alojarn los
archivos generados en el proyecto.
Paso 4: Presionar OK.
Paso 5: Seleccionar el micro del Arduino:
o Device Family ATmega
o Para Arduino Mega ATmega2560
o Para Arduino Uno ATmega328p
Paso 6: Presionar OK.
Paso 7: Escribir el programa.

U.Na.M. Facultad de Ingeniera Tcnicas Digitales 2 Mg. Ing. Guillermo A. Fernndez 18


Atmel Studio 7: Generar un Proyecto
Atmel Studio 7 es un Entorno de Desarrollo Integrado (IDE) que permite escribir y depurar (debugging) aplicaciones destinadas a dispositivos AVR/ARM bajo
Windows (XP/Vista/XP/7/8). Este IDE proporciona recursos para la administracin de proyectos, edicin de archivos de cdigo fuente (en assembler, C y C++),
simulador, ensamblador, compilador para C / C ++, programacin y depuracin en el chip.

Para generar un proyecto en Atmel Studio 7:


Paso 3 y 4
Paso 0: Crear una carpeta que alojar el
proyecto
Paso 1: File New Project
Paso 2: En Installed seleccionar:
o a) Assembler si se desea realizar un
proyecto en assembler.
o b) C/C++ seleccionar Create Project
from Arduino sketch si se desea realizar
un proyecto en sketch de Arduino.
Paso 3: Completar:
o Name: Nombre del proyecto.
o Location: Carpeta donde se alojarn los
archivos generados en el proyecto.
Paso 4: Presionar OK.
Paso 5: Seleccionar el micro del Arduino:
o Device Family ATmega
o Para Arduino Mega ATmega2560
o Para Arduino Uno ATmega328p
Paso 6: Presionar OK.
Paso 7: Escribir el programa.

U.Na.M. Facultad de Ingeniera Tcnicas Digitales 2 Mg. Ing. Guillermo A. Fernndez 19


Atmel Studio 7: Generar un Proyecto
Atmel Studio 7 es un Entorno de Desarrollo Integrado (IDE) que permite escribir y depurar (debugging) aplicaciones destinadas a dispositivos AVR/ARM bajo
Windows (XP/Vista/XP/7/8). Este IDE proporciona recursos para la administracin de proyectos, edicin de archivos de cdigo fuente (en assembler, C y C++),
simulador, ensamblador, compilador para C / C ++, programacin y depuracin en el chip.

Para generar un proyecto en Atmel Studio 7:


Paso 5 y 6
Paso 0: Crear una carpeta que alojar el
proyecto
Paso 1: File New Project
Paso 2: En Installed seleccionar:
o a) Assembler si se desea realizar un
proyecto en assembler.
o b) C/C++ seleccionar Create Project
from Arduino sketch si se desea realizar
un proyecto en sketch de Arduino.
Paso 3: Completar:
o Name: Nombre del proyecto.
o Location: Carpeta donde se alojarn los
archivos generados en el proyecto.
Paso 4: Presionar OK.
Paso 5: Seleccionar el micro del Arduino:
o Device Family ATmega
o Para Arduino Mega ATmega2560
o Para Arduino Uno ATmega328p
Paso 6: Presionar OK.
Paso 7: Escribir el programa.

U.Na.M. Facultad de Ingeniera Tcnicas Digitales 2 Mg. Ing. Guillermo A. Fernndez 20


Atmel Studio 7: Generar un Proyecto
Atmel Studio 7 es un Entorno de Desarrollo Integrado (IDE) que permite escribir y depurar (debugging) aplicaciones destinadas a dispositivos AVR/ARM bajo
Windows (XP/Vista/XP/7/8). Este IDE proporciona recursos para la administracin de proyectos, edicin de archivos de cdigo fuente (en assembler, C y C++),
simulador, ensamblador, compilador para C / C ++, programacin y depuracin en el chip.

Para generar un proyecto en Atmel Studio 7:


Paso 7
Paso 0: Crear una carpeta que alojar el
proyecto
Paso 1: File New Project
Paso 2: En Installed seleccionar:
Ventana Solution Explorer: Permite ver
o a) Assembler si se desea realizar un
elementos del proyecto y realizar tareas de
proyecto en assembler.
o b) C/C++ seleccionar Create Project
administracin de los mismos.
from Arduino sketch si se desea realizar
un proyecto en sketch de Arduino.
Paso 3: Completar:
o Name: Nombre del proyecto. Ventana origen del editor de texto, donde se
o Location: Carpeta donde se alojarn los escribe el programa (archivo fuente main.asm).
archivos generados en el proyecto.
Paso 4: Presionar OK.
Paso 5: Seleccionar el micro del Arduino:
o Device Family ATmega
o Para Arduino Mega ATmega2560 Ventana Output: Muestra el resultado de la operacin de ensamblado o compilacin. Si se
o Para Arduino Uno ATmega328p producen errores en esta operacin, el usuario puede hacer doble clic en el mensaje de error y el
Paso 6: Presionar OK.
marcador se colocar sobre la lnea correspondiente en la ventana de origen (se puede cerrar).
Paso 7: Escribir el programa.

U.Na.M. Facultad de Ingeniera Tcnicas Digitales 2 Mg. Ing. Guillermo A. Fernndez 21


Atmel Studio 7: Ensamblado del cdigo fuente
Una vez que se ha escrito el programa. Build Solution (F7)
Hacer click en este botn para ensamblar o compilar
Dependences:
Contiene los archivos incluidos
para ensamblar (m2560def.inc).
Labels:
Posee todas las etiquetas
usadas en el programa.
Output Files:
Posee todos los archivos
generados al ensamblar.
- xxx.hex: Archivo que posee
el cdigo mquina en
Programa a hexadecimal. El mismo ser
cargado en la memoria del
Ensamblar dispositivo.
- xxx.lss: Archivo que posee el
cdigo mquina del programa
junto a cada instruccin del
cdigo fuente (programa en
assembler).
- xxx.map: Archivo que posee
informacin relacionada con
la memoria de datos y
Indica que no hay errores en el ensamblado programa que es utilizada
por el cdigo fuente.
- xxx.obj: Archivo que
contiene informacin para la
depuracin.
U.Na.M. Facultad de Ingeniera Tcnicas Digitales 2 Mg. Ing. Guillermo A. Fernndez 22
Atmel Studio 7: Debugging (Simulacin)
Cargar Simulador: Una vez ensamblado el programa, debe seleccionarse el simulador. Para esto: Project Prueba_1
Properties .

Luego guardar y
cerrar la ventana
Prueba_1 Properties

Seleccionar
Simulator

Save All

U.Na.M. Facultad de Ingeniera Tcnicas Digitales 2 Mg. Ing. Guillermo A. Fernndez 23


Atmel Studio 7: Debugging (Simulacin)
Iniciar Simulacin: Una vez cargado el simulador, se debe iniciar la simulacin. Para esto click en el botn:

Start Debugging
and Break (Alt+F5)

Ventana I/O:
Permite visualizar el
contenido de los registros
I/O del dispositivo.
(cerrar sino se usa)
El marcador se
posiciona en la
primera instruccin
del programa

Ventana Memory:
En este caso muestra lo
que est en la memoria
Flash. (cerrar sino se usa)
Cdigo Mquina
U.Na.M. Facultad de Ingeniera Tcnicas Digitales 2 Mg. Ing. Guillermo A. Fernndez 24
Atmel Studio 7: Debugging (Simulacin)
C E G I

Botones para uso


del Simulador

A B D F H

A Start Debugging and Break (Alt+F5): Inicia el proceso de depuracin (debugging) y finaliza la ejecucin del programa en la primera instruccin del
programa.

B Stop Debugging (Ctrl+Shift+F5): Detiene y termina la sesin de depuracin, volviendo al modo de diseo.

C Break All (Ctrl+F5): Detiene el depurador.

D Start Debugging (F5): Inicia el depurador y ejecuta el programa. En modo de depuracin y estando detenido, reanuda la ejecucin.

E Step Into (F11): Ejecuta una instruccin.


Step Over (F10): Al igual que Step Into, ejecuta una instruccin. Sin embargo, si la instruccin contiene una llamada de funcin/subrutina, la
F funcin/subrutina tambin se ejecuta. Si se encuentra un punto de parada (breakpoint), se detiene la ejecucin.
Step Out (Shift+F11): Contine la ejecucin hasta que la funcin actual se haya completado. Si se encuentra un punto de parada (breakpoint) durante
G el paso anterior, se detiene la ejecucin.

H Reset (Shift+F5): Resetea el programa, llevando el marcador a la primera lnea del mismo (vector de reset).

U.Na.M. Facultad de Ingeniera Tcnicas Digitales 2 Mg. Ing. Guillermo A. Fernndez 25


Atmel Studio 7: Debugging (Simulacin)
I K M

Botones para uso


del Simulador

J L N
Botn de acceso configurable: Se puede configurar con para tener acceso rpido (con este botn) a las funciones
I indicadas en la siguiente tabla:
Botn de acceso a la ventana Desassembly (Alt+8): La ventana muestra el cdigo del programa desensamblado. Esto es
J til cuando el programa est escrito en un lenguaje de alto nivel como C o C++. Mientras corre la simulacin y se ejecuta el
programa, en esta ventana puede seguirse el marcador a travs de las instrucciones ejecutadas.
Botn de acceso a la ventana Registers (Alt+5): Esta ventana ofrece una forma sencilla de ver los datos almacenados en
K los registros de trabajo (R0.) del dispositivo simulado. Desde esta ventana no puede modificarse el contenido de los
registros mencionados.
Botn de acceso a la ventana Memory 1 (Alt+6): La ventana permite mostrar un esquema de los distintos segmentos de
L memoria que posee el dispositivo simulado. La seleccin de la memoria a visualizar se efecta a travs de un men
desplegable.
Botn de acceso a la ventana Processor Status: En esta ventana puede visualizarse los registros de la CPU del dispositivo
M simulado. Tambin incorpora tres campos: Cycle Counter cuenta el nmero de ciclos de mquina transcurridos desde el reset del
dispositivo; Frequency define la frecuencia de operacin del dispositivo; Stop Watch es un cronmetro que mide el tiempo de ejecucin
del programa, es acumulativo pero puede borrarse en cualquier durante la simulacin (cuando no se ejecuta el programa). Cada uno de
los registros y campos mencionados puede modificarse teniendo efecto sobre la ejecucin del programa.
Botn de acceso a la ventana I/O: Esta ventana mostra los registros de E/S del dispositivo simulado. Est dividida en dos partes: Vista de Perifricos (seccin
N superior), que posee el grupo de mdulos del dispositivo (CPU, puertos, etc); Vista de Registros (seccin inferior), que posee acceso a los registros de configuraciones y de
valores de cada mdulo, los cuales se visualizan seleccionando el mdulo correspondiente en la seccin superior. Para leer o cambiar el valor de los registros mencionados, el
simulador debe correr pero el programa no debe estar ejecutndose. En cuanto a los bits particulares de los registros, cualquier valor puede cambiarse haciendo clic en el
campo correspondiente y escribiendo un nuevo valor. Algunos valores y bits no pueden modificarse ya que son de slo lectura (consultar la hoja de datos del dispositivo para
obtener ms informacin).

U.Na.M. Facultad de Ingeniera Tcnicas Digitales 2 Mg. Ing. Guillermo A. Fernndez 26


Atmel Studio 7: Debugging (Simulacin)
Acceso alternativo: Debug Windows Disassembly Acceso alternativo: Debug Windows Memory

Men desplegable
p/seleccin de
segmento de memoria
a visualizar.

Visualizacin de memoria de programa.


Posiciones de memoria
Acceso alternativo: Debug Windows Register SRAM utilizadas: memo1
(0x200), memo2 (0x201) y
memo3 (0x203).

Cdigo Mquina
cargado en la memoria

Visualizacin de memoria de datos de usuario.

U.Na.M. Facultad de Ingeniera Tcnicas Digitales 2 Mg. Ing. Guillermo A. Fernndez 27


Atmel Studio 7: Debugging (Simulacin)
Acceso alternativo: Acceso alternativo:
Debug Processor Status Debug Windows I/O
Cycle Counter: Vista de Perifricos
Contador de ciclos de
mquina ejecutados
Vista de Registros
Frequency:
Establece la frecuencia GPIOR0..R2: Registros para
del reloj del sistema operar con SRAM externa
(se puede modificar)
SMCR: Registro de control del
Stop Watch: modo SLEEP
Tiempo transcurrido
desde el Reset del MCUSR: Registro de estado
dispositivo de RESET del dispositivo
(se puede borrar)
MCUCR: Registro de control
R0.R31: Reg. de trabajo del dispositivo

CLKPR: Reg. para config. del RAMPZ: Extensin del


prescaler del reloj del sistema registro puntero Z (usado slo
con instrucciones ELPM/SPM)
PRR0..R1: Reg. para config.
de consumo de energa EIND: Registro para saltos
extendidos (usado slo con
OSCCAL: Contiene valor de instrucciones ICALL/EIJMP)
calibracin del osc. RC interno
SP: Puntero de Pila
XMCRA..RB: Reg. de control
de la memoria SRAM externa SREG: Registro de Estado

U.Na.M. Facultad de Ingeniera Tcnicas Digitales 2 Mg. Ing. Guillermo A. Fernndez 28


Atmel Studio 7: Debugging (Simulacin)
Uso de puntos de parada (breakpoints) (A) Una vez click en: (B) Otra vez click en:
Cargar el simulador
con:

Luego agregar los


breakpoints haciendo
doble click en la lnea
deseada, sobre el
margen izquierdo.

1ra instruccin
(Vector de Reset)
(1 ciclo)
1er. Breakpoint (2 ciclos)
(1 ciclo)
(2 ciclos)
2do. Breakpoint
(A) Processor Status: (B) Processor Status:
PC = 0x00000003; SP = 0x21FF PC = 0x00000006; SP = 0x21FF
Cycle Counter = 3; Stop Watch = 0,19 s Cycle Counter = 6; Stop Watch = 0,38 s
Memory1: Memory1:
0x200 = 0a; 0x201 = 00 0x200 = 0a; 0x201 = 0f
U.Na.M. Facultad de Ingeniera Tcnicas Digitales 2 Mg. Ing. Guillermo A. Fernndez 29
Bibliografa
The AVR microcontroller and embedded systems using assembly and C Muhammad Ali Mazidi,
Prentice Hall, 2011.
Programming and customizing the AVR microcontroller Dhananjay V. Gadre, McGraw-Hill, 2001.
Atmel ATmega640/V-1280/V-1281/V-2560/V-2561/V Datasheet Atmel 2549QAVR02/2014.
Atmel Studio User Guide. Atmel 42167B -09/2016
AVR Instruction Set Manual Atmel 0856L, 11/2016.
Web: https://aprendiendoarduino.wordpress.com/tag/bootloader/
http://www.atmel.com/webdoc/avrassembler/avrassembler.wb_directives.html

U.Na.M. Facultad de Ingeniera Tcnicas Digitales 2 Mg. Ing. Guillermo A. Fernndez 30

Anda mungkin juga menyukai