En esta ocasión retomaremos un tema de los inicios del blog. Ya ha pasado mucho tiempo (más de tres años) desde que Dash ("Shingo") Bandit salvó el día con su ayuda para armar un programador USB para microcontroladores AVR.
Recientemente Dash ha tenido la inquietud de hacer una consola minimalista de videojuegos basada en AVR, tomando como base los proyectos de AVGA. Se trata de un proyecto bastante ambicioso, ya que requiere de mucho tiempo de investigación y de experimentación. De cierta forma me sentí identificado, pues recuerdo que para ensamblar el adaptador de controles de SNES a USB tuve que lidiar con varios obstáculos.
El primero de esos obstáculos fue conseguir un programador fiable de microcontroladores. Sin el programador es muy dificil avanzar, pues además de la obvia limitante de no poder armar los proyectos, también se restringe de forma importante la capacidad de incrementar la destreza y el conocimiento en el manejo de microcontroladores.
Por ese motivo decidí regalar a mi amigo el programador USBtinyISP que empleé en el desarrollo de todos los proyectos que hay en el blog hasta la fecha.
Hasta hace poco no resentí la falta del programador, pues había dejado un poco de lado la programación de microcontroladores. Sin embargo hace unos días tuve la inquietud de refinar unos programas. Traté de utilizar un programador USBasp "hechizo" que conseguí hace tiempo por internet, pero se presentaron varios errores al tratar de programar unos ATTINY25.
Por fortuna conservé un ATTINY2313 programado con el firmware del USBtinyISP, por lo que pude salir del apuro montando todo el proyecto en protoboard.
Con esa experiencia me quedó la lección de tener siempre un respaldo de las cosas que nos suelen ser de utilidad cotidiana. Decidí montar dos USBtinyISP, uno para el uso cotidiano y otro de reserva en caso de emergencia.
Sin embargo surgió una nueva dificultad, pues agoté mi stock de microcontroladores ATTINY2313. Además, como es costumbre, han incrementado su precio de forma importante en estos meses. Por fortuna tenía varios ATMEGA48, por lo que decidí utilizarlos para portar el firmware del USBtinyISP a esos dispositivos.
Aunado a lo anterior, la versión más reciente de la biblioteca V-USB admite la frecuencia de 12.8 [MHz] utilizando el oscilador RC incluído en todos los AVR. Gracias a esa mejora en la biblioteca es posible prescindir del cristal y los capacitores de resonancia.
Así que, después de varias pruebas exitosas he decidido publicar esta variante del USBtinyISP. Debido a que emplea la versión más reciente de la biblioteca V-USB, se puede adaptar fácilmente a cualquier otro dispositivo de la familia AVR.
USBmegaISP (archivo binario, código fuente, diagrama y lista de partes).
Diagrama esquemático. |
- C1 0.1uF cerámico
- C2 10uF electrolítico
- D1 3V6 diodo zener (3.6 [V])
- D2 3V6 diodo zener (3.6 [V])
- IC1 ATMEGA48 (20MHz)
- ISP 10 pin header
- LED1
- LED2
- R1 68R
- R2 68R
- R3 10K
- R4 220R
- R5 1.5K
- R6 1.5K
- R7 220R
- R8 1.5K
- USB Conector hembra.
Espero que les sea de utilidad, estamos en contact!