0% encontró este documento útil (0 votos)
1 vistas13 páginas

Estudio Micro

El ATmega16A es un microcontrolador de 8 bits con arquitectura RISC y 32 registros, que incluye 16 KB de memoria Flash, 512 B de EEPROM y 1 KB de SRAM, además de múltiples periféricos como temporizadores, ADC y USART. Ofrece modos de bajo consumo, diversas fuentes de reloj y opciones de programación, incluyendo un bootloader. Su diseño permite un manejo eficiente de interrupciones y temporizadores, siendo ideal para aplicaciones de control y automatización.
Derechos de autor
© All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
1 vistas13 páginas

Estudio Micro

El ATmega16A es un microcontrolador de 8 bits con arquitectura RISC y 32 registros, que incluye 16 KB de memoria Flash, 512 B de EEPROM y 1 KB de SRAM, además de múltiples periféricos como temporizadores, ADC y USART. Ofrece modos de bajo consumo, diversas fuentes de reloj y opciones de programación, incluyendo un bootloader. Su diseño permite un manejo eficiente de interrupciones y temporizadores, siendo ideal para aplicaciones de control y automatización.
Derechos de autor
© All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

Guía de estudio — ATmega16A (resumen del datasheet)

1) Panorama general

• Arquitectura AVR de 8-bit RISC, con 32 registros de uso general conectados


al ALU (una operación por ciclo en la mayoría de instrucciones). Soporta
multiplicador hardware, llamadas/retornos rápidos y un set de instrucciones
optimizado en tamaño/velocidad.

• Memoria: 16 KB de Flash con opción de sección de bootloader programable


en campo (Self-Programming con instrucción SPM), 512 B de EEPROM y 1 KB
de SRAM.

• Periféricos principales: 3 temporizadores (8-bit x2 y 16-bit x1) con PWM, ADC


de 10-bit (8 canales), comparador analógico, USART, SPI, TWI (I²C),
Watchdog, JTAG (debug/boundary-scan) y 32 líneas de E/S.

2) Sistema de reloj (clock) y reset

• Fuentes de reloj:

o RC interno calibrado a 1/2/4/8 MHz (seleccionable por CKSEL). En


reset se carga automáticamente el byte de calibración (OSCCAL).
Típicamente ±3 % a 5 V/25 °C; con técnicas de calibración puede
lograrse ±1 %.

o Cristal/Resonador de alta frecuencia (tablas de tiempos de start-up


con SUT y variantes de CKSEL).

o Cristal de baja frecuencia 32.768 kHz (watch crystal) para RTC.

o RC externo (f ≈ 1/(3RC); tabla de rangos y start-up).

o Reloj externo aplicado a XTAL1 (precaución: variaciones >2 % de un


ciclo a otro pueden causar comportamiento impredecible).

• Velocidad vs voltaje (grados de velocidad): hasta 16 MHz a 4.5–5.5 V y hasta


8 MHz a 2.7–5.5 V (tabla de características del clock).

• Fuentes de Reset: Power-on Reset (POR), Brown-out Reset (BOD), External


Reset por pin, Watchdog Reset y JTAG Reset. El diagrama de arranque muestra
los flags PORF/EXTRF/WDRF/BORF en MCUCSR y la lógica de time-out de
arranque (tTOUT).
• BOD (Brown-out): niveles configurables por fuse (BODLEVEL) a 2.7 V ó 4.0 V;
hysteresis incluida; habilitable con BODEN. Ver tiempos mínimos tBOD y
umbrales VBOT± en tablas eléctricas.

3) Modos de bajo consumo (sleep modes)

• Idle: CPU parada; periféricos síncronos siguen activos.

• ADC Noise Reduction: detiene reloj I/O y CPU; ideal para reducir ruido
durante conversiones ADC.

• Power-down: reloj detenido; solo eventos asíncronos (por ejemplo, reset,


watchdog, ext. INT con asincronía, etc.).

• Power-save: como Power-down pero conserva Timer2 en modo asíncrono si


AS2=1 (puede despertar por overflow/compare).

• Standby / Extended Standby: como Power-down/Power-save pero


