ATtiny85. ¿Cómo quemo un gestor de arranque? Cual es el proceso


8

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: ingrese la descripción de la imagen aquí


Grabar un gestor de arranque es lo mismo que grabar cualquier otro programa. Pero, si obtiene uno malo allí y cambia el fusible de reinicio, se quedará con él hasta que obtenga otro chip o un programador de alto voltaje. Por lo tanto, le recomiendo que pruebe su cargador de arranque USB antes de cambiar el fusible. Su código USB de software probablemente viene con una recomendación para un circuito para aproximar la interfaz eléctrica USB.
Chris Stratton

Respuestas:


1

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.txtpara 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 el boards.txty ve a la sección
ATTSB85.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


2
  • Sí, hay interfaces USB para ATtiny85. Basta con mirar uno de los diseños de hardware abierto, por ejemplo, Digispark .
  • Una interfaz USB requerirá dos pines, por lo que usar uno para guardar un pin no me parece rentable.
  • Estoy de acuerdo con @FAD, que realmente no necesita una pila USB, y simplemente podría hacer una cosa de retraso de tiempo en el arranque con los pines UART.
  • HVSP (la programación de alto voltaje) no es difícil de hacer. Si ya se siente cómodo con ArduinoISP, puede probar ScratchMonkey , que utiliza el mismo enfoque (con una fuente de alimentación de 12V y un transistor) para hacer la programación HVSP.

La interfaz USB se puede apagar, por ejemplo, con un puente cuando no se está programando, o se puede usar para que no interfiera con la programación. La reprogramación normalmente se realiza inmediatamente después de un reinicio.
AMADANON Inc.

1

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.

  • Y como Chris sugirió, no desactive el pin de reinicio hasta que pruebe y valide que su gestor de arranque funciona.


@ IgnacioVazquez-Abrams, eso es genial, y ya hay gestores de arranque implementados con él. Mi información era algo antigua entonces :). Sin embargo, sigue siendo el mismo concepto, pero la comunicación directa con la PC en lugar de la emulación en serie USB. Gracias

También puede grabar un cargador de arranque en un ATtiny a través de un Arduino (UNO o equiv). Aquí hay algunas instrucciones: highlowtech.org/?p=1695 o si prefiere un video: youtube.com/watch?v=qz-YMPY4_z0
Fuente

Aquí hay una buena página sobre la programación de ATtiny4 5 9 10 20 y 40 usando SPI desde un Arduino, por lo que no es ATtiny85 pero pensé que está relacionado. También una cosa que menciona el blog es que si usa el pin de reinicio como E / S, todo lo que necesita es una fuente de 12v para activar el modo de programación y aún puede programarlo de la misma manera, por lo que no hay un programador especial como pensé antes. junkplusarduino.blogspot.com/p/attiny10-resources.html
Fahad Alduraibi

@FAD, el 4/5/9/10 son bestias completamente diferentes del ATtiny85. Es cierto que hablan el mismo protocolo de programación (TPI) para programación de alto voltaje y voltaje regular, pero eso NO es cierto para ningún otro microcontrolador ATxxx.
microtherion

0

Tengo esta cosa que compré por un par de dólares en eBay, que no sé cómo y si necesito usar:

es infinitamente mejor que tu arduinoisp.

google avrdude / avrdudess.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.