¿Es posible programar microcontroladores AVR utilizando un convertidor USB-UART en lugar de USBasp?

¿Es posible programar un microcontrolador AVR (por ejemplo, Atmega328P) usando un convertidor USB-UART como este:

Convertidor USB-UART

En lugar de un programador ISP USBasp habitual:

Programador ISP USBasp

?

En caso afirmativo, ¿el procedimiento es el mismo que en el caso del programador USBasp o se requieren algunos pasos adicionales?

, pero es muy lento.

Respuestas (1)

Los microcontroladores AVR se programan utilizando la interfaz ISP (Programación en el sistema) o JTAG (Grupo de acción de prueba conjunta, que es un estándar IEEE para la programación y depuración en el sistema de microcontroladores, FPGA, ...). AVR ISP utiliza un SPI (interfaz periférica en serie) de tres hilos para comunicarse con el microcontrolador y, además, debe poder controlar el pin de reinicio. SPI y UART son muy diferentes (SPI es síncrono mientras que UART es asíncrono), por lo que no puede usar un simple convertidor de USB a UART para programar su microcontrolador

Una alternativa a esto es el uso de un gestor de arranque. El gestor de arranque es una parte del software de su microcontrolador que permite la programación a través de, por ejemplo, USB o UART. El problema es que debe programar el cargador de arranque usando ISP o JTAG antes de poder usarlo. Muchas placas de evaluación vienen con cargadores de arranque preinstalados para permitir la programación a través de USB.

Si puede encontrar a alguien con un programador de ISP, podría programar un cargador de arranque y luego puede usar el convertidor de USB a serie. De lo contrario, tendrá que comprar/construir un programador ISP o cambiar a un controlador o placa de evaluación con un gestor de arranque preinstalado.

¿Pero el ISP no se hace usando una simple comunicación en serie? Básicamente hay 3 líneas: MISO, MOSI y SCLK. ¿No puede ser emulado por las líneas TX y RX de UART? Sin embargo, ahora veo que todavía hay una línea de reloj necesaria que está ausente en UART ...
Como UART es asíncrono y el ISP (usando el protocolo SPI) es síncrono, esto no es posible. Además, el programador debe poder controlar el pin de reinicio. También agregué esto a mi respuesta.