Uso un Boarduino y una placa de pan de 30 filas para programar mi ATtiny. Cargué un boceto no demasiado complicado llamado ArduinoISP (incluido por defecto ahora en el IDE de Arduino), y de repente tengo un programador en funcionamiento. Atmel vende un buen programador por entre $30 y $40, y hay muchos kits para hacer otros más baratos.
Estaba muy feliz una vez que obtuve mi programador en funcionamiento e hice que el diminuto parpadeé algunos LED. Sin embargo, ahora mi pobre boarduino está atascado en tareas de 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 se necesita. (Se necesita SCK de acuerdo con la hoja de datos de ATtiny, mi programador no funciona sin él y no puedo encontrar el lugar donde pensé que leí que no era necesario).
¿Por qué necesito un programador de hardware para 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 envío y recepción 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 serial.
¿Por qué existen todas estas soluciones de hardware que también requieren un software sofisticado (como AVRdude o AVR studio, o lo que sea)?
Quiero decir que pude entender un pequeño cable USB que presentaba el microcontrolador como un dispositivo de almacenamiento masivo y le permitía arrastrar archivos binarios para programar (como esta placa de desarrollo ARM ). Solo hardware, utilizando controladores de software estándar.
También pude entender una solución solo 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 software y hardware (complicados) involucrados? Quiero decir, por lo que puedo decir, programar microcontroladores es bastante fácil, pero cuando recién me metía en esto, estaba realmente preocupado acerca de 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 que haya escrito el software o comenzado a fabricar el programador USB de arrastrar y soltar), pero como recién llegado, no tengo idea de qué se trata.
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 se le indica al procesador que escriba en la memoria flash. Una vez más, cada dispositivo es diferente.
Investigué mucho y me estoy preparando para comenzar a jugar con AVR, pero en realidad nunca usé uno, por lo 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 no ser programable usando bits de fusibles o si de alguna manera cometió algunos errores graves y necesita restablecerlo a los valores predeterminados, etc.
La mayoría de los programadores de AVR baratos solo sincronizan interfaces seriales con una línea de reinicio. Puede usar un FT232 para hacer bitbang de la interfaz periférica en serie (SPI). El FT232 está diseñado para serial asíncrono, no sincronizado, por lo que todo se hace en software.
Simplemente podría cargar un cargador de arranque como arduino que le permitiría cargar 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 olvide usar el cargador de arranque adecuado para la velocidad de su reloj y configurar los bytes de fusible correctamente.
Históricamente, muchos dispositivos programables han requerido que se programen utilizando secuencias de señales cronometradas con relativa precisión. 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 de propósito más general era algo más difícil.
Hoy en día, probablemente se podría programar más del 50% de los dispositivos programables usando 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 a 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, usar un cable de E/S simple 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 lo 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 es compatible con la programación flash bajo el control del software, este enfoque puede simplificar la producción sin agregar nada al costo del silicio más allá del tiempo marginal muy pequeño requerido para tener el programa de dispositivo de prueba de fábrica en el cargador de arranque después de haber hecho todo lo demás. .
joel b
binariosmacker