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 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 |