Este tutorial muestra como programar un microcontrolador Attiny45 o un ATtiny85 utilizando una placa Arduino y el entorno de programación Arduino. El ATtiny45 y el ATtiny85 son unos microprocesadores pequeños (8-patas) y muy económicos, pudiendo reemplazar a todo un arduino en su trabajo. Físicamente son iguales pero al Ttiny85 tiene el doble de memoria que el ATtiny45 y por lo tanto podemos utilizar programas más complejos.
Materiales y Software
- Arduino Uno, Duemilanove o Nano (con un ATmega328, no son válidos las placas con ATmega168).
- ATtiny45 o ATtiny85 (encapsulado 8-patillas)
- Un condensador de 10 uF.
- Una placa de prototipado (breadboard-protoboard).
- Cables de conexionado.
- IDE Arduino.
El microcontrolador ATtiny45 / ATtiny85
Instalando en Arduino el soporte para ATtiny45 / ATtiny85
- Descarga: attiny45_85.zip
- Busca la carpeta de Arduino “sketchbook” (puedes encontrar su situación en el diálogo de preferencias del entorno de programación Arduino)
- Crea una nueva subcarpeta llamada «hardware» en la carpeta “sketchbook”.
- Copia la carpeta attiny45_85 de attiny45_85.zip a la carpeta “hardware”.
- Reinicia el entorno de programación Arduino.
Transformando la placa de Arduino en un programador
Ahora utilizaremos la placa Arduino para programar el ATtiny45 o ATtiny85. Primero necesitaremos convertir la placa Arduino en un programador ISP ( «In-System Programmer»).
Para ello:
- Arranca el entorno de programación Arduino.
- Abre el sketch “ArduinoISP” del menú de ejemplos (examples).
- Selecciona la placa y el puerto serie que corresponden a tu placa Arduino.
- Carga el sketch “ArduinoISP”.
Conexionado entre Arduino y ATtiny
Conectar la placa Arduino al ATtiny tal como se indica en el siguiente diagrama.
Conexionado de las patillas:
- ATtiny Pin 7 (D2) a Arduino D13 (SCK)
- ATtiny Pin 6 (D1) a Arduino D12 (MISO)
- ATtiny Pin 5 (D0) a Arduino D11 (MOSI)
- ATtiny Pin 1 (Reset-D5) a Arduino D10
Programando el ATtiny45 o ATtiny85
Ahora vamos a utilizar el Arduino como un programador ISP para cargar un programa BLINK al ATtiny45/85:
- Colocamos el ATtiny en nuestro Programador «Arduino as ISP».
- Abrimos el sketch “Blink” desde el menú de ejemplos (examples).
- Cambiamos los números de pin de 13 a 0. (PIN del ATtiny es el n°5 que corresponde al PIN Digital 0).
- Seleccionamos «ATtiny45 (w/ Arduino as ISP)» o «ATtiny85 (w/ Arduino as ISP)» en el menú Herramientas/Placa (Tools > Board) (Indicando previamente el puerto serie al que está conectada la placa Arduino).
- Cargamos el sketch.
- Retiramos el ATtiny para colocarlo en nuestro proyecto (en un breadboard o protoboard).
Es probable que en la programación aparezca el siguiente mensaje, pero no hay que preocuparse la programación debería haberse efectuado correctamente:
avrdude: please define PAGEL and BS2 signals in the configuration file for part ATtiny85 avrdude: please define PAGEL and BS2 signals in the configuration file for part ATtiny85
Realizamos el código corresponidente prestando atención a los pines que utilizaremos en el ATtiny.
void setup() { pinMode(0, OUTPUT); } void loop() { digitalWrite(0, HIGH); delay(1000); // Wait for 1000 millisecond(s) digitalWrite(0, LOW); delay(1000); // Wait for 1000 millisecond(s) }
Ahora, conectamos el LED y comprobamos que parpadea suministrando la tensión correspondiente.
Referencia
Los siguientes comandos de Arduino deberían funcionar correctamente:
- pinMode()
- digitalWrite()
- digitalRead()
- analogRead()
- analogWrite()
- shiftOut()
- pulseIn()
- millis()
- micros()
- delay()
- delayMicroseconds()
NOTA: Estos comandos son los específicos de Arduino (dependen de la velocidad del micro, interrupciones, registros específicos…) , desde luego los comandos standard del lenguaje de programación «C» : «if»‚ «case» y similares también funcionan.
Toda esta información esta basada en varios sitios de internet, la mayor parte de «http://highlowtech.org/?p=1229» y mi experiencia personal. Todo esto funciona perfecto. Hé creado varios proyectos y hay muchos funcionando gracias a este programador de ATtiny.