manteniendo oscilador externo corriendo para inicio rápido (6 ciclos).

• Para minimizar consumo: deshabilitar ADC, Comparador, BOD (si no se


requiere) y WDT antes de dormir; cuidar configuración de pines para evitar
cargas resistivas/flotantes.

4) Puertos de E/S (GPIO)

• 32 pines con lectura-modificación-escritura real (no afecta a otros bits), pull-


ups individuales y capacidad de sink/source simétrica suficiente para manejar
LEDs directamente. Registros: DDRx, PORTx, PINx. PUD en SFIOR desactiva
todos los pull-ups.

• Funciones alternas: la mayoría de pines comparten señales con periféricos.


Port A es entrada analógica del ADC (PA0–PA7 = ADC0–ADC7); evitar
conmutación de salidas en PA durante conversiones.

• Entradas digitales y sleep: los buffers de entrada se deshabilitan en modos


profundos para ahorrar energía (salvo pines usados como fuente de wake-up).
Gestión de pines no usados: preferible habilitar pull-up interno o usar
resistencias externas; no conectar duro a VCC/GND si podrían configurarse
como salida.
5) Interrupciones

• Vectores múltiples (reset + periféricos: INT0/1, timers, ADC, USART, TWI, SPI,
etc.). Es posible reubicar la tabla de vectores a la sección de boot usando
IVSEL; el cambio se arma con IVCE (se limpia a los 4 ciclos).

• Prioridades: vienen dadas por el orden de la tabla (menor dirección = mayor


prioridad). Consulta la tabla de vectores en el documento para el listado
completo.

6) Temporizadores/Contadores

• Timer/Counter0 (8-bit) y Timer/Counter2 (8-bit): modos Normal, CTC, Fast


PWM, Phase Correct PWM; banderas de overflow/compare e interrupciones
asociadas. Timer2 puede funcionar asíncrono con cristal de 32.768 kHz para
RTC.

• Timer/Counter1 (16-bit): además de lo anterior, incluye Input Capture


(medición de períodos/ancho de pulso con precisión), canales de compare
A/B y modos de PWM de mayor resolución.

7) ADC de 10-bit y Comparador Analógico

• ADC: resolución 10-bit, 8 canales multiplexados en Port A; soporta canales


diferenciales con ganancia (p. ej., ×10/×200 según combinación), trigger por
eventos, y referencias seleccionables (AREF externa, AVCC, 2.56 V interna de
bandgap).

• Buenas prácticas: usar ADC Noise Reduction para mejorar precisión,


desacoplar AVCC/AREF, y evitar conmutaciones en PA durante conversiones.

• Comparador: puede usar la referencia interna; si se habilita esta ruta,


mantenerlo deshabilitado en sleep si no se usa para no forzar la referencia.

8) Interfaces serie
• USART: modos asíncrono y síncrono (Master), control de velocidad (incluye
double speed), tamaños de palabra 5–9 bits, paridad (par/impar/none), 1–2
stop bits, multi-processor mode y wake-up por recepción.

• SPI: modo Master/Slave con líneas MISO/MOSI/SCK/SS; integra shift


register, selección de orden de bits y doble buffering TX/RX (ver sección SPI
para detalles de modos CPOL/CPHA y prescalers).

• TWI (I²C): compatible con bus Two-Wire, cumple o excede las


especificaciones eléctricas del bus (ver tabla 27-4).

9) Watchdog Timer (WDT)

• Temporizador independiente (oscilador dedicado) con reset del sistema al


expirar. Tras un WDT reset se aplica un tTOUT antes de arrancar. Deshabilítalo
en sleep si no es necesario para reducir consumo.

10) Programación, bootloader, fuses y lock bits

• Modos de programación: ISP por SPI, JTAG y paralelo. La sección de


programación paralela detalla mapeo de pines y señales (RDY/BSY, OE, WR,
BS1, XA0/1, PAGEL, etc.).

• Firma del dispositivo (signature bytes): 0x1E 0x94 0x03 (Atmel | 16 KB Flash |
ATmega16A).

• Byte(s) de fuses (ejemplo Fuse Low Byte): BODLEVEL, BODEN, SUT1:0,


