Newsgroup: it.hobby.elettronica.digitale
Titolo: TMR0 problema di calcolo

buonasera,
ho qualche problema a creare una rutine in picbasic che mi di un tempo di 1 
secondo preciso con un PIC16F876. sto provando a sfruttare l'interrupt che 
si genera qando TMR0 = 0, ma non riesco a fare i calcoli in maniera precisa,
qalcuno ha qualche consiglio?
Grazie in anticipo
 

 non riesco a fare i calcoli in maniera precisa,
fai i calcoli in maniera approssimata, poi simula il tutto con MPSIM e 
misura il tempo utilizzando due breakpoints e la finestra Stopwatch, quindi 
correggi il valore di pre-load del timer fino ad ottenere l'intervallo 
corretto.
saluti
-- 
simone.bern
Mr. Heisemberg is not the only one who can affect a measurement by looking 
at it (Robert A. Pease)
zsimone...@zliberoz.it
 (Rimuovere i caratteri di zorro per rispondere 
via mail)

G.Paolo ha scritto:

Quanto preciso?
Se si richiedono precisioni elevate (comparabili con la precisione 
dell'oscillatore che suppongo quarzato) usa una frequenza dell'osc. 
potenza di 2.
Altrimenti in maniera approssimata:
1) Calcoli il periodo di un ciclo macchina: inverso di un quarto della 
frequenza del quarzo (i PIC hanno un prescaler 1:4)
2) Determini il tempo di overflow del timer, scegliendo se ci sono le 
migliori combinazioni di pre/postscaler
3) Calcoli il numero intero di overflow necessari per arrivare al secondo
4) L'ultimo ciclo sarà parziale: stima quanti incrementi necessita e la 
differenza dal valore massimo del registro (2^n - 1, con n numero di bit 
del timer) la usi per inizializzarlo dopo l'overflow.
A questo punto tramite simulatore o meglio in fase di collaudo con 
frequenzimetro/oscilloscopio tari al meglio il valore di inizializzazione.
Ciao,
Marco / iw2nzm

 ha scritto nel messaggio 
news:44a9587c$0$972$5fc...@news.tiscali.it...


 ha scritto nel messaggio 
news:44a9587c$0$972$5fc...@news.tiscali.it...


 Ciao
quoto ..ed aggiungo..perchè non usi il doppio quarzo?..ti metti il quarzo
primario a 4MHz..e poi vedi che il timer1 sul pic16f876 è in grado di
controllare un altro quarzo su due altri ingressi..qui ci connetti un buon
quarzo da 32,768kHz (per spiegarti un quazo ke trovi in qualsiasi
orologio..)..dividi per 2^15 e ottieni il tuo bel secondo
netto..!!!Buonanotte..leggete i datasheet ogni tanto..troppo software (di
merda!!) fa male...!!
Steno

 ha scritto nel messaggio 
news:JEYqg.13799$yg6....@tornado.fastwebnet.it...



Non intendevo dire che non leggi! ...primo ho suggerito una possibile
soluzione alternativa visto che Paolo scriveva ..sto provando ad
usare...etc..etc; secondo, se usi il tmr0 devi beccarti un quarzo che abbia
freq multipla di 2^n altrimenti il tuo secondo non sarà mai un secondo..come
ha già risp...qualcun'altro.

 ha già risp...qualcun'altro.
Oltre al classico 32768 Hz, un po' troppo lento se il PIC deve fare 
anche altre cose, si trovano quarzi da 8388608 (2^19) o da 16777216 
(2^20) ? Sto cercando anch'io quarzi in potenza di due ma non ne ho 
trovati dell'ordine di qualche MHz.
Mi sapete dire qualcosa a riguardo?
Grazie!
Marco / iw2nzm

 ha scritto nel messaggio
news:my7rg.29779$zy5.5...@twister1.libero.it...

...che io sappia non ne ho mai visti..magari mi dovrei documetare un po'
meglio sull'argomento..ma se appunto usi il doppio quarzo, fai quello che
desideri senza rallentare il clock principale del micro...!!
Ciauz!!
Steno

 Steno
No, ho trovato una soluzione più semplice. Forse :)
Basta usare un quarzo che abbia una frequenza del tipo x*2^n, con x 
piccolo a piacere :)
Ovviamente quasi tutti i quarzi rispettano l'equazione, ma se se ne 
sceglie uno con x piccolo la cosa risulta comoda.
Mi spiego:
Avevo nel cassetto un 12,288 MHz. Se lo si divide per 2^13 otteniamo 
375. Quindi per avere 1 Hz di precisione paragonabile a quella del 
quarzo è sufficiente:
impostare il prescaler a 1:32 = 2^5
il timer va in overflow dopo 2^8 cicli e così abbiamo fatto 2^13
Notare che il timer è continuamente attivo non viene mai ricaricato.
Con una variabile esterna si contano 375 overflow e si ha 1 Hz molto 
preciso.
Vantaggi:
- si possono scegliere quarzi anche "veloci"
- non si deve ricaricare il timer0
Che ne pensate?
Marco / iw2nzm

 ha scritto nel messaggio
news:Fjqrg.30927$zy5.6...@twister1.libero.it...

..è una buona idea...resta solo il fatto che hai 375 interrupt al
secondo...dipende dall'applicazione in cui lo usi...!!
Saluti
Steno