ATtiny84: Datasheet, Pinout, Programación y Guía de Inicio Rápido con Arduino
El ATtiny84 (Microchip/Atmel) es un microcontrolador AVR 8-bit ultra-compacto (14 pines) de la familia tinyAVR, diseñado para aplicaciones donde el espacio, coste y consumo son críticos. Basado en arquitectura AVR RISC (1 MIPS/MHz), integra 8 KB Flash, 512 B SRAM, 512 B EEPROM, ADC 10-bit 8 canales, 12 I/O, y tecnología picoPower para consumo mínimo. Ideal para nodos sensor, wearables, controladores LED, reemplazo de lógica glue, y proyectos Arduino miniaturizados. Cubrimos pinout detallado, características, programación vía Arduino as ISP y alternativas.
Configuración de Pines (SOIC-14 / DIP-14)
El ATtiny84 tiene 14 pines: VCC, GND, RESET, y 12 I/O multifunción (Port A: PA0-PA7, Port B: PB0-PB3). Cada pin tiene múltiples funciones alternativas (ADC, PWM, SPI, I2C/USI, Clock, Interrupciones).
| Pin | Nombre Principal | Funciones Alternativas Clave |
|---|---|---|
| 1 | VCC | Alimentación 1.8-5.5 V |
| 2 | PB0 | PCINT8, XTAL1, CLKI (Clock externo entrada) |
| 3 | PB1 | PCINT9, XTAL2 (Cristal) |
| 4 | PB3 | PCINT11, RESET (dW debug, programación ISP). Pull-up 10 kΩ obligatorio. |
| 5 | PB2 | PCINT10, CKOUT (Clock salida sistema), OC0A (PWM Timer0 A), INT0 (Interrupción externa) |
| 6 | PA7 | PCINT7, ADC7, OC0B (PWM Timer0 B), ICP1 (Timer1 Input Capture) |
| 7 | PA6 | PCINT6, ADC6, OC1A (PWM Timer1 A), SDA (USI I2C), MOSI (USI SPI), DO (USI Data Out) |
| 8 | PA5 | PCINT5, ADC5, OC1B (PWM Timer1 B), MISO (USI SPI), DI (USI Data In) |
| 9 | PA4 | PCINT4, ADC4, USCK (USI Clock), SCL (USI I2C), T1 (Timer1 Clock externo) |
| 9 | PA3 | PCINT3, ADC3, T0 (Timer0 Clock externo) |
| 11 | GND | Tierra |
| 12 | PA2 | PCINT2, ADC2, AIN1 (Comparador analógico entrada -) |
| 13 | PA1 | PCINT1, ADC1, AIN0 (Comparador analógico entrada +) |
| 14 | PA0 | PCINT0, ADC0, AREF (Referencia ADC externa) |
Notas críticas:
- RESET (PB3, Pin 4): Activo bajo. Necesita pull-up 10 kΩ a VCC. Si se programa fuse RSTDISBL → Pin 4 = I/O normal (PB3), pero pierde programación ISP (solo HVSP para recuperar).
- USI (Universal Serial Interface): Implementa SPI (Modo 0/1) e I2C (TWI) por software/hardware asistido. Pines: PA6 (MOSI/SDA/DO), PA5 (MISO/DI), PA4 (SCK/SCL/USCK). No es SPI/I2C hardware completo (sin buffer RX/TX, sin interrupciones nativas), pero funcional para la mayoría de sensores/EEPROMs.
- PWM: Timer0 (8-bit): OC0A (PB2/Pin5), OC0B (PA7/Pin6). Timer1 (16-bit): OC1A (PA6/Pin7), OC1B (PA5/Pin8). 4 canales PWM totales.
- ADC: 10-bit, 8 canales (PA0-PA7 / Pin 14,13,12,10,9,8,7,6). Referencias: VCC, 1.1 V interno, AREF (PA0). 15 ksps máx.
- Clock: Interno 8 MHz (calibrado ±10% / ±1% @ 25°C), externo cristal/oscilador (PB0/PB1), externo clock (PB0). Fuse CKSEL selecciona fuente.
Características y Especificaciones
- CPU: AVR 8-bit RISC, 1 MIPS/MHz, 20 MHz máx (VCC ≥ 4.5 V), 12 MHz @ 2.7 V, 4 MHz @ 1.8 V.
- Memoria: 8 KB Flash (4K instrucciones), 512 B SRAM, 512 B EEPROM.
- Periféricos: 12 I/O, ADC 10-bit 8ch, 2 Timers (8/16-bit), 4 PWM, USI (SPI/I2C), Comparador analógico, WDT, BOD, Temp sensor, DebugWIRE (1-pin).
- Alimentación: 1.8 – 5.5 V (picoPower).
- Consumo: Active: 200 µA/MHz @ 1.8 V. Power-down: < 0.1 µA @ 1.8 V (WDT off).
- Temperatura: -40 °C a +85 °C (Industrial).
- Encapsulados: SOIC-14, DIP-14, TSSOP-14, QFN-20 (este añade 2 GND, 2 VCC, ADC6/7 dedicados).
Alternativas y Chips Relacionados
| Chip | Pines | Flash | SRAM | I/O | ADC | PWM | Comms | Nota |
|---|---|---|---|---|---|---|---|---|
| ATtiny84 | 14 | 8 KB | 512 B | 12 | 8 ch | 4 | USI (SPI/I2C) | Referencia |
| ATtiny84A | 14 | 8 KB | 512 B | 12 | 8 ch | 4 | USI | Proceso mejorado, menor consumo |
| ATtiny44/24 | 14 | 4/2 KB | 256/128 B | 12 | 8 ch | 4 | USI | Menor memoria, mismo pinout |
| ATtiny841 | 14 | 8 KB | 512 B | 12 | 8 ch | 4 | USI + UART | ¡UART hardware real! |
| ATtiny88 | 28/32 | 8 KB | 512 B | 24/28 | 10 ch | 6 | SPI+I2C+UART | Más I/O, encapsulado mayor |
| ATtiny1616/1617 (0/1-series) | 14/20/24 | 16 KB | 2 KB | 12/18/22 | 8-12 ch | 5-6 | SPI+I2C+UART | Nueva arquitectura (AVR-Dx), UPDI, DAC, OpAmp, 32 MHz, < $0.50. Recomendado para nuevos diseños. |
| ATmega328P | 28/32 | 32 KB | 2 KB | 23 | 6 ch | 6 | SPI+I2C+UART | Si necesita más memoria/periféricos |
Programación del ATtiny84 con Arduino como ISP (Guía Paso a Paso)
Hardware Requerido
- Arduino Uno / Nano / Pro Mini (como programador ISP)
- ATtiny84 (DIP-14 o SOIC-14 en adaptador)
- Protoboard, cables jumper
- Condensador 10 µF (electrolítico) entre RESET y GND del Arduino programador (evita auto-reset)
- Opcional: LED + 220 Ω en PA0 (Pin 14) para test Blink
Configuración Arduino IDE (1.8.x / 2.x)
- Instalar soporte de placas ATtiny: Archivo → Preferencias → URLs Gestor de Tarjetas Adicionales añada:
https://raw.githubusercontent.com/damellis/attiny/ide-1.6.x-boards-manager/package_damellis_attiny_index.json(clásico) o mejor SpenceKonde/ATTinyCore (moderno, completo):https://raw.githubusercontent.com/SpenceKonde/ATTinyCore/master/package_attyinycore_index.json - Herramientas → Placa → Gestor de Tarjetas → Buscar "ATtiny" → Instalar ATTinyCore (por Spence Konde).
- Seleccionar: Placa: "ATtiny24/44/84 (No bootloader)" → Chip: "ATtiny84" → Clock: "8 MHz (Internal)" (o 1 MHz por defecto) → Programmer: "Arduino as ISP".
Conexiones (Arduino ISP → ATtiny84)
| Arduino Pin | ATtiny84 Pin | Función |
|---|---|---|
| 10 (SS) | 4 (PB3/RESET) | Reset programación |
| 11 (MOSI) | 7 (PA6/MOSI/DO) | MOSI |
| 12 (MISO) | 8 (PA5/MISO/DI) | MISO |
| 13 (SCK) | 9 (PA4/SCK/USCK) | SCK |
| 5V / 3.3V | 1 (VCC) | Alimentación |
| GND | 11 (GND) | Tierra |
Importante: Conecte 10 µF (polaridad: + a RESET, - a GND) en Arduino programador después subir sketch "ArduinoISP" y antes** de "Burn Bootloader" / subir sketch.
Pasos de Programación
- Suba sketch Ejemplos → 11.ArduinoISP → ArduinoISP al Arduino programador.
- Conecte condensador 10 µF RESET-GND en Arduino programador.
- Cablee ATtiny84 según tabla anterior.
- Herramientas → Quemar Bootloader (configura fuses: clock 8 MHz interno, BOD 2.7 V, SPIEN on, RSTDISBL off). No sube bootloader (no hay), solo configura fuses.
- Escriba su sketch (ej. Blink en Pin 0 / PA0):
pinMode(0, OUTPUT); digitalWrite(0, HIGH); delay(500); digitalWrite(0, LOW); delay(500); - Programador → Subir usando programador (Ctrl+Shift+U).
- Verifique LED parpadea en Pin 14 (PA0).
Código Blink Mínimo para ATtiny84 (Pin PA0 = Arduino Pin 0)
void setup() {
pinMode(0, OUTPUT); // PA0 = Pin 14
}
void loop() {
digitalWrite(0, HIGH);
delay(500);
digitalWrite(0, LOW);
delay(500);
}
Consejos Avanzados y Trucos
- Clock 1 MHz vs 8 MHz: Por defecto fuse CKDIV8=0 → 8 MHz / 8 = 1 MHz. Para 8 MHz: quite CKDIV8 (Burn Bootloader con Clock 8 MHz) o use
clock_prescale_set(clock_div_1);en setup (requiere<avr/power.h>). - Sleep modes: Use
set_sleep_mode(SLEEP_MODE_PWR_DOWN); sleep_enable(); sleep_cpu();para µA. Despierte por Watchdog, Pin Change Interrupt (PCINT en cualquier pin), o INT0 (PB2). - PCINT (Pin Change Interrupt): 12 pines = 3 vectores (PCINT0: PA0-PA7, PCINT1: PB0-PB3). Librería
EnableInterruptoPinChangeInterruptsimplifica. - I2C Slave: Use librería
TinyWireS(ATtinyCore la incluye). Pines: PA6=SDA, PA4=SCL. - UART Software:
SoftwareSerialfunciona en cualquier par pines (ej. PB0/PB1). Para UART hardware real → ATtiny841 / 0/1-series. - Depuración: Sin UART hardware, use LED parpadeo, o SoftwareSerial a USB-Serial para printf debugging. DebugWIRE (Pin RESET) requiere Atmel-ICE / AVR Dragon.
Conclusión
El ATtiny84 es el "pequeño gigante" de los AVR tiny: 14 pines, 12 I/O, ADC 8ch, 4 PWM, USI, 8 KB Flash, consumo picoPower, encapsulado DIP/SOIC manejable. Perfecto para nodos sensor batería, wearables, controladores LED direccionables, reemplazo de lógica 74xx, y proyectos Arduino que no caben en ATtiny85 (6 I/O). Para nuevos diseños, evalúe la serie 0/1 (ATtiny1616/1617/3217...): misma huella (QFN-14/20/24), 16-32 KB Flash, 2 KB SRAM, UART/SPI/I2C hardware, DAC, OpAmp, 32 MHz, UPDI (1 pin prog), y menor coste. Pero el ATtiny84 sigue siendo rey en ecosistema Arduino maduro, librerías probadas, y disponibilidad DIP para protoboard. Domine sus fuses, sleep modes, y USI para proyectos ultra-bajo-consumio y ultra-compactos.
Tecnología Industrial
- Técnicas de Acoplamiento de Entrada y Salida para Amplificadores: Métodos Capacitivos, Directos y con Transformador
- Manufactura 2024: Desafíos, Oportunidades y el Camino a Seguir
- Día de la Manufactura: Evolución, impacto y exhibición de la industria
- Madera transparente e innovaciones neutras en carbono: el futuro de los materiales sostenibles
- Microfusión explicada: historia, proceso y técnicas modernas
- Arduino Explicado: Qué Es y Cómo Programarlo
- Mantenimiento Basado en Condición: Cómo Funciona y sus Beneficios
- Fabricación Inteligente: Definición, Beneficios e Implementación
- Sensor Ultrasónico HC-SR04: Funcionamiento y Aplicaciones Clave
- Sensor Láser de Distancia VL53L0X: Pinout, Circuito, Especificaciones y Aplicaciones Prácticas
- Dominando Entrada y Salida en programación C