CKSEL3:0 (tabla con valores por defecto y nota de latching de fuses en
programming mode y power-up).

• Sección boot: admite reubicación de vectores (IVSEL) y auto-programación


mediante SPM desde el bootloader.

11) Características eléctricas (lo que más preguntan)

• Rango de operación: 2.7–5.5 V (−40 °C a 85 °C). Frecuencia máx.: 8 MHz


(2.7–5.5 V) y 16 MHz (4.5–5.5 V).
• Consumo típico (referencias de tabla): activo 1 MHz/3 V ≈ 0.6 mA; 4 MHz/3 V
≈ 1.9–5 mA; 8 MHz/5 V ≈ 7–15 mA. Idle a 8 MHz/5 V ≈ 2.7–7 mA. Power-down a
3 V: <1–4 µA (WDT off) o <8–15 µA (WDT on).

• BOD/Reset (tabla 27-2):

o VBOT ≈ 2.7 V (BODLEVEL=1) u 4.0 V (BODLEVEL=0) típ.

o VRST: umbral del pin RESET; tRST mínimo ≈ 1.5 µs.

o VBG ≈ 1.23 V; start-up de la referencia ≈ 40–70 µs.

• Corrientes máx. de I/O (observaciones de suma por puerto/paquete):


límites agregados por paquete (PDIP vs TQFP/QFN), aunque cada pin puede
source/sink más que las condiciones de prueba; revisar sumas de IOH/IOL por
puertos/paquete.

12) Consejos rápidos para el examen

1. Reloj: recuerda CKSEL elige fuente y SUT define tiempo de start-up; OSCCAL
ajusta el RC interno.

2. Reset/BOD: niveles 2.7 V/4.0 V y flags en MCUCSR; reset externo requiere


pulso ≥ tRST.

3. Sleep: usa Power-save si necesitas Timer2 asíncrono (RTC); ADC Noise


Reduction para lecturas precisas.

4. GPIO: pull-ups con PORTx=1 y DDRx=0; cuidado con PAx durante


conversiones ADC.

5. Timers: T1 (16-bit) tiene Input Capture; T2 puede ir con cristal de 32.768 kHz.

6. Serie: USART (5–9 bits, paridad, síncrono/asíncrono), SPI (M/S), TWI (bus I²C).

7. Programación: ISP/JTAG/Paralelo; firma 1E 94 03; programa fuses antes de


lock bits.
Perfecto — te preparé un resumen/guía de estudio extenso y estructurado con lo
más importante del PDF “Los Microcontroladores AVR de ATMEL” (Felipe Santiago
Espinosa). He condensado conceptos clave, definiciones, reglas prácticas, ejemplos
y puntos que suelen caer en exámenes. Todo está basado en el PDF que subiste.

1. Qué es este libro / cómo usar esta guía

Breve contexto: es un texto docente que cubre desde conceptos generales de


microcontroladores y sistemas electrónicos hasta detalles prácticos de los AVR
(ATMega8 / ATMega16): hardware, instrucciones, interrupciones, temporizadores,
ADC, comunicaciones (USART, SPI, TWI), manejo de periféricos, bootloader y
ejemplos de proyectos. Útil para teoría y prácticas de laboratorio.

2. Conceptos generales (Cap.1) — lo esencial para el examen

• Sistema electrónico: sensores → controlador (MCU) →


actuadores/visualización; además puede comunicarse con otros sistemas.

• Microcontrolador (MCU): CI que integra CPU, memoria (programa y datos),


timers, interrupciones y periféricos; orientado a propósito específico.

• Diferencias con microprocesador:

o MCU: todo en un CI, menos memoria, menor velocidad (MHz), ideal


para control.

o Microprocesador: CPU sola, requiere periféricos externos, mayor


potencia (GHz).

• FPGA vs MCU: FPGA reconfigura hardware (paralelismo real), MCU ejecuta


código secuencial. Elegir FPGA si necesitas procesamiento concurrente y muy
alta velocidad.

• Arquitectura de memoria:

o Von Neumann: código y datos comparten espacio.

