ATtiny85. Come posso masterizzare un bootloader? Qual è il processo?


8

Voglio usare tutti e sei i pin I / O di un ATtiny85, ciò significa anche usare il pin di reset come pin I / O, tuttavia, ho scoperto che se disabilito il pin RESET, non posso più programmare ATtiny usando un Programmatore ISP.

Tuttavia, ho scoperto che ci sono bootloader per ATtiny che, per quanto ho capito, mi permettono di programmare ATtiny tramite USB, senza la necessità del pin RESET.

La mia domanda è : come posso masterizzare un tale bootloader (come ad esempio il micronucleo ) su ATtiny85? E come devo collegare l'ATtiny a USB dopo (come questo? )? Come lo programmo dopo? Tieni presente che in termini di masterizzazione di bootloader e modifica dei fusibili, sono un principiante completo.

Inoltre, sto usando lo sketch ArduinoISP come mio programmatore ISP poiché non ho un vero programmatore ISP, ma per quanto leggo, non sarà un problema.

EDIT: Ho questa cosa che ho comprato per un paio di dollari su eBay, che non so come e se devo usare: inserisci qui la descrizione dell'immagine


Masterizzare un bootloader equivale a masterizzare qualsiasi altro programma. Ma se ne trovi uno difettoso e cambi il fusibile di ripristino, rimarrai bloccato fino a quando non otterrai un altro chip o un programmatore ad alta tensione. Quindi ti consiglio di provare il tuo bootloader USB prima di cambiare il fusibile. Il codice software-USB viene probabilmente fornito con una raccomandazione per un circuito per approssimare l'interfaccia elettrica USB.
Chris Stratton,

Risposte:


1

Ho appena finito il mio plug-in Arduino con la piena integrazione di TinySafeBoot (TSB) per ATtiny84A, ATtiny85 e ATmega328P.

Il progetto può essere trovato qui:
https://mesom.de/atflash/index_english.html https://mesom.de/atflash/tinysafeboot/index_english.html

Potresti usarlo così com'è ora, quindi utilizzare il pin di reset come ingresso analogico. Cerca solo che la tensione non scenda mai sotto 0.6 * VCC.

In alternativa è possibile modificare i fusibili per boards.txtrendere disponibile questo pin:
Vai su Preferenze di Arduino e fai clic sul collegamento a preferences.txt(Mio:) /Users/stefan/Library/Arduino15/preferences.txt. In questa cartella vai a /packages/atflash/hardware/avr/0.1.0. Apri il boards.txte vai alla sezione
ATTSB85.name=ATtiny85 (TSB)(Int. 8 MHz)

Cambia la linea
ATTSB85.bootloader.high_fuses=0xdf
in
ATTSB85.bootloader.high_fuses=0x5f

Riavvia Arduino e masterizza il bootloader tramite il menu Arduino.


Se anche allora vuoi ottenere un altro Pin da ATtiny85: puoi cambiare il bootloader per usare un solo Pin per RX e TX (vedi il sito web TSB). Ma perché tutto lo sforzo? Prendi semplicemente ATtiny84A. Ha 14 pin invece di 8 e costa quasi lo stesso.

Stefan


2
  • Sì, ci sono interfacce USB per ATtiny85. Basta guardare uno dei progetti hardware aperti là fuori, ad esempio Digispark .
  • Un'interfaccia USB richiederà due pin, quindi l'utilizzo di uno per salvare un pin non mi sembra conveniente.
  • Sono d'accordo con @FAD, sul fatto che non hai davvero bisogno di uno stack USB e che semplicemente potresti fare una cosa di ritardo all'avvio con i pin UART.
  • HVSP (la programmazione ad alta tensione) non è difficile da fare. Se hai già dimestichezza con ArduinoISP, puoi provare ScratchMonkey , che utilizza lo stesso approccio (con un alimentatore a 12V e un transistor) per eseguire la programmazione HVSP.

L'interfaccia USB può essere chiusa, ad es. Con un ponticello, quando non è in programmazione, oppure può essere utilizzata per non interferire con la programmazione. La riprogrammazione viene normalmente eseguita immediatamente dopo un ripristino.
AMADANON Inc.,

1

È vero, se usi il pin di reset come IO allora hai bisogno di un programmatore speciale che credo fornisca alta tensione (12v se ricordo) o qualcosa del genereapplicare una sorgente 12v a quel pin per forzarlo in modalità di programmazione, quindi programmare usando un normale programmatore (o un altro arduino). Tuttavia, ciò che stai cercando è qualcosa di simile a ciò che viene fatto in Arduino. L'arduino è programmato con uno speciale bootloader tramite ISP, quindi quando si alimenta il microcontrollore quel bootloader verrà eseguito per primo e per alcuni millisecondi controllerà le attività dei pin UART e se vede qualcosa di valido si passa alla modalità di programmazione in cui attende il nuovo codice passare attraverso UART (non ISP) e scriverlo nella posizione del programma, altrimenti il ​​bootloader passerà semplicemente l'esecuzione del codice al programma esistente se presente.

Ecco una semplice spiegazione di come funziona: supponiamo che la dimensione del flash del microcontrollore sia 1 KB e che il bootloader sia 100 B, quindi il programma può essere memorizzato nella posizione 101 B + e la sua dimensione massima è (1 KB-100 B). Quindi quando il bootloader si avvia e non c'è attività sui pin UART salta nella posizione del programma (a 101B) mentre se viene rilevata un'attività di programmazione inizia a leggere il nuovo codice e sovrascrive il flash a partire da 101B (quindi ha vinto ' t over scrivere se stesso).

E avrai bisogno di USBASP per programmare il bootloader per la prima volta. E non programmate ATtiny85 tramite USB poiché quel chip non supporta USB, tuttavia, utilizzate un chip / modulo da USB a seriale che emula il protocollo seriale su USB. Alcuni microcontrollori Atmel hanno un supporto seriale integrato e altri possono essere eseguiti tramite emulazione software.

  • E come ha suggerito Chris, non disabilitare il pin di ripristino fino a quando non si verifica e si convalida che il bootloader funzioni.


@ IgnacioVazquez-Abrams, è fantastico, e ci sono bootloader implementati già con esso. Le mie informazioni erano un po 'vecchie allora :). tuttavia, è ancora lo stesso concetto ma comunicazione diretta con PC invece di emulazione seriale-USB. Grazie

Puoi anche masterizzare un bootloader su un ATtiny tramite un Arduino (UNO o equiv). Ecco alcune istruzioni: highlowtech.org/?p=1695 o se preferisci un video: youtube.com/watch?v=qz-YMPY4_z0
Sourcery

Ecco una bella pagina sulla programmazione di ATtiny4 5 9 10 20 e 40 usando SPI da un Arduino quindi non è ATtiny85 ma ho pensato che fosse correlato. Inoltre una cosa che il blog menziona è che se usi il pin di reset come I / O tutto ciò di cui hai bisogno è una sorgente 12v per attivare la modalità di programmazione e puoi ancora programmarla allo stesso modo, quindi nessun programmatore speciale come pensavo prima. junkplusarduino.blogspot.com/p/attiny10-resources.html
Fahad Alduraibi

@AD, il 4/5/9/10 sono animali completamente diversi da ATtiny85. È vero che parlano lo stesso protocollo di programmazione (TPI) per la programmazione ad alta tensione e tensione normale, ma questo NON è assolutamente vero per qualsiasi altro microcontrollore ATxxx.
microtherion,

0

Ho questa cosa che ho comprato per un paio di dollari su eBay, che non so come e se devo usare:

è infinitamente migliore del tuo arduinoisp.

google avrdude / avrdudess.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.