ATTiny85 non funziona dopo aver masterizzato il bootloader


8

Sto riscontrando un problema con ATTiny85. Devo dire che uso Arduino come ISP per programmarlo.

Il mio ATTiny ha funzionato bene fino a quando non ho deciso che avrei dovuto aumentare la velocità di clock da 1 MHz a 20 MHz, quindi ho selezionato ATTiny85 a 20 MHz dal menu Schede e quindi ho fatto clic su Strumenti> Masterizza Bootloader. Ma è stato stupido, dal momento che il mio ATTiny non funziona affatto. Non riesco a caricare schizzi su di esso e se provo ottengo questo messaggio:

avrdude: Yikes! Invalid device signature. Double check connections and try again, or use -F to override this check.

Quindi la mia domanda per te sarebbe, c'è un modo per ripristinare ciò che ho fatto? O ancora meglio, per farlo funzionare a 20MHz?


2
Ricordi i valori dei fusibili impostati? Potrebbe essere ancora sullo schermo se scorri verso l'alto un po '. Non è possibile impostare un ATtiny85 a 20 MHz con l'oscillatore interno, hai collegato una sorgente di clock?
jippie,

No, non ho collegato una sorgente di clock. Ho appena masterizzato il bootloader con attiny 20mhz selezionato come scheda (e, naturalmente, con l'attiny collegato all'arduino).
Calin,

Ho un altro arduino, c'è un modo per ripristinare i fusibili che lo usano?
Calin,

Perché avresti bisogno di un altro Arduino? A quanto pare hai messo in muratura il tuo ATtiny, non il tuo Arduino. L'errore nella tua domanda punta nella stessa direzione: Arduino è OK. In caso di dubbi su Arduino, scollegare tutto tranne USB, quindi programmare l' Blinkesempio. Se funziona correttamente, puoi tornare al tuo ArduinoISP (credo che sia il nome del software del programmatore che stavi utilizzando).
jippie,

2
Senza conoscere le esatte impostazioni dei fusibili utilizzate, non possiamo essere sicuri di ciò che hai effettivamente fatto. Se, in effetti, hai impostato l'orologio a 20 MHz, tutto ciò che devi fare è collegare una sorgente di clock esterna, che sia un cristallo, un risonatore o un impulso da un altro circuito, purché la sorgente di clock esterna sia 20 MHz.
Kurt E. Clothier,

Risposte:


10

Ho il sospetto che tu abbia impostato i fusibili del controller per utilizzare una sorgente di clock esterna in quanto è impossibile far funzionare l'oscillatore interno a 20MHz. Puoi dare nuova vita al tuo controller collegando un segnale di clock al pin 2 CLKIe provare a resettare l'orologio a un clock RC interno a 8 MHz.

Esiste in realtà una versione 'fissa' di ArduinoISP che ha un'uscita di clock sul pin digitale 9. Non ho testato questa uscita di clock da solo, ma vale la pena provare. Quindi oltre alle connessioni che hai già tra Arduino e ATtiny, collega il pin digitale 9 Arduino al pin 2 ATtiny85 (CLKI). Quindi provare a programmare l'orologio RC interno a 8 MHz.

Se si controlla il foglio dati capitolo 6.2 'Sorgenti di clock' per i dettagli.

Un metodo alternativo sta usando un programmatore ad alta tensione, che può essere facilmente improvvisato usando un Arduino .

A proposito: accadrà una cosa simile quando si seleziona una sorgente di clock RC <1MHz , in questo caso il clock del controller sarà troppo lento per il software ArduinoISP standard.


Grazie! Quindi ho bisogno di una fonte di alimentazione 12v per fare questo (che attualmente non ho). Vedrò cosa posso fare per improvvisare. C'è qualche problema se la fonte è un po 'più di 12v?
Calin,

@Calin Quanto stai parlando di "oltre 12V"? Puoi danneggiare il chip abbastanza facilmente ... Un paio di resistori potrebbero essere usati per abbassare la tensione a 12V. Vedi questo: electronics.stackexchange.com/questions/25038/…
Kurt E. Clothier,

Ok grazie! Ci proverò domani perché ormai è quasi mezzanotte. Ti terrò aggiornato!
Calin,

Prova le opzioni della sorgente di clock esterna dalla mia risposta prima di friggere accidentalmente il controller con una tensione troppo alta. L'alta tensione deve essere compresa tra 11,5 e 12,5 V (capitolo 20.7.1 nel foglio dati).
jippie,

1
Grazie! La versione "fissa" di ArduinoISP mi ha aiutato a risolvere il mio problema! Ho caricato la versione fissa su Arduino, disconnesso Arduino e collegato ATTiny normalmente, ma con il pin 9 di Arduino collegato al pin 2 di ATTiny (come hai suggerito). Successivamente ho aperto l'IDE di Arduino e selezionato ATTiny85 (con clock interno da 8 MHz) come scheda e ArduinoISP come programmatore. Ho cliccato su Strumenti> Masterizza Bootloader e tutto è andato bene. Successivamente ho ricaricato lo sketch originale di ArduinoISP dalla directory degli esempi e ho potuto programmare nuovamente ATTiny usando il mio Arduino come programmatore.
Calin,

5

Come ha detto @jippie, si tratta semplicemente di applicare una sorgente di clock esterna (in realtà non importa se la sorgente di clock è 20 MHz o meno, deve solo colpire 1 MHz o giù di lì per gestire la velocità di programmazione SPI di ArduinoISP).

In alternativa alla versione ArduinoISP sopra menzionata, potresti provare ScratchMonkey , che oltre alla generazione di clock esegue anche SPI del software per gestire altri problemi di clock. A meno che non sia riuscito a disabilitare il pin di ripristino, non dovrebbe esserci motivo di ricorrere alla programmazione ad alta tensione.

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.