o Harvard: memoria separada para código y datos — la mayoría de MCU


(incl. AVR) usan Harvard.

• Recursos típicos en un MCU: oscilador, timers, WDT, puertos I/O, ADC,


UART/SPI/TWI, PWM. Memoriza definiciones y propósito de cada uno.
3. Organización interna de los AVR (Cap.2) — puntos que debes saber al detalle

• Familia AVR (ATMega8 / ATMega16): núcleo RISC, arquitectura Harvard,


esquema registro-registro. Características físicas y recursos principales
(memoria, puertos, timers, ADC, PWM, interrupciones). Memorizarlas te cae
en examen práctico.

o ATMega8: 8 KB Flash, 1 KB SRAM, 512 B EEPROM, 23 I/O (PDIP28 en


protoboard), hasta 16 MHz.

o ATMega16: 16 KB Flash, 1 KB SRAM (o más según versión), más I/O y


más interrupciones.

• Núcleo / ALU / registros:

o 32 registros de propósito general (8 bits) — la ALU opera entre registros


(por eso: registro-registro). El registro de estado (SREG) contiene flags
(Z, C, V, H, etc.).

• Memoria:

o Flash (programa) organizada en páginas; lectura byte a byte, borrado/


escritura por páginas. BOOTSZ fusibles determinan tamaño de sección
de arranque (boot).

o SRAM (datos), EEPROM (datos no volátiles).

• Puertos I/O: cada pin puede tener funciones múltiples (GPIO, funciones
periféricas). Conoce registros DDRx, PORTx, PINx y su uso básico.

• Reloj / Osciladores: múltiples opciones (cristal, resonador, RC interno, reloj


externo). Importante para exactitud de temporización y Baud rate.

• Reset / Inicialización: vectores de reset, interrupciones deshabilitadas al


encender, debes habilitar la global IRQ (bit I en SREG) y configurar periféricos.

4. Programación y conjunto de instrucciones (Cap.3) — lo que más cae en


examen práctico

• Conjunto de instrucciones (ATMega8: 128; ATMega16: 131): divididas en

o Aritméticas y lógicas (ADD, SUB, INC, DEC, etc.)


o Control de flujo (RJMP, RCALL, BRxx)

o Transferencia de datos (MOV, LD/ST variantes)

o Manejo de bits (SBI, CBI, SBR/CBR, etc.)

o Especiales (NOP, SLEEP, etc.)

• Modos de direccionamiento: directo a registros, I/O, memoria, indirecto,


inmediato, relativo (brancheo). Entiende cuándo se usa cada uno.

• Directivas de ensamblador más importantes: .ORG, .DB/.DW, .EQU,


.INCLUDE, CSEG/DSEG/ESEG (para secciones). Suele pedirse explicar .ORG y
vectores de interrupción.

• Programación en C:

o Tipos de memoria en C (variables en SRAM, constantes en Flash), uso


de volatile para variables modificadas por ISRs (IMPORTANTE: sin
volatile el compilador puede optimizar mal). Ej.: volatile unsigned char
cuenta;.

o Relación C ↔ ensamblador: entender cómo una instrucción C se


traduce a secuencia asm simplifica debugging en examenes prácticos.

• Ejemplos típicos: parpadeo de LED, contador en 7-segmentos, pequeñas


ALUs — memoriza la estructura: inicialización de puertos, loop principal, uso
de delay/ timers o interrupciones.

5. Interrupciones (Cap.2 y Cap.4) — imprescindible

• Fuentes de interrupción AVR: reset, interrupciones externas (INT0/INT1),


temporizadores (overflow, compare, capture), SPI complete, USART
TX/RX/buffer empty, ADC complete, EEPROM write complete, comparador,
TWI, etc. ATMega16 tiene más fuentes que ATMega8.

• Flujo de una ISR:

1. Al generarse la IRQ el PC se push en la pila.

2. Se salta a la dirección del vector.

3. Hardware limpia/asegura flags según fuente; el compilador coloca


prologue/epilogue.
4. ISR termina con RETI que restaura PC y re-habilita IRQ global.

• Buenas prácticas:

