Go Down

Topic: Autoreset, questo sconosciuto (Read 11 times) previous topic - next topic

Michele Menniti

#10
Jun 20, 2011, 08:04 am Last Edit: Jun 20, 2011, 08:16 am by menniti Reason: 1

Niente da fare... ho ricontrollato e ricontrollato più e più volte. Ho riflashato tutto, dagli Attiny agli Atmega.
Gli Attiny sono andati, partiti, persi.... non so cosa sia successo.
Il condensatore non c'entra niente perché ho provato con un Atmega328 e questo funziona bene... Eppure divento matto!
Capisco il primo Attiny, magari posso aver fatto io inavvertitamente contatto io con qualcosa, ma il secondo era sì sulla stessa breadboard ma era completamente scollegato! Montato e programmato è saltato anche quello. L'unica cosa che mi può venire in mente è che ho messo il 2° Attiny nello STESSO identico punto della breadboard dove ho programmato il primo. Magari è saltata una pista ed ha bruciato anche il secondo?

Ma se anche salta una pista (e ci vorrebbe un corto selvaggio con un'alimentazione notevolissima) al più non riesci a collegare correttamente il pin, al massimo potresti brickarlo, certamente non bruciarlo. Se pensi siano brickati non buttarli, mi raccomando... ;)

EDIT: comunque sia il condensatore lo hai collegato sul reset di Arduino quindi, al di là della prova col 328, non poteva certo essere lui la causa del problema.
Guida alla programmazione ISP e seriale dei micro ATMEL (Caricare bootloader e sketch):
http://www.michelemenniti.it/Arduino_burn_bootloader.php
Guida alla Programmazione ATmega328 noP:
http://www.michelemenniti.it/atmega328nop.html
Articoli su Elettronica In:
http://www.michelemenniti.it/elettronica_in.html

astrobeed


EDIT: comunque sia il condensatore lo hai collegato sul reset di Arduino quindi, al di là della prova col 328, non poteva certo essere lui la causa del problema.


Esatto, il condensatore non ha alcun punto di contatto col micro che viene programmato, è solo sul pin di reset dell'ATmega sul quale c'è lo sketch isp.

leo72

@Brain:
curiosamente sì, riesco a flasharlo sia dall'IDE sia con l'USBtinyISP. In entrambi i casi è visto correttamente e programmato.

@menniti:
nessun "corto selvaggio", alimentavo la breadboard con i 5V presi dall'Arduino e son sicuro di non aver invertito i ponticelli (+ sul - e viceversa) perché uso sempre cavetti colorati (rosso per il + e verde per il -) quindi facilmente identificabili

@astro:
chiaro.

Cmq qualcosa è successo.
Esattamente prima della programmazione il LED sul pin dell'Attiny lampeggiava con un'intensità normale. Appena ho programmato il micro, il LED credevo fosse spento, da quanto era fioco. Ho dovuto parare la luce con la mano per vedere che lampeggiava. Inoltre mi sono accorto che qualcosa non andava perché ho notato che, appena terminata la programmazione ISP, il led "L" sull'Arduino era fiocamente illuminato perché riceveva tensione dall'Attiny  mediante il cavettino sul pin 13. Collegando infatti un LED direttamente al 7° pinedino dell'Attiny (pin 2) mi sono accorto che usciva tensione, misurata in 4,8V con un tester.

Resta il mistero che da ieri sera ho i 2 Attiny "andati".

astrobeed

#13
Jun 20, 2011, 09:28 am Last Edit: Jun 20, 2011, 09:31 am by astrobeed Reason: 1
Una considerazione sulle correnti in gioco, osservando attentamente la misura con il condensatore da 10 uf si vede chiaramente che il segnale DTR non va subito a 0 logico, come avviene in tutti gli altri casi, ma ci va in un certo tempo seguendo la curva di carica del condensatore da 100 nf.
La cosa è abbastanza logica perché la corrente che può scorrere nel circuito è limitata dalla somma dell'impedenza d'uscita del FTDI o 8u2, non dichiarate sul data sheet, e dalla ESR del condensatore che normalmente per un elettrolitico da 10 uf, non low esr, è una decina di ohm.
E' possibile stimare con buona precisione la reale corrente che scorre partendo dalla costante di tempo della variazione su DTR, circa 8 us per arrivare al valore di tensione dovuto a RC, con un semplice calcolo ci troviamo la resistenza serie equivalente e da questa la corrente di picco.

R = 8 us / 100 nf = 80 ohm.
Ip = 5V / 80 ohm = 62 mA.

Anche se è un valore di picco che dura meno di un us è superiore alla massima corrente ammessa su un GPIO del 8u2 o del FTDI, nel primo caso sono 40 mA nel secondo caso sono 24 mA.
Da notare che le misure sono state fatte sia su una UNO che su una 2009, sono totalmente identiche salvo l'ultima con il condensatore da 10 uf dove sulla 2009 il tempo di discesa verso lo 0 logico di DTR è maggiore, non mi ricordo di quanto e non ho salvato la misura, il che limita la corrente che passa sul FTDI a molto meno di 62 mA, sicuramente a causa del fatto che l'impedenza d'uscita è maggiore rispetto al 8u2.
Da tenere presente che il valore di corrente massimo sui GPIO riportato sui datasheet è riferito ad un flusso continuo e non ad una serie di impulsi, toccherebbe parlare di valore rms della corrente che ci porta ad un valore continuo equivalente quasi nullo nel nostro caso.
In tutti i casi sarebbe bene non superare lo stesso i valori massimi riportati dai data sheet, per ottenere il risultato basta inserire una resistenza di piccolo valore, 100 ohm dovrebbero bastare, in serie al condensatore per ridurre la corrente di picco a circa 20 mA sia con l'8u2 che con l'FTDI.
Cerco di verificare strumentalmente la cosa in giornata, sopratutto gli effetti sull'impulso di reset vero e proprio che dovrebbe rimanere ampiamente entro i margini di sicurezza, durata minore di 100 ns, per non resettare l'ATmega.

Michele Menniti

in pratica la R va tra +5V e il positivo del C? Allora evidentemente si è trattato di un'errata interpretazione dei collegamenti, in precedenza, visto che anche lì c'erano una R da 120 e un C da 10µF in serie rispetto al +5, solo che il negativo del C invece che sul Reset era collegato a massa, mentre sul reset andava il punto di giunzione R-C.
Un dubbio: col "vecchio" sistema era possibile fare ripetuti upload sul chip stand alone ma non era ovviamente possibile aggiornare l'eventuale sketch (magari per fare una prova "locale") su Arduino, è sempre la stessa cosa, o abbiamo qualche miglioria in tal senso?
Guida alla programmazione ISP e seriale dei micro ATMEL (Caricare bootloader e sketch):
http://www.michelemenniti.it/Arduino_burn_bootloader.php
Guida alla Programmazione ATmega328 noP:
http://www.michelemenniti.it/atmega328nop.html
Articoli su Elettronica In:
http://www.michelemenniti.it/elettronica_in.html

Go Up