kappa47 Posted April 9, 2022 Report 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.
Livio Orsini Posted April 9, 2022 Report 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"?
dott.cicala Posted April 9, 2022 Report 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
Livio Orsini Posted April 10, 2022 Report 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.😟
kappa47 Posted April 11, 2022 Author Report 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.
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