¿Cuál es una manera fácil de programar un microcontrolador ATtiny en C sin un ISP?

Entiendo que el método "más crudo" para programar un microcontrolador AVR es probablemente con un ISP como AVRISP mkII.

Sin embargo, busco un método que no me implique tener que comprar una herramienta de $40 para un proyecto único.

Tengo a mi disposición una computadora, un Arduino Uno y una Raspberry Pi.

No estoy realmente interesado en usar Arduino IDE y escribir bocetos. Quiero llegar al código de bajo nivel que es posible en C, preferiblemente usando un IDE como Atmel Studio.

Según tengo entendido, Arduino Uno tiene un ATmega16U2 que se conecta a una computadora a través de USB, que se usa para programar el ATmega328P.

¿Está el ATmega16U2 actuando como un ISP aquí? Si es así, ¿puedo usarlo para programar el ATtiny? Revisé el esquema y muestra que el mega16u2 tiene un encabezado ICSP, pero está conectado al mega328 a través de líneas TX/RX.

Será mejor que compre una store.atmel.com/PartDetail.aspx?q=p:10500053#tc:description . Agradéceme después.
El clon UsbAsp se puede obtener de eBay por 5 $ más o menos si no desea conectar Arduino como programador cada vez.

Respuestas (3)

  • ¿Está el ATmega16U2 actuando como un ISP aquí?

No, ese chip está actuando como un adaptador USB -> RS232 TTL. El chip 328P tiene instalado un cargador de arranque en serie que acepta comandos a través de RS232 para programar el chip.

Puede instalar el boceto ArduinoISP en el Arduino (incluido con el IDE de Arduino), que luego convierte el Arduino en un ISP que se puede controlar a través de AvrDude (programa de línea de comandos) para programar el ATTiny a través del ISP.

Hay muchos tutoriales y ejemplos en los foros y juegos de Arduino.

"RS232 TTL" se contradicen entre sí. RS232 es explícitamente un UART que tiene +/- 15 V. TTL UART es probablemente lo que quiere decir.
Impresionante. Ligeramente OT, pero ¿el 16u2 ha sido programado con un ISP o algo antes de ser enviado? Además, si el cargador de arranque del chip 328P se borra manualmente, ¿significa esto que el Arduino no podrá cargar bocetos de la manera normal, a menos que use un ISP para recargar el cargador de arranque?
@glglgl RS-232 se usa en esta situación junto con TTL (como se usa en todas partes ) para definir un sistema RS-232 que usa niveles de voltaje TTL. UART no es RS-232, pero puede generar señales con tiempos RS-232. La "U" significa "Universal". Ah, y los pedantes no son apreciados por aquí.
@ tgun926 Sí y sí.
@Majenko "Ah, y los pedantes no son apreciados por aquí". Eso es lo que tu dices. En el desarrollo de las cosas, es importante ser preciso.
RS232 TTL es una frase comúnmente utilizada para describir RS232 usando niveles de señal TTL. Es distinto de RS232 sin el TTL especificado. Otras frases comunes son TTL-232, serie TTL, etc. Ninguna es 100% perfecta porque no existe una designación oficial para ello. Y de todos modos, es EIA-232, NO RS-232 :P Mira, ¡puedo ser igual de pedante!

Tanto Arduino como Raspberry Pi se pueden conectar como un programador ISP con AVRDUDE .

Puede usar un encabezado de 10 pines de 5x2 y conectar su propio programador, como este:

ingrese la descripción de la imagen aquí

Eso fue tomado del tutorial de Sparkfun sobre programación de microcontroladores . Todo el tutorial se trata de obtener código en un microcontrolador. El microcontrolador utilizado es un AVRMega, pero lo mismo se aplica a un Tiny.

Use el programador de puerto serie , con hardware de soporte, debería costar mucho menos de $ 40.

Este programador será específico para los AVR, por lo que ese "proyecto único" no es del todo cierto para esta pieza de hardware.

Así es como obtienes físicamente el código en el tablero. También hay varias formas de compilar y cargar el código, utilizando cualquiera de sus editores favoritos, archivos MAKE y similares.