kappa47 Posted April 9, 2022 Report Share Posted April 9, 2022 Quasi mi vergogno a chiederlo. Date un occhio a questo codice e ditemi perche' l'interrupt del timer 2 non scatta. Dovrebbe funzionare in free running. Utilizzo PIC16f18854 ... banksel T2CLKCON movlw 0x01 ;fosc/4 movwf T2CLKCON ; banksel T2CON movlw b'01001111' ;TMR2 stop / prescaler 1:16 / postascaler 1:16 movwf T2CON ; banksel T2PR movlw 0x80 ;a caso movwf T2PR ; banksel PIR4 bcf PIR4,TMR2IF ;reset pending (precauzione) ; banksel T2CON bsf T2CON,TMR2ON ;TMR2 start ; banksel PIE4 bsf PIE4,TMR2IE ;enable TMR2 interrupt bsf INTCON,PEIE ;enable peripheral interrupt bsf INTCON,GIE ;enable global interrupt ... Interrupt del timer 2 non viene mai generato. Manca qualche cosa ? Grazie e Buona Pasqua a tutti. Link to comment Share on other sites More sharing options...
Livio Orsini Posted April 9, 2022 Report Share Posted April 9, 2022 Domanda banale: li hai abilitati gli interrupt? Solitamente nella routine di inizializzazione dei timere la prima istruzione è un "disable interrupt" e l'ultima èun "enable interrupt"; similmente quando si esce dalla routine di servizio dell'interrupt si mette un bell'enable interrupt. Sono alcuni anni che non uso l'asm dei pic quindi sono un po' arrugginito, dovrei riprendermi i registri di quel tipo di pic per analizzare il tuo codice. Domanda di curiosità: perchè usare ancora l'asm quando sono anni che si usa praticamente solo il "C"? Link to comment Share on other sites More sharing options...
dott.cicala Posted April 9, 2022 Report Share Posted April 9, 2022 7 ore fa, kappa47 ha scritto: bsf PIE4,TMR2IE ;enable TMR2 interrupt bsf INTCON,PEIE ;enable peripheral interrupt bsf INTCON,GIE ;enable global interrupt l'interrupt è abilitato. Togli i reset precauzionale del flag TMR2IF e resettalo solo nella routine di interrupt Link to comment Share on other sites More sharing options...
Livio Orsini Posted April 10, 2022 Report Share Posted April 10, 2022 10 ore fa, dott.cicala ha scritto: l'interrupt è abilitato. Accidenti l'ho letto e non me ne sono accorto. Temo che l'alzheimer sia più che incipiente.😟 Link to comment Share on other sites More sharing options...
kappa47 Posted April 11, 2022 Author Report Share Posted April 11, 2022 Risolto. Adesso funziona, basta inserire queste due righe banksel PMD1 bcf PMD1,TMR2MD ;abil. modulo TMR2 (bit 2) Questa dimenticanza mi e' costata quasi 2 giorni ! Per Livio. Ovviamente il C e' da preferire, ma devo modificare un progetto fatto da altri in asm. Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now