Cos'è ElectroYou | Login Iscriviti

ElectroYou - la comunità dei professionisti del mondo elettrico

Valore quarzo

Elettronica lineare e digitale: didattica ed applicazioni

Moderatori: Foto Utentecarloc, Foto Utenteg.schgor, Foto UtenteBrunoValente, Foto UtenteIsidoroKZ

0
voti

[51] Re: Valore quarzo

Messaggioda Foto UtenteTardoFreak » 27 apr 2012, 22:09

Per ottenere una temporizzazione precisa è necessario utilizzare un timer con comparatore annesso che faccia immediatamente il reset del contatore stesso. E' l' unico sistema per avere la certezza matematica di non incorrere nei problemi legati all' utilizzo di un time che chiama l' interrupt quando va in overflow.
Usare l' interrupt sull' overflow vuol dire inserire necessariamente delle compensazioni, con il comparatore che resetta il timer questo problema non c'è.
"La follia sta nel fare sempre la stessa cosa aspettandosi risultati diversi".
"Parla soltanto quando sei sicuro che quello che dirai è più bello del silenzio".
Rispondere è cortesia, ma lasciare l'ultima parola ai cretini è arte.
Avatar utente
Foto UtenteTardoFreak
73,9k 8 12 13
-EY Legend-
-EY Legend-
 
Messaggi: 15754
Iscritto il: 16 dic 2009, 11:10
Località: Torino - 3° pianeta del Sistema Solare

0
voti

[52] Re: Valore quarzo

Messaggioda Foto Utentemarioursino » 28 apr 2012, 2:15

Appunto per questi motivi (e perché l'ingegneria mi fa passare la voglia di imparare anche l'assembler) non uso alcun preset del timer2, esso è lasciato libero di correre. Una volta raggiunto l'overflow questo torna in un ciclo macchina a 0 (infatti PR2, che è il registro che una volta raggiunto dal timer lo fa resettare, ne tiene conto essendo a 199 al posto che a 200).

In alcuni tentativi precedenti dediti alla realizzazione di altri "congegni" mi sono accorto che reimpostare il timer durante l'esecuzione delle istruzioni di interrupt crea una valanga di operazioni non considerabili in C, come appunto il restart del prescaler e i vari cicli per eseguire ogni operazione.

Seguendo il datasheet (e con conferma datami dalla realtà) il timer corre da 0x00 a 0xC7 ritornando a 0x00 in un ciclo macchina, indisturbato da qualsiasi operazione che non sia la sua "presettazione" manuale (che non avviene).

Ps: aggiungo che proprio in questa realizzazione di un orologio non avevo considerato il ciclo macchina di ritorno del timer a 0, infatti mi ritrovavo uno sfasamento considerevole dopo solo alcuni secondi. Ripensandoci e correggendolo la tempistica adesso è impeccabile.
Avatar utente
Foto Utentemarioursino
5.687 3 9 13
G.Master EY
G.Master EY
 
Messaggi: 1598
Iscritto il: 5 dic 2009, 4:32

Precedente

Torna a Elettronica generale

Chi c’è in linea

Visitano il forum: Nessuno e 116 ospiti