Pagina 1 di 1

Overflow del TMR1

MessaggioInviato: 19 lug 2006, 14:13
da trillo
Salve :D

Se utilizzo il TMR1 di un 876 con prescaler /8, posso non attivare la funzione di INTERRUPT ?
Posso leggere l'allocazione di memoria del conteggio mentre il TMR1 sta ancora conteggiando, praticamente al volo?
Che succede quando il contatore va in overflow, se non ho attivato l'interrupt (ammesso che sia possibile), rimane nella cella di allocazione del conteggio il risultato massimo, cioè i bit tutti settati ad 1 fin quando non viene azzerato il TMR1?

Grazie :lol: :lol:

MessaggioInviato: 19 lug 2006, 22:52
da Paolino
Se utilizzo il TMR1 di un 876 con prescaler /8, posso non attivare la funzione di INTERRUPT ?
Certo, le cose non sono correlate. Il prescaler è soltanto il fattore di divisione del clock.
Posso leggere l'allocazione di memoria del conteggio mentre il TMR1 sta ancora conteggiando, praticamente al volo?
Certamente. Basta accedere ai registri TMR1H e TMR1L.
Che succede quando il contatore va in overflow, se non ho attivato l'interrupt (ammesso che sia possibile), rimane nella cella di allocazione del conteggio il risultato massimo, cioè i bit tutti settati ad 1 fin quando non viene azzerato il TMR1?

La funzione di interrupt è sempre attivabile/disattivabile a piacere. Se il contatore va in overflow, il registro ha superato il valore 0xFFFF. Il contatore dovrebbe azzerarsi e ripartire. In questo caso (overflow) il flag T1IF (Timer 1 Interrupt Flag) viene posto a 1 ma non scatena interrupt se la funzionalità non è attivata. Se non vuoi attivare l'interrupt è chiaro che devi andare in polling su T1IF; se T1IF vale 1, allora c'è stato overflow. Devi porre T1IF a zero.
Ciao.

Paolo.

MessaggioInviato: 21 lug 2006, 13:52
da trillo
Grazie,

un'ultima cosa, per azzerare il Timer1 pi pare di aver capito che devo settare i quattro bit del modulo CCP1 e precisamente CCP1M3:CCP1M0 con il valore "1011" è giusto?
Posso azzerare il Timer1 andando a sovrascivere i registri TMR1H e TMR1L?.

Scusate queste domande alcune volte banali, ma sono ancora all'inizio e mi interessa capire alcuni concetti base. :roll:

Ciao a tutti :wink:

MessaggioInviato: 23 lug 2006, 15:37
da Paolino
Per azzerare il TIMER 1 fai così:
1) arresta il TIMER
Codice: Seleziona tutto
BCF 10h,0; 10h è l'indirizzo di T1CON

2) poni a zero i registri TMR1H e TMR1L

Ti conviene fermare il TIMER, cosicché questi riparta da zero (dopo averlo azzerato, appunto) quando lo deciderai tu.
Ciao.

Paolo.