Quali valori di resistenza e condensatore utilizzare per l'isolamento dei pin di ripristino dell'AVR?


15

Sfondo...

Sono un principiante delle applicazioni AVR. Di recente ho costruito due circuiti basati su ATTINY13 (lampeggianti LED lampeggianti) che funzionavano correttamente (indipendentemente) sulla breadboard. Quando li ho combinati su un pannello di saldatura con un alimentatore condiviso, le cose sono andate in tilt. Dopo molte indagini, è sembrato che si ripristinassero costantemente.

Avevo lasciato il pin 1 (reset) di ogni micro non collegato. Ho studiato il modo corretto di gestire il pin di reset e da questo ho implementato quanto segue:

  1. Aggiunto un condensatore elettrolitico da 100 uF in parallelo con l'alimentatore per aiutare con qualsiasi potenziale assorbimento di corrente che l'alimentatore sarebbe troppo "lento" per gestire.

  2. Aggiunta una resistenza da 4,7 K da VCCaRESET

  3. Aggiunto un condensatore ceramico 0.1uF da GNDaRESET

Questi passaggi hanno risolto completamente il problema.

La domanda:

La pagina che ho linkato sopra fornisce consigli quando si fa ISP (programmazione all'interno del sistema) che non sto facendo (ancora). (Sto programmando i micro separatamente senza altri componenti collegati ad essi.)

Ho visto diversi valori di condensatore (10nF, 0.1uF, ecc.) E resistenza (4.7K, 10K, ecc.) E non sono sicuro di quali fattori modificano questi valori. Qualcuno può fare luce su come funziona l'isolamento dei pin di reset e come calcolare i valori dei componenti da utilizzare? Puoi spiegare quali valori utilizzare se non esiste un'intestazione di programmazione nel sistema?

Schema di isolamento del pin di ripristino AVR

Risposte:


15

Atmel AVR042: le considerazioni sulla progettazione hardware di AVR ci dicono che il condensatore sul pin di reset non è necessario. Personalmente penso che sia eccessivo. Non c'è motivo per continuare a realizzare dozzine di circuiti AVR, ognuno con quel condensatore ridondante.

Per quanto riguarda la resistenza di ripristino pullup:

La linea di ripristino ha una resistenza di pull-up interna, ma se l'ambiente è rumoroso può essere insufficiente e il ripristino può quindi avvenire sporadicamente. Fare riferimento alla scheda tecnica per il valore della resistenza di pull-up su dispositivi specifici. Il collegamento di RESET in modo che sia possibile accedere sia alla programmazione ad alta tensione sia al normale ripristino a basso livello può essere ottenuto applicando una resistenza di pull-up alla linea RESET. Questa resistenza di pull-up si assicura che il reset non si spenga inavvertitamente. In teoria il resistore di pull-up può essere di qualsiasi dimensione, ma se Atmel®AVR® deve essere programmato ad es. Da STK500 / AVRISP, il pull-up non dovrebbe essere così forte che il programmatore non può attivare RESET abbassando la linea RESET. La resistenza di pull-up consigliata è 4,7 kΩo superiore quando si utilizza STK500 per la programmazione. Perché debugWIRE funzioni correttamente, il pull-up non deve essere inferiore a 10kΩ.

Se dai un'occhiata ai prodotti professionali che incorporano i micro AVR, come Arduino, i suoi numerosi cloni, dozzine di kit di sviluppo, scoprirai che la maggior parte utilizza un resistore da 4,7kΩ o 10kΩ.

E in particolare per il tuo ATtiny13, la sua scheda tecnica specifica che il pullup dovrebbe idealmente variare [20kΩ, 80kΩ].


1
Da 20k a 80k o 20k diviso per 80k? :)
JYelton,

Grazie per il link Considerazione sulla progettazione hardware. Non ero a conoscenza di questo documento!
JYelton,

Haha, ho usato quel segno perché tutti usano il segno meno. Neanche la resistenza negativa avrebbe alcun senso :)
Jonny B Good

Di solito vedo la tilde (~) usata per indicare "attraverso" ma anche "approssimativa". Immagino che dipenda dal contesto. Grazie per aver indicato gli elenchi dei dati del resistore pullup di reset, non mi ero reso conto che avrebbe incluso quelle informazioni. Il foglio dati che ho mostra che la resistenza di pull-up per il pin di reset deve essere compresa tra 30k e 80k. Almeno ora so dove cercare. Grazie!
JYelton,

4
20KΩ...80KΩ

7

Uso sempre una resistenza pullup da 10k per Vcc sul pin / Reset e non ho mai avuto problemi. In genere è anche una buona idea includere un condensatore da 100nF vicino al pin Vcc tra Vcc e GND per un funzionamento stabile del chip. Secondo me il condensatore sul pin di reset non è necessario, vale a dire che non ne ho mai incluso uno in alcun circuito AVR che ho sviluppato (e ne ho sviluppati molti) e non mi ha mai causato dolore.


Puoi spiegare (o indicare un buon tutorial per principianti) in che modo questi minuscoli condensatori aiutano in aggiunta o invece di un elettrolitico più grande che è parallelo all'alimentazione?
JYelton,

1
si occupa delle "frequenze di ripple" e può essere un argomento più complicato di quello che sembra, ma almeno 100nF è una pratica standard accettata per i condensatori di bypass. Ecco uno (di molti) articoli di riferimento che potrebbero essere di interesse: seattlerobotics.org/encoder/jun97/basics.html . Puoi anche trovare post correlati su questo sito cercando "bypass" o "disaccoppiamento"
vicatcu,

I grandi condensatori elettrolitici gestiscono le basse frequenze, ma sono inefficaci alle alte frequenze. Piccoli condensatori ceramici (0.1uF) gestiscono le alte frequenze, ma sono inefficaci alle basse frequenze.
Tecnofilo

Quindi usa entrambi, l'offerta dovrebbe avere comunque uno grande e quello piccolo a livello locale. Induzione e HF possono essere un problema, ma all'estremo. È interessante notare che le considerazioni HSVP non hanno anche un diodo in serie con quel resistore del pin di reset.
mckenzm,
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.