come si setta il fuse al Tiny85?

Salve a tutti, volevo domandare come si fa a settare il fuse al Tiny85, cosa serve? Io ho anche un Arduino uno r. 3

grazie

I bit fuse (“fusibili”) sono registri normalmente non scrivibili dall’utente o dal software ma modificabili solo esternamente da un programmatore (intendo uno strumento programmatore).
Ogni MCU Atmel ne ha 2 o 3, a seconda del chip, e regolano alcune funzioni base del micro stesso come la fonte del clock, l’abilitazione o meno della programmazio SPI, ecc…

Ti rimando a questo mio articolo che li spiega un pò in dettaglio.
Per programmarli, ti serve uno dei tuoi Arduino da usare come programmatore ed un programma come Avrdudess o AVRfuses (a seconda del SO che stai usando). Devi poi scaricare un core addizionale da aggiungere a quello dell’IDE standard di Arduino altrimenti non puoi “vedere” dall’IDE i chip che non sono quelli canonici montati sulle schede ufficiali (nel sito che ti ho linkato trovi anche i pacchetti per IDE 1.0.x e 1.5.x per aggiungere il supporto all’IDE).

Ah, se la domanda è riferita al problema dell'Iteaduino Tiny dell'altro thread, se vuoi disattivare il reset, devi lavorare sul bit RSTDISBL. ;)

leo72: Ah, se la domanda è riferita al problema dell'Iteaduino Tiny dell'altro thread, se vuoi disattivare il reset, devi lavorare sul bit RSTDISBL. ;)

Rammento che se il pin reset viene settato come GPIO poi è impossibile programmare il micro tramite ISP o bootoloader di Arduino, con quest'ultimo una scappatoia ci sarebbe prevedendo un reset software tramite watchdog, però sarebbe molto difficile sincronizzare la cosa con l'IDE o avrdude.

Gliel'ho già detto anch'io nell'altro thread, ma ovviamente repetita juvant ;)

Ah ecco chi è leo72, complimenti i tuoi articoli gia li stavo seguendo sono molto interessanti, per il bit fuse era una curiosità che volevo approfondire e adesso mi vado a leggere il tuo articolo, ma dico una cazzata... è possibile prima programmare il chip e poi settare il bit? Altra domanda, ho visto che in altri articoli si parla di una reversibilità del bit fuse, è vero?

Trattandosi del pin di reset, DEVI prima programmare il chip e poi cambiarlo. Anzi, la disattivazione del reset deve essere l'ultima cosa che fai. Quando sei sicuro al 200% che lo sketch ti funziona come deve, perché una volta disattivato il resert non programmi più il chippino.

minosat: ma dico una cazzata... è possibile prima programmare il chip e poi settare il bit?

Puoi sia settare i fuse contestualmente alla programmazione sia farlo dopo aver programmato il chip, dipende anche da che tool usi per farlo.

Altra domanda, ho visto che in altri articoli si parla di una reversibilità del bit fuse, è vero?

I fuse possono essere cancellati, però se il pin reset non è disponibile non puoi farlo tramite ISP in quanto quel segnale è indispensabile per gestire l'operazione. Se il pin reset è settato come GPIO è indispensabile ricorrere al programmatore HV che consente di ripristinare i fuse grazie al fatto che per entrare in modalità di programmazione applica una tensione di circa 12V, come si fa con i PIC, sul pin reset che rimane comunque sensibile a questo livello di tensione.

Ok comprendido... ora siccome sono come San Tommaso e ci devo mettere il naso, se mi date qualche link con esempi pratici su come programmare questo bit fuse vi sarei molto grato, tanto piu che bruciarlo non posso, ma se non rompo non imparo, giusto? Grazie!

La cosa è semplice, vai qui: http://www.engbedded.com/fusecalc/

selezioni il chip, poi ci metti i fuse standard dell'Iteaduino Tiny (li trovi nel file boards.txt del core o dell'IDE che ti hanno fornito), poi clicchi "apply values" in modo che gli elementi grafici siano impostati per i fuse immessi. Ora, modifichi la videata mettendo lo spunto alla voce "Reset Disabled (Enable PB5 as i/o pin); [RSTDISBL=0]": nella schermata in basso noterai che il valore del fuse alto è cambiato. Quello è il valore da flashare sul chip.

Colleghi il Tiny all'Arduino come detto nella mia guida, poi apri un terminale e passi ad avrdude (il programmatore software) una riga simile a quella con cui nella mia guida mettevo il chip ad 8 MHz, solo che tu al posto del parametro -U lfuse:ecc:ecc: metterai -U hfuse:w:valore:i