Cos'è ElectroYou | Login Iscriviti

ElectroYou - la comunità dei professionisti del mondo elettrico

Overflow del TMR1

Tipologie, strumenti di sviluppo, hardware e progetti

Moderatore: Foto UtentePaolino

0
voti

[1] Overflow del TMR1

Messaggioda Foto Utentetrillo » 19 lug 2006, 14:13

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:
Avatar utente
Foto Utentetrillo
0 1 4
Frequentatore
Frequentatore
 
Messaggi: 100
Iscritto il: 29 mag 2006, 21:54

1
voti

[2]

Messaggioda Foto UtentePaolino » 19 lug 2006, 22:52

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.
Avatar utente
Foto UtentePaolino
32,5k 8 12 13
G.Master EY
G.Master EY
 
Messaggi: 4222
Iscritto il: 20 gen 2006, 11:42
Località: Vigevano (PV)

0
voti

[3]

Messaggioda Foto Utentetrillo » 21 lug 2006, 13:52

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:
Avatar utente
Foto Utentetrillo
0 1 4
Frequentatore
Frequentatore
 
Messaggi: 100
Iscritto il: 29 mag 2006, 21:54

1
voti

[4]

Messaggioda Foto UtentePaolino » 23 lug 2006, 15:37

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.
Avatar utente
Foto UtentePaolino
32,5k 8 12 13
G.Master EY
G.Master EY
 
Messaggi: 4222
Iscritto il: 20 gen 2006, 11:42
Località: Vigevano (PV)


Torna a Realizzazioni, interfacciamento e nozioni generali.

Chi c’è in linea

Visitano il forum: Nessuno e 4 ospiti