o Mantener ISRs cortas (poner trabajo pesado en el main o en flags).

o Declarar variables compartidas como volatile.

o Deshabilitar/ habilitar sólo las IRQ necesarias si requieres atomicidad.

6. Temporizadores y PWM (Cap.4) — repasos de examen

• Tipos de eventos: overflow, compare match, capture. Flags en TIFR.

• Prescaler: divisor de reloj para ajustar la resolución del timer; importante para
calcular periodos.

• Timers en AVR:

o Timer0: 8 bits (TCNT0)

o Timer1: 16 bits (TCNT1H:TCNT1L)

o Timer2: 8 bits (TCNT2)


Conocer registros asociados y cómo pre-cargar.

• Modos de PWM:

o Fast PWM, Phase Correct PWM, Phase & Frequency Correct — efectos
en forma de onda y resolución. Saber cuándo usar cada uno (control de
motores, servos, dimming).

• Ejemplo práctico de examen: calcular valor de OCRx para generar una


frecuencia o duty cycle dado F_CPU y prescaler — practica fórmulas:

o para modo CTC / compare: OCR = (F_CPU / (2 * N * f)) - 1 (ajusta según


modo/bit width).

7. ADC y manejo analógico (Cap.5)

• ADC de aproximaciones sucesivas: entrada analógica → conversión a digital


(10 bits en ATMega8/16). Conoce:

o Referencias (AVcc, AREF, internal)


o Registro ADMUX (selección canal y referencia)

o ADCSRA (habilitar, iniciar conversión, prescaler y flags)

o ADCH/ADCL lectura (orden y sincronización)

• Comparador analógico: usado para decisiones rápidas sin ADC completo.

• Ejercicio típico: configurar ADC, iniciar conversión, esperar flag ADIF o usar
ISR de ADC complete, leer resultado y convertir a voltaje (V = resultado * Vref /
1023).

8. Comunicaciones seriales: USART / SPI / TWI (Cap.6)

• USART (UART): transmisión/recepción asíncrona; registros UBRR (baud rate),


UDR (data), UCSRx (configuración de frame: parity, stop bits, data bits), flags
(UDRE, RXC). Práctica: calcular UBRR para baud deseado y F_CPU.

• SPI: maestro/esclavo, modos CPOL/CPHA, registros SPCR, SPSR, SPDR:


secuencia típica: configurar SPCR, en maestro generar clock y escribir SPDR,
esperar SPIF. Útil para sensores, memoria SPI.

• TWI (I²C): direcciones, start/stop, ACK/NACK, registros TWBR / TWSR / TWDR /


TWCR; modos Maestro/Esclavo. Entender secuencia de transmisión completa
(start, addr+R/W, data, stop).

• Ejemplos prácticos: implementar protocolo simple UART para debug; usar


SPI para leer un ADC externo; configurar TWI como maestro para leer sensores
I²C.

9. Recursos especiales y memoria de programa (Cap.7)

• Watchdog Timer (WDT): reinicia sistema si no es saldado periódicamente;


evita ciclos inmanejables. Saber cuándo y cómo activarlo/ desactivar y puntos
en código para resetearlo.

• Sección de arranque / Bootloader:

o Flash particionada en secciones: aplicación y bootloader;


programación en páginas (32 palabras/ página en ATMega8, 64 en
ATMega16). BOOTSZ fusibles determinan tamaño de la sección de
arranque. Conocer la motivación: permitir autoprogramación en
sistema.

• JTAG: interfaz para depuración; conocer que existe y su propósito (depuración


HW).

10. Interfaz y manejo de periféricos externos (Cap.8)

• Switches / botones: debouncing (hardware o software), configurar pull-


ups/pull-downs, lectura en PINx.

• Teclado matricial: escaneo por filas/columnas, decodificación.

• Displays:

o 7-segmentos: multiplexado, decodificación BCD → segmentos.

o LCD (HD44780 o compatibles): CGRAM/DDRAM, comandos (clear,


home, entry mode), inicialización (importante en prácticas). Aprende
secuencia de inicialización y comandos más usados.

• Motores:

o DC: control por puente H + PWM para velocidad.

