- Messaggi: 1222
- Ringraziamenti ricevuti 104
problema timer pic16f88
10 Anni 7 Mesi fa #6
da StefA
..avevano magari fatto lo sgambetto al ka, ma il sangue restava sempre più denso dell'acqua.. [cit.]
Risposta da StefA al topic problema timer pic16f88
un problema in meno!
L'altro lo risolveremo..se è una cosa che ci è permesso di fare... è solo questione di tempo..
Nel datasheet comunque c'è quasi sempre la risposta, io appena ho tempo ci butto un occhio...
Ste
L'altro lo risolveremo..se è una cosa che ci è permesso di fare... è solo questione di tempo..
Nel datasheet comunque c'è quasi sempre la risposta, io appena ho tempo ci butto un occhio...
Ste
..avevano magari fatto lo sgambetto al ka, ma il sangue restava sempre più denso dell'acqua.. [cit.]
Si prega Accedi o Crea un account a partecipare alla conversazione.
- StefA
- Moderator
Riduci
Di più
10 Anni 7 Mesi fa #7
da +RGZ
Risposta da +RGZ al topic problema timer pic16f88
Ciao non è che per caso quando abiliti RBIF e poi alla fine della routine di interrupt non resetti RBIF, io per esempio quando entro nella routine salvo il contesto (sto parlando in assembler) vado a vedere chi a generato l'interrupt testando TMR0IF oppure TMR1IF oppure RBIF etc etc poi faccio il da farsi, resetto TMR0IF,TMR1IF,RBIF,etc (a seconda di quello che ho gestito) ripristino il contesto e retfie.
Ti posto un esempio
;Interrupt vector
;Punto di inizio per tutte le subroutine di gestione degli interrupt
ORG 04H
;**********************************************************************
; Interrupt handler
;**********************************************************************
;Save CONTEXT w,flag
movwf ACCW_R ;salva l'accumulatore
swapf STATUS,W ;salva nell'acc
movwf FLAG_R ;salva status swappato in registro
;Check the interrupt event
btfsc PIR1,TMR1IF ;overflow TMR1
goto IntTMR1IE
btfsc INTCON,INTF ;segnale su RB0
goto IntRBIF
;Reset the T0IF and RBIF flags to re-enable the interrupts
End_ih
bcf PIR1,TMR1IF
bcf INTCON,INTF
;Restore CONTEXT
swapf FLAG_R,W ;carica l'acc con i flag salvati senza alterare Z
movwf STATUS ;salva nel registro status
swapf ACCW_R,F ;swappa acc
swapf ACCW_R,W ;salva l'accumulatore
retfie
IntTMR1IE
......
......
goto End_ih
IntRBIF
......
......
goto End_ih
...in C fai lo stesso, ma ricordati di resettare i vari XXIF che hanno generato l'interrupt altrimenti non sarà riabilitato.
Ciao Gabriele
Ti posto un esempio
;Interrupt vector
;Punto di inizio per tutte le subroutine di gestione degli interrupt
ORG 04H
;**********************************************************************
; Interrupt handler
;**********************************************************************
;Save CONTEXT w,flag
movwf ACCW_R ;salva l'accumulatore
swapf STATUS,W ;salva nell'acc
movwf FLAG_R ;salva status swappato in registro
;Check the interrupt event
btfsc PIR1,TMR1IF ;overflow TMR1
goto IntTMR1IE
btfsc INTCON,INTF ;segnale su RB0
goto IntRBIF
;Reset the T0IF and RBIF flags to re-enable the interrupts
End_ih
bcf PIR1,TMR1IF
bcf INTCON,INTF
;Restore CONTEXT
swapf FLAG_R,W ;carica l'acc con i flag salvati senza alterare Z
movwf STATUS ;salva nel registro status
swapf ACCW_R,F ;swappa acc
swapf ACCW_R,W ;salva l'accumulatore
retfie
IntTMR1IE
......
......
goto End_ih
IntRBIF
......
......
goto End_ih
...in C fai lo stesso, ma ricordati di resettare i vari XXIF che hanno generato l'interrupt altrimenti non sarà riabilitato.
Ciao Gabriele
Si prega Accedi o Crea un account a partecipare alla conversazione.
- +RGZ
- Junior Member
Riduci
Di più
- Messaggi: 22
- Ringraziamenti ricevuti 0
10 Anni 7 Mesi fa #8
da spranzi
Risposta da spranzi al topic problema timer pic16f88
Sisi lo azzero il flag. Una volta che si è verificato interrupt faccio il polling delle periferiche e una volta individuato quale ha richiesto servizio eseguo le varie operazioni e poi azzero il flag. Il mio problema è che quando attivo il timer0 e il timer1 insieme il programma non mi funziona più, l'altro di RBIE l'ho risolto
Grazie mille per esserti interessato
Grazie mille per esserti interessato
Si prega Accedi o Crea un account a partecipare alla conversazione.
- spranzi
- Autore della discussione
- New Member
Riduci
Di più
- Messaggi: 10
- Ringraziamenti ricevuti 0
Moderatori: Mauro Laurenti, Pinna, StefA, Matteo Garia
Registrati al sito
Accedi a tutte le risorse e articoli non visibili pubblicamente, puoi registrarti con pochi passi.