Newsgroup: it.hobby.elettronica.digitale
Titolo: [PIC16F628]quale timer usare ?

ciao a tutti
sto facendo un programmino "esempio" per il
PIC16F628 (poi se a qualcuno interessa lo
posso pubblicare);
nel programma ho previsto un interrupt di timer
a 10 msec che decrementa a sua volta dei timer
a 24 bit, per cui con una risoluzione di 10msec
si possono avere temporizzazioni fino a + di 46 ore.
ecco il calcolo:
2^24 = 16.777.216 che diviso per 360000 (decine di
millisecondi in un'ora) fa 46,6 ore
Insomma, nel programma, caricando questi 3 registri
con un numero esadecimale corrispondente al tempo che
si vuole attendere, l'interrupt del timer decrementa
i 24 bit dei 3 byte fino ad esaurire il tempo. A quel
punto, sempre nella subroutine del timer, viene tirata
su una flag per dire che il tempo e' trascorso.
E fin qui ho le idee chiare. Quello che non ho ancora
deciso e' QUALE timer del PIC16F628 visto che tutti e
3 i timer (timer0, timer1 e timer2) oltre alla semplice
funzione di timer hanno anche funzioni associate di
watchdog, event, comparator, base per PWM etc.) e quindi
usando il timer per il mio scopo sacrifico inevitabilmente
qualche risorsa.
Di primo acchito ho usato i timer1 poiche' e' a 16 bit.
Ora pero' sono + propenso ad usare il timer0.
Voi cosa ne pensate ?
ciao e grazie
riccardo

 sto facendo un programmino "esempio" per il> PIC16F628......... nel
programma ho previsto un interrupt di timer> a 10 msec che decrementa a sua
volta dei timer> a 24 bit
I timer interni vengono fatti avanzare ad una frequenza che e' pari al clock
diviso qualche cosa, e non e' detto che si possano ottenere valori tondi
come i 10mS. Inoltre per avere interrupt a intervalli veramente costanti
bisogna lasciar andare il timer per i fatti suoi senza ricaricare ogni volta
il tempo, questa operazione azzera infatti anche il conteggio del prescaler
per cui ogni volta perderesti il conteggio che intercorre tra la generazione
dell'interrupt e il momento in cui ricarichi il contatore del timer. Usando
un quarzo da 4Mhz per esempio puoi avere un interrupt ogni 8,192 o 4,096mS.
Per avere interrupt precisi di 8 o 4 mS dovresti usare un quarzo da
4,096Mhz. Tutto questo vale per il timer 0, mi pare che anche gli altri si
comportino nello stesso modo ma non ne sono sicuro. Comunque per contare
tempi lunghi vanno bene anche gli 8,192mS, con 24 bit arrivi circa a 38 ore
10 minuti e 39 secondi.
ciao
Claudio

Ciao, sono Ronnie
ti faccio una domanda visto che usi il PIC 16F628,
ho provato a trasferire un programma(che sta crescendo, quindi problemi
di spazio) dal 16F84 al 16F628 ma non funziona, penso siano problemi di
indirizzamento della RAM nell'inizializzazione o cose simili;
mi potresti dare un aiutino per risolvere il problema, almeno inviandomi
un file che funziona col 16F628? Cosě potrei capire almeno come si
inizializza, i comandi poi dovrebbero essere uguali vero?
Grazie
Ronnie



 ....ho provato a trasferire un programma(che sta crescendo, quindi
problemi> di spazio) dal 16F84 al 16F628 ma non funziona, penso siano
problemi di> indirizzamento della RAM nell'inizializzazione o cose simili;
http://members.xoom.it/stor/pic/page5/pic16f628_1.htm
ciao
Claudio

indirizzamento della RAM nell'inizializzazione o cose simili;
forse occorre cambiare il "p16f84.inc" con l'equivalente per il 16f628.
Tanto che ci sono chiedo: dove l'avete comprato il'628 ? e quanto vi è
costato ?
Saluti
MazE
--
per rispondere togliete gli "*" dall'email - remove "*" from address to reply
http://www.bccmp.com/mazzetti/pagine/sottoscala.html

indirizzamento della RAM nell'inizializzazione o cose simili;
forse occorre cambiare il "p16f84.inc" con l'equivalente per il 16f628.


 Saluti
Li puoi trovare da elettroshop a solo 6700 + iva.
Bye

Li puoi trovare da elettroshop a solo 6700 + iva.
grazie