o Stepper: secuencias de fases; drivers y control por step/dir.

o Servos: PWM de 50 Hz con pulse width variando ~1–2 ms.

• Interfaz PC: RS-232, adaptadores USB→serial, módulos de evaluación.

11. Desarrollo de sistemas (Cap.9) — metodología práctica (muy importante en


proyectos/exámenes orales)

• Pasos:

1. Planteamiento del problema y requerimientos (funcionales y no


funcionales).

2. Selección de hardware (MCU, sensores, actuadores) basándose en


criterios: recursos, costo, consumo, herramientas de desarrollo,
disponibilidad.

3. Diseño de hardware (esquemáticos, PCB si aplica).


4. Diseño del software (diagramas de flujo, modulación por capas, manejo
de ISRs).

5. Implementación y pruebas (unitarias y de integración).

6. Ajustes y correcciones — documentar resultados.

• Ejemplos en libro: reloj RTC con alarma (detalles de HW y SW), chapa


electrónica — entender estructura paso a paso; estos ejemplos suelen ser
preguntas de examen aplicadas.

12. Apéndices e índices — qué revisar según tipo de examen

• Apéndice B: referencia rápida del repertorio de instrucciones (útil para


preguntas teóricas y para montar código en examen práctico).

• Índice temático: localiza rápidamente temas como PWM, timers,


interrupciones, I/O, ADC. Útil para repasar.

13. Resumen ejecutivo — cosas que debes memorizar ahora

1. Diferencias MCU vs microprocesador; Harvard vs Von Neumann.

2. Recursos principales del ATMega8/16 y sus especificaciones (memoria, I/O,


timers, ADC, UART/SPI/TWI, PWM).

3. Flujo y buenas prácticas con interrupciones (push PC, RETI, volatile).

4. Cómo configurar y usar timers (prescaler, OCR, modos PWM).

5. Registros clave para ADC y cálculo de voltaje (ADC result → Vref*ADC/1023).

6. Parámetros y registros básicos de USART / SPI / TWI y secuencias (start, addr,


data, stop).

7. Organización de Flash (páginas) y la sección de arranque / BOOTSZ


(bootloader).

14. Preguntas prácticas tipo examen (con respuesta corta)

• ¿Qué diferencia hay entre volatile int x; y int x; cuando x se modifica en un ISR?
→ volatile evita optimizaciones que puedan leer cached value.
• Secuencia mínima para atender una interrupción externa (configuración + loop
principal). → configurar pin/edge, habilitar interrupción específica, habilitar
global I, loop principal con lazo infinito.

• Cálculo de OCR para PWM: (ejemplo práctico) — practica con F_CPU = 16 MHz
y prescaler=64. (Aplica la fórmula del modo que uses).

15. Ejemplos de código esenciales (pseudocódigo / estructuras — memorizar)

• Blink (concepto): configurar DDRx (salida), loop con toggle PORTx o usar
Timer+ISR para blink preciso.

• UART TX (concepto): configurar UBRR, habilitar TX, cargar UDR y esperar flag
UDRE/RXC.

• ADC read (concepto): seleccionar canal en ADMUX, poner prescaler en


ADCSRA, iniciar conversión, esperar ADIF, leer ADCL/ADCH.

16. Consejos de estudio (rápidos y efectivos)

• Haz fichas con: registros clave (TCCRn, OCRn, TCNTn, TIFR, ADMUX, ADCSRA,
UBRR, UDR, SPCR, TWBR, WDTCSR). Memorizarlas es muy útil.

• Resuelve ejercicios prácticos: configurar timer para 1 ms tick, configurar UART


a 9600 con F_CPU=16MHz, leer ADC y convertir a voltaje.

• Escribe y ejecuta en simulador o en placa el parpadeo, UART básico y un


ADC→USART logger.

17. Qué no olvidar (lista corta para el día del examen)

• volatile para variables compartidas con ISR.

• RETI para terminar ISR (no RET).

• Flash se programa por páginas (no por bytes).

• Timers: diferencia entre 8-bit y 16-bit (Timer1 es 16-bit).

También podría gustarte