Utilizo un Boarduino y una placa de pan de 30 filas para programar mi ATtiny. Cargo un boceto no demasiado complicado llamado ArduinoISP (incluido por defecto ahora en el IDE de Arduino), y de repente tengo un programador que funciona. Atmel vende un buen programador por entre $ 30 y $ 40, y hay muchos kits para hacer los más baratos.
Estaba muy feliz una vez que conseguí mi programador de trabajo e hice que el pequeño parpadeara con algunos leds. Sin embargo, ahora mi pobre boarduino está atrapado en el deber del programador.
Por lo que puedo decir, este programador mantiene presionado el botón de reinicio y luego transmite y recibe en los pines MOSI y MISO. Creo que el SCK no se usa o al menos no es necesario. (Se necesita SCK de acuerdo con la hoja de datos de ATtiny, mi programador no funciona sin él y no puedo encontrar el lugar que pensé que leí que no era necesario).
¿Por qué necesito un programador de hardware para simplemente transmitir en serie? Quiero decir, supongamos que estoy dispuesto a mantener presionado el botón de reinicio con el dedo en lugar de usar un IC. Todo lo que queda es enviar y recibir en serie, por lo que todo lo que necesito son tres cables GND, RXD y TXD. Diablos, si tengo la línea "DTR" o lo que sea, incluso puedes mantener presionado el botón de reinicio con el cable serie.
¿Por qué hay todas estas soluciones de hardware que también requieren software sofisticado (como AVRdude, AVR studio o lo que sea)?
Quiero decir que podía entender un pequeño cable USB que presentaba el microcontrolador como un dispositivo de almacenamiento masivo y le permitía arrastrar archivos binarios para la programación (como esta placa de desarrollo ARM ). Solo hardware, utilizando controladores de software estándar.
También pude entender una solución única de software (módulo que conecta los cables del USB al chip, usando algo como el chip FTDI para simplificar lo que pasa por los cables). Todo el sofisticado protocolo de programación sería manejado por software en la computadora, y el hardware sería solo algunos cables.
¿Por qué tenemos tanto software (hardware) (complicado) involucrado? Quiero decir, por lo que puedo decir, programar microcontroladores es bastante fácil, pero cuando me estaba metiendo en esto, realmente me preocupaba cómo iba a comprar un chip de Mouser o Digikey sin pagarle a un gurú para programar un gestor de arranque. para mi.
Estoy seguro de que hay una buena razón (no es como si hubiera escrito el software o empezado a fabricar el programador USB de arrastrar y soltar), pero como recién llegado, no tengo idea de qué es.
fuente
Respuestas:
Tienes razón, programar AVR es bastante fácil. Es solo un protocolo personalizado implementado sobre SPI, que se ejecuta a bajo voltaje. Se necesita SCK.
Sin embargo, la programación de PIC más antiguos (y la programación AVR no ISP) requiere altos voltajes y un protocolo personalizado diferente. Esto requiere un programador de hardware especial.
Otros dispositivos son más complejos. La mayoría de los microcontroladores ARM deben programarse a través de JTAG, aquí la memoria se escribe directamente y el procesador recibe instrucciones de escribir en la memoria flash. De nuevo, cada dispositivo es diferente.
fuente
Investigué mucho y me estoy preparando para comenzar a jugar con AVR, pero en realidad nunca usé uno, así que esto puede estar mal, pero:
La mayoría de los programadores baratos no admitirán la programación de alto voltaje AVR. Es necesario si el controlador está configurado para que no sea programable utilizando bits de fusible o si de alguna manera cometió algunos errores graves y necesita restablecerlo a los valores predeterminados, etc.
fuente
La mayoría de los programadores AVR baratos son solo sincronizar interfaces seriales con una línea de reinicio. Puede utilizar un FT232 para hacer un bitbang de la interfaz periférica en serie (SPI). El FT232 está diseñado para que la serie asíncrona no se sincronice, por lo que todo se realiza en software.
Simplemente puede cargar un gestor de arranque como arduino que le permitiría cargar el código a través de la interfaz serial asíncrona usando el ft232 en modo normal o cualquier interfaz serial asíncrona usando convertidores de nivel según sea necesario. Simplemente no olvides usar el gestor de arranque adecuado para la velocidad de tu reloj y configurar los bytes del fusible correctamente.
fuente
Históricamente, muchos dispositivos programables han requerido que se programen utilizando secuencias de señales temporizadas de forma relativamente precisa. En muchos casos, si uno solo quisiera programar un tipo particular de dispositivo, el hardware requerido habría sido bastante simple, pero dado que diferentes dispositivos tenían diferentes requisitos, construir un programador más general fue algo más difícil.
Hoy en día, uno probablemente podría programar más del 50% de los dispositivos programables utilizando nada más que un cable de E / S USB y software de PC, pero los programadores de "hardware" aún tienen una ventaja de velocidad considerable. Para que la PC reaccione a una señal recibida por un dispositivo USB y envíe una respuesta, generalmente toma un mínimo de 1-2 milisegundos. Si una secuencia de programación requiere preguntar repetidamente a un dispositivo cuándo está listo para el siguiente fragmento de datos y luego enviarlo, el uso de un simple cable de E / S agregaría uno o dos milisegundos adicionales al tiempo requerido para manejar cada fragmento. Dependiendo de la naturaleza del dispositivo en cuestión, eso podría aumentar el tiempo total requerido para la programación en un orden de magnitud en comparación con un programador al que se le podría decir, mientras espera que un dispositivo esté listo, qué debe hacer una vez que esté.
Personalmente, me gusta el enfoque de que los dispositivos equipados con flash se envíen de fábrica con un cargador de arranque en la memoria que se puede usar con un mínimo de hardware de programación. Si el dispositivo admite programación flash bajo control de software, este enfoque puede simplificar la producción sin agregar nada al costo del silicio más allá del muy pequeño tiempo marginal requerido para tener el programa de prueba de fábrica en el cargador de arranque después de haber hecho todo lo demás .
fuente