Visualizza messaggio singolo
Vecchio 19 aprile 12, 15:17   #63 (permalink)  Top
faustog_2
User
 
L'avatar di faustog_2
 
Data registr.: 19-07-2008
Residenza: catania
Messaggi: 978
ok

quindi in sostanza:
ho un piedino definito come ingresso il modulo Compare1 , il quale mi fa scattare un'interrupt appena cambia di stato , contemporaneamente al cambio di stato il contenuto di un timer viene copiato in un registro a 16bit per cui leggendo questo registro si può sapere quanto tempo è passato dalla lettura precedente.

Se è necessario avere più precisione occorre lasciare correre liberamente il timer e poi sottrarre dalla memorizzazione precedente, quindi a via di sottrazioni non abbiamo bisogno di azzerare il timer1


correggimi se sbaglio.. ..aggiungo mi fa piacere comunicare con te, per la pazienza e per la competenza quando per il piacere di confrontarsi... ..e soprattutto per giudizi inutili sulla incompetenza altrui!


Citazione:
Originalmente inviato da faustog_2 Visualizza messaggio
ho avuto 5 minuti son andato a spulciare sul datasheet, ecco il risultato :
il Counter sarebbe il registro TCNT1H and TCNT1L – Timer/Counter1, registro a 16 bit , infatti arriva oltre i 65.000 ovvero 2 elevato a 15.

a pagina 139 presenta il registro TIFR1:
TIFR1 – Timer/Counter1 Interrupt Flag Register

http://www.atmel.com/Images/doc8161.pdf

Quindi è il registro degli interrupt del timer.. se leggiamo il bit 5 dice:
the ICF1 Flag is set when the counter reaches the TOP value.

quindi ICF1 è il bit 5 del registro TIFR1 ... e quando cambia di stato? quando il timer raggiunge fondo scala.. in pratica volendo fare un paragone con i Pic

BTFSS INTCON,T0IF
GOTO $-1 ;attende overflow timer
BCF INTCON,T0IF ;resetta bit overflow.

in questo caso INTCON è il registro degli interrupt del TMR0, quindi il bit T0IF di posto non ricordo! sarà 1 se arriva a fondo.. ovviamente tutto dipende da quale punto parte TMR0 e il prescaler impostato.

Mikia ma dico, non c'è un modo più semplice per intervistare un bit? che occorre fare una operazione così complessa?

if (TIFR1 & (1<<ICF1))

RIMPIANGO L'ASSEMBLER DEI PIC ! SEMPLICE E POTENTE!

a dopo
fausto
faustog_2 non è collegato   Rispondi citando