Quiero usar los seis pines de E / S de un ATtiny85, eso significa también usar el pin de reinicio como un pin de E / S, sin embargo, descubrí que si desactivo el pin RESET, ya no puedo programar el ATtiny usando un Programador ISP.
Sin embargo, descubrí que hay cargadores de arranque para ATtiny que, hasta donde yo entiendo, me permiten programar el ATtiny a través de USB, sin la necesidad del pin RESET.
Mi pregunta es : ¿Cómo grabo un cargador de arranque (como un micronúcleo, por ejemplo) en el ATtiny85? ¿Y cómo necesito conectar el ATtiny a USB después de eso (como este? )? ¿Cómo lo programo después de eso? Tenga en cuenta que en términos de quemar cargadores de arranque y modificar fusibles, soy un novato completo.
Además, estoy usando el boceto ArduinoISP como mi programador de ISP ya que no tengo un programador de ISP real, pero por lo que he leído, eso no será un problema.
EDITAR: Tengo esta cosa que compré por un par de dólares en eBay, que no sé cómo y si necesito usar:
fuente
Respuestas:
Acabo de terminar mi Arduino-Plugin con la integración completa de TinySafeBoot (TSB) para ATtiny84A, ATtiny85 y ATmega328P.
El proyecto se puede encontrar aquí:
https://mesom.de/atflash/index_english.html https://mesom.de/atflash/tinysafeboot/index_english.html
Podrías usarlo como está ahora, y luego usar el pin de reinicio como entrada analógica. Solo ten cuidado de que el voltaje nunca baje
0.6 * VCC
.Como alternativa, puede modificar los fusibles
boards.txt
para tener este pin disponible:vaya a Preferencias de Arduino y haga clic en el enlace a
preferences.txt
(Mine:)/Users/stefan/Library/Arduino15/preferences.txt
. En esta carpeta navega hasta/packages/atflash/hardware/avr/0.1.0
. Abre elboards.txt
y ve a la secciónATTSB85.name=ATtiny85 (TSB)(Int. 8 MHz)
Cambia la línea
ATTSB85.bootloader.high_fuses=0xdf
a
ATTSB85.bootloader.high_fuses=0x5f
Reinicie Arduino y grabe el gestor de arranque a través del menú Arduino.
Si incluso desea obtener otro Pin de ATtiny85: puede cambiar el gestor de arranque para usar solo un Pin para RX y TX (consulte el sitio web de TSB). ¿Pero por qué todo el esfuerzo? Simplemente tome el ATtiny84A. Tiene 14 pines en lugar de 8 y cuesta casi lo mismo.
Stefan
fuente
fuente
Es cierto, si usa el pin de reinicio como IO, entonces necesita
un programador especial que creo que proporciona alto voltaje (12v si lo recuerdo) o algo asípara aplicar una fuente de 12v a ese pin para forzarlo al modo de programación y luego programar usando un programador normal (u otro arduino). Sin embargo, lo que está buscando es algo como lo que se está haciendo en el Arduino. El arduino está programado con un gestor de arranque especial a través de ISP, por lo que cuando enciende el microcontrolador, ese gestor de arranque se ejecutará primero y durante unos milisegundos verificará los pines UART para actividades y si ve algo válido, cambia al modo de programación donde espera el nuevo código para pasar a través de UART (no ISP) y escribir eso en la ubicación del programa, de lo contrario el gestor de arranque simplemente entregará la ejecución del código al programa existente, si lo hay.Aquí hay una explicación simple de cómo funciona: Digamos que el tamaño del flash de su microcontrolador es de 1 KB, y el cargador de arranque es de 100 B, por lo que su programa puede almacenarse en la ubicación 101B +, y su tamaño máximo es (1 KB-100B). Entonces, cuando se inicia el gestor de arranque y no hay actividad en los pines UART, salta a la ubicación de su programa (en 101B), mientras que si se detecta actividad de programación, comienza a leer el nuevo código y sobrescribe el flash a partir de 101B (por lo que ganó ' t sobre escribir en sí).
Y necesitará el USBASP para programar el gestor de arranque por primera vez. Y no programa el ATtiny85 a través del usb ya que ese chip no es compatible con USB, sin embargo, utiliza un módulo / chip USB a serie que emula el protocolo en serie a través del USB. Algunos microcontroladores atmel han incorporado soporte en serie y otros se pueden hacer a través de la emulación de software.
fuente
es infinitamente mejor que tu arduinoisp.
google avrdude / avrdudess.
fuente