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

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










Citazione:
Originalmente inviato da gawain Visualizza messaggio
no, l bit ICF1 va a 1 quando l'input cambia stato, l'ICR1 memorizza il valore di TCNT1
al cambio di stato.
il test if (TIFR1 & (1<<ICF1))
serve quindi a vedere se c'è un nuovo valore memorizzato su ICR1
faustog_2 non è collegato   Rispondi citando