Cos'è ElectroYou | Login Iscriviti

ElectroYou - la comunità dei professionisti del mondo elettrico

Ottenere 1 Hz precisissimo, 16f84a

Raccolta di codici sorgenti

Moderatore: Foto UtentePaolino

0
voti

[61] Re: Ottenere 1 Hz precisissimo, 16f84a

Messaggioda Foto UtenteEcoTan » 8 apr 2015, 15:02

GuidoB ha scritto:È bene usare un timer che si autoricarica alla scadenza.

Certamente. Non ho letto con molta attenzione, ma in generale penso che non dovrebbero esistere problemi legati alla gestione dei timer. Dovrebbero esserci dei registri denominati PR (period register) che ricaricano il timer esattamente alla scadenza.
Avatar utente
Foto UtenteEcoTan
7.720 4 12 13
Expert EY
Expert EY
 
Messaggi: 5424
Iscritto il: 29 gen 2014, 8:54

1
voti

[62] Re: Ottenere 1 Hz precisissimo, 16f84a

Messaggioda Foto UtenteIsidoroKZ » 8 apr 2015, 15:38

Prova e vedi se va :-). Se fai 9 divisioni per 62 di fila e 247 per 61 di fila, ti ritrovi che dopo 9 divisioni l'orologio e` in ritardo di .14s poi cone le 247 divisioni (duecentoquarantasette) per 61 recuperi e torni in pareggio. Per questa ragione suggerivo di intercalare le divisioni per 62 a quelle per 61 eventualmente con la tabella che avevo indicato come esempio.

Con questo metodo puoi ance compensare le tolleranze del quarzo, basta cambiare il rapporto fra divisioni per 61 o 62, ma la correzione, se non ho sbagliato i conti, e` a scatti di 5s al giorno.

Per avere la possibilita` di correggere piu` finemente bisogna complicare un po' la routine, facendo un ciclo piu` lungo di 256 secondi, ad esempio 1000s e distribuendo opportunamente le divisioni per 61 e per 62.
Per usare proficuamente un simulatore, bisogna sapere molta più elettronica di lui
Plug it in - it works better!
Il 555 sta all'elettronica come Arduino all'informatica! (entrambi loro malgrado)
Se volete risposte rispondete a tutte le mie domande
Avatar utente
Foto UtenteIsidoroKZ
121,2k 1 3 8
G.Master EY
G.Master EY
 
Messaggi: 21059
Iscritto il: 17 ott 2009, 0:00

0
voti

[63] Re: Ottenere 1 Hz precisissimo, 16f84a

Messaggioda Foto Utentecarlomusumeci » 8 apr 2015, 15:46

va bene,credo che ci siamo,è questione di distribuire i 62 fra i 61 in modo "compatto" 55 (61), 2 (62),55 (61) e cosi via fino a fare 247 inizializzazioni a 61 e 9 a 62
Ultima modifica di Foto Utentecarlomusumeci il 8 apr 2015, 16:18, modificato 1 volta in totale.
Avatar utente
Foto Utentecarlomusumeci
353 5 7
Sostenitore
Sostenitore
 
Messaggi: 526
Iscritto il: 8 apr 2011, 0:35

1
voti

[64] Re: Ottenere 1 Hz precisissimo, 16f84a

Messaggioda Foto UtenteIsidoroKZ » 8 apr 2015, 15:59

Perche' non riporti mai i numeri giusti? Le inizializzazioni a 62 sono 9 NOVE ogni 247 a 61.
Per usare proficuamente un simulatore, bisogna sapere molta più elettronica di lui
Plug it in - it works better!
Il 555 sta all'elettronica come Arduino all'informatica! (entrambi loro malgrado)
Se volete risposte rispondete a tutte le mie domande
Avatar utente
Foto UtenteIsidoroKZ
121,2k 1 3 8
G.Master EY
G.Master EY
 
Messaggi: 21059
Iscritto il: 17 ott 2009, 0:00

0
voti

[65] Re: Ottenere 1 Hz precisissimo, 16f84a

Messaggioda Foto Utentecarlomusumeci » 8 apr 2015, 16:13

Hai ragione scusami,
confermo
247 volte 61
9 volte 62
Avatar utente
Foto Utentecarlomusumeci
353 5 7
Sostenitore
Sostenitore
 
Messaggi: 526
Iscritto il: 8 apr 2011, 0:35

1
voti

[66] Re: Ottenere 1 Hz precisissimo, 16f84a

Messaggioda Foto UtenteIsidoroKZ » 9 apr 2015, 9:56

I numeri di divisione che ho indicato sono per il quarzo esattamente a 4MHz. Dato che i quarzi e gli oscillatori hanno delle tolleranze, si puo` correggere l'errore cambiando ad esempio il numero di divisioni per 61.

Aumentando di una unita` il valore 247 (senza toccare il 9) si fa andare piu` in fretta l'orologio di circa 0.2s al giorno. Se invece la correzione al giorno e` maggiore di 5s circa, bisogna cambiare anche il valore di divisioni per 62. Pero` prima prepara tutto il sistema che al trimming pensiamo dopo.

Per quanto tempo devi tenere attivo il conteggio?
Per usare proficuamente un simulatore, bisogna sapere molta più elettronica di lui
Plug it in - it works better!
Il 555 sta all'elettronica come Arduino all'informatica! (entrambi loro malgrado)
Se volete risposte rispondete a tutte le mie domande
Avatar utente
Foto UtenteIsidoroKZ
121,2k 1 3 8
G.Master EY
G.Master EY
 
Messaggi: 21059
Iscritto il: 17 ott 2009, 0:00

0
voti

[67] Re: Ottenere 1 Hz precisissimo, 16f84a

Messaggioda Foto UtentePaolino » 9 apr 2015, 11:00

Nel computo va considerato anche l'effetto di latenza quando si scatena l'interrupt (in soldoni è il tempo di reazione che impiega il micro per rispondere ad una sollecitazione di interrupt). Questo incide sul calcolo del tempo effettivo.
Attenzione anche agli effetti del context switch, ossia le operazione (firmware) da farsi per salvare i registri prima di eseguire la ISR. Anche questo è un aspetto che incide sul tempo teorico.
Le osservazioni sul quarzo da 4MHz sono valide, benché normalmente per gli orologi si usi spesso il quarzo da 32768 Hz. Vedo di scrivere due righe, non appena il tempo tiranno mi da un attimo di tregua...

Ciao.

Paolo.
"Houston, Tranquillity Base here. The Eagle has landed." - Neil A.Armstrong

-------------------------------------------------------------

PIC Experience - http://www.picexperience.it
Avatar utente
Foto UtentePaolino
32,6k 8 12 13
G.Master EY
G.Master EY
 
Messaggi: 4226
Iscritto il: 20 gen 2006, 11:42
Località: Vigevano (PV)

0
voti

[68] Re: Ottenere 1 Hz precisissimo, 16f84a

Messaggioda Foto UtenteIsidoroKZ » 9 apr 2015, 11:06

Appunto per quelle ragioni il mio suggerimento e` di lasciare prescaler e divisore in free running. Le differenze di tempo per rispondere all'interrupt, salvare lo stato... generano solo un jitter sull'istante in cui si aggiorna il tempo ma non provoca nessun ritardo cumulativo.

Dato che c'e` un clock che (presumibilmente) e` sempre presente, tanto vale usarlo al posto di aggiungere quarzo, oscillatore, divisori esterni.

Se fosse un problema di consumo e si dovesse solo tenere l'ora aggiornata un chip di RTC andrebbe benissimo, ma se il micro ha sempre l'oscillatore che oscilla lo si usa.

Non so se il micro ha un modo di sleep in cui vengono tenuti accesi solo il clock e i timer. Non credo sia molto utile perche' l'oscillatore ad alta frequenza comunque consuma.
Per usare proficuamente un simulatore, bisogna sapere molta più elettronica di lui
Plug it in - it works better!
Il 555 sta all'elettronica come Arduino all'informatica! (entrambi loro malgrado)
Se volete risposte rispondete a tutte le mie domande
Avatar utente
Foto UtenteIsidoroKZ
121,2k 1 3 8
G.Master EY
G.Master EY
 
Messaggi: 21059
Iscritto il: 17 ott 2009, 0:00

0
voti

[69] Re: Ottenere 1 Hz precisissimo, 16f84a

Messaggioda Foto UtentePaolino » 9 apr 2015, 11:15

È vero, Foto UtenteIsidoroKZ, l'oscillatore a 4MHz consuma. :ok:
TI riporto la mia esperienza che impiega entrambi gli oscillatori connessi al micro (senza chip esterno RTC) abilitando però la funzione di sleep. Applicazioni come il cronotermostato sono tipiche, con l'utilizzo di entrambe i quarzi, uno da 4MHz e uno da 32768 Hz. Il secondo serve solamente per l'orologio del cronotermostato, mentre il primo, fatto funzionare pochissimo (tipicamente i cronotermostati sono a batteria e quindi i consumi sono da tenere debitamente sotto controllo) serve per le operazioni generali, tra cui le routine di controllo, la gestione del dislpay, dei tasti, comunicazione seriale, ecc.

In questo caso il vantaggio è derivato dal fatto che l'oscillatore da 32768Hz continua a funzionare anche quando il circuito che fa capo al quarzo da 4MHz è spento.

Ecco perché citavo la presenza di due oscillatori.

Credo comunque che sia l'applicazione che definisce la necessità di uno o di entrambi. Averne uno solo ha rilevanza sui costi (in ottica di produzioni di migliaia di parti, ovviamente; non certamente per uso hobbistico o per pochi esemplari).

O_/

Ciao.

Paolo.
"Houston, Tranquillity Base here. The Eagle has landed." - Neil A.Armstrong

-------------------------------------------------------------

PIC Experience - http://www.picexperience.it
Avatar utente
Foto UtentePaolino
32,6k 8 12 13
G.Master EY
G.Master EY
 
Messaggi: 4226
Iscritto il: 20 gen 2006, 11:42
Località: Vigevano (PV)

0
voti

[70] Re: Ottenere 1 Hz precisissimo, 16f84a

Messaggioda Foto Utenteivanpascolo » 22 apr 2015, 21:09

perché non utilizzare un micro piu' recente con il timer1?
In pratica si tratta di un secondo oscillatore sul quale collegare il quarzo da 32K e il gioco è fatto. L'ho provato e va benissimo.
Avatar utente
Foto Utenteivanpascolo
20 3
New entry
New entry
 
Messaggi: 71
Iscritto il: 29 set 2014, 20:44

PrecedenteProssimo

Torna a Firmware e programmazione

Chi c’è in linea

Visitano il forum: Nessuno e 35 ospiti