attiny bb web
 
Atmel ofrece una gran variedad de uControladores entre ellos se encuentra la gamma Attiny , estos pequeños microcontroladores pueden ser muy útiles a la hora de elaborar aplicaciones muy sencillas y de bajo coste además del espacio que requiere este dispositivo, otra gran ventaja que tiene este pequeñin es que tiene su propio oscilador interno, es decir que una vez programado solo necesitamos conectarlo a 5Vdc y a tierra.
Como todos sabemos la Plataforma Arduino maneja un microcontrolador especifico (Atmega 168,328 ,etc), ahora para los que estamos interesados en programar los Attiny nos limitamos mucho al lenguaje es decir que no podemos utilizar el sencillo lenguaje de Arduino y por lo tanto tendriamos que remitirnos al AVR studio que lo hace un poco mas complicado a menos que optemos por utilizar nuestro Arduino como ISP (in-system programmer), en esta entrada explicaremos como convertir nuestro Arduino UNO en un programador de ATtiny 13 usando el popular lenguaje Arduino ( una especie de C).




Componentes

4 Resistencias de 1k
1 Arduino UNO
4 Leds ( del color que prefieran idealmente serian verde, rojo y amarillo)
1 Attiny 13  datasheet


Realizar el montaje que esta en la figura de arriba, a continuacion presentamos una tabla de relacion de pines

 

pinesattiny

attiny

Una vez hecho el montaje vamos a bajar una libreria para poder incluir nuestro ATtiny en el IDE de Arduino, esta libreria la encuentran en el siguiente link https://github.com/tekstop/attiny/tree/Arduino1.
 
Al finalizar la descarga copiamos la carpeta attiny dentro de la carpeta hardware  que se encuentra dentro del directorio en donde instalamos el IDE de Arduino.

 folder

Posteriormente entramos a la carpeta attiny y abrimos el archivo boards.txt

boards

 

 Una vez hayan abierto el archivo en el recuadro rojo señalado van a encontrar la siguiente linea:
  • attiny13.build.f_cpu=9600000L

y la deben cambiar por esta:

  • attiny13.build.f_cpu=1000000L
Esto es para resolver problemas de los delays a la hora de utilizar el Attiny.
 
En algunos casos hasta aqui termina la configuración del Arduino como ISP, sin embargo  tuvimos problemas con los delays ya que al terminar de programar y quemar el attiny el led de prueba no parpadeaba sino que se quedaba en nivel alto todo el tiempo, entonces para resolver este inconveniente optamos por lo siguiente:
 
Ir a Arduino\hardware\arduino\cores\arduino

 cores

 

Editar el archivo wiring.c de la siguiente manera:

problem

Basicamente lo que se hizo fue agregar la sentencia que  esta encerrada en el rectángulo rojo, en la linea 44 de wiring.c 
 
Finalmente esto resolvió nuestro problema.


Ahora como proceder con la programacion del Attiny?

Ir hacia Arduino IDE y elegir el ejemplo llamado ArduinoISP

isp
Le damos Upload para que el programa se cargue en el microcontrolador, si la carga fue exitosa el led Verde deberia estar parpadeando y el Arduino estará listo para programar al Attiny.

Normalmente los tutoriales eligen como primer programa el blink de Arduino, pero en este caso iremos hacia un sketch de pwm ya que este tiene muchas mas aplicaciones que un simple parpadeo.

Para attiny las salidas de PWM son la 6 y la 5 ahora para el programador seran 1 y 0 (PB1 y PB0)

Por lo tanto ubicaremos un led y una resistencia a la salida de PB1.

Configuración para Attiny

Si todo quedo correctamente configurado en nuestra IDE de Arduino tenemos que poder ver los diferente controladores Attiny de Atmel.
 
nuevoattiny
 
Y posteriormente seleccionamos ATtiny 13 (internal 9.6 MHz clock)

Despues seleccionamos el tipo de programador de la siguiente manera:
 
arduinoisp
Este programador permitira que las funciones de Arduino como ISP se ejecuten de manera correcta.

Ahora si haremos nuestro sketch de pwm.
 


void setup() {
  // initialize digital pin 13 as an output.
  pinMode(1, OUTPUT);
}
 
// the loop function runs over and over again forever
void loop() {
for(int i=0;i<=255;i++){
  analogWrite(1,i);
  delay(25);
}
 
for(int j=255;j>=0;j--){
  analogWrite(1,j);
  delay(25);
}


 
Antes de quemar el programa es importante cerciorarnos de lo siguiente
 
cerciorarse
 
Que en la parte inferior derecha tengamos el micro adecuado

Bueno finalmente vamos a File-->Upload Using Programmer para quemar nuestro programa.
 
usingpro
 
Hemos terminado.

Opcional:

Normalmente se usa un capacitor de 10uF entre los pines Reset y Gnd (tener en cuenta la polaridad del capacitor) de Arduino, para evitar Reinicios en el Programa de Arduino como ISP, referirse a http://forum.arduino.cc/index.php?topic=228331.0, en este caso no ha sido necesario usarlo.



Si hay algún tipo de error con el programador el led rojo empezaría a parpadear, el led amarillo indica la comunicación entre Arduino y Attiny.

Aquí dejamos fotos y videos de un programador (feo) que hicimos pero que funcionó correctamente.

IMG 1653