18f??k42 Timer 2/4/6 interrupts?
Postat: 7 december 2018, 10:56:34
Skall använda Timer2 i en 18F56K42 till att ge interrupts för att scanna en display. Dessa nya PIC har fått femtioelva nya finesser med resultat att det blir inga interrupts från timern...
Har testat med Timer1, som är mindre lämplig till detta, och då fungerar det, så hanteringen av det nya interruptsystemet med vektortabell är i ordning. Givetvis använder jag rätt position i IVT, kollat femtioelva gånger. Samma sak med PIR/PIE.
Någon som har fungerande kod som initierar en av dessa timers i någon *K42 till att ge interrupts? Måste vara för *K42 eller ev, ännu nyare som har hela registerhärket. Annars ar det en bagatell att göra.
Här är testcoden jag använt i en 46K42 på labplatta med samma resultat. TMR1 funkar perfekt, TMR2 är tvärdöd. Samma med TMR4. Nog bara en bit i något obskyrt register som saknas, men har tappat skärpan och ser inte var.
Har testat med Timer1, som är mindre lämplig till detta, och då fungerar det, så hanteringen av det nya interruptsystemet med vektortabell är i ordning. Givetvis använder jag rätt position i IVT, kollat femtioelva gånger. Samma sak med PIR/PIE.
Någon som har fungerande kod som initierar en av dessa timers i någon *K42 till att ge interrupts? Måste vara för *K42 eller ev, ännu nyare som har hela registerhärket. Annars ar det en bagatell att göra.
Här är testcoden jag använt i en 46K42 på labplatta med samma resultat. TMR1 funkar perfekt, TMR2 är tvärdöd. Samma med TMR4. Nog bara en bit i något obskyrt register som saknas, men har tappat skärpan och ser inte var.
Kod: Markera allt
* START TMR 2, ALL REGS IN ABANK
LOD A,#%_0000_0001 USE FOSC/4
LOD T2CLK,A
STZ T2RST A KNOWN STATE TO THIS
STZ T2TMR CLEAR COUNTER
LOD A,#128 TIMER PERIOD
LOD T2PR,A
LOD A,#%_0_011_0000 /8 PRESCALER, /1 POSTSCALER
LOD T2CON,A
LOD A,#%_101_0000
LOD T2HLT,A
SMB T2CON,7 START TIMER
* START TMR 1, ALL REGS IN ABANK
LOD A,#%_000_00001 USE FOSC/4
LOD T1CLK,A
LOD A,#%_0011_0010 /8 PRESCALER
LOD T1CON,A
STZ T1GCON A KNOWN STATE TO THESE
STZ T1GATE
SMB T1CON,0 START TIMER
.BC
LOD BS,#63
* START TMR 4, ALL REGS IN ABANK
LOD A,#%_0000_0001 USE FOSC/4
LOD T4CLK,A
STZ T4RST A KNOWN STATE TO THIS
STZ T4TMR CLEAR COUNTER
LOD A,#128 TIMER PERIOD
LOD T4PR,A
LOD A,#%_0_011_0000 /8 PRESCALER, /1 POSTSCALER
LOD T4CON,A
LOD A,#%_101_0000
LOD T4HLT,A
*SMB T2CON,7 START TIMER
LOD A,#%_1_011_0000 /8 PRESCALER, /1 POSTSCALER
LOD T4CON,A
.EC
* START INTERRUPTS
LOD BS,#PIR4/256
CLF T2IF
CLF T1IF
CLF T4IF
STZ PIR4
STZ PIR7
*SEF T2IE
*SEF T1IE
SEF T4IE
SEF GIEL
SEF GIE
JMP @
.BS 4-(@\4)\4 EVEN FOUR
****** TMR2 IRQ ROUTINE
*
TMR1IRQ
TMR2IRQ
TMR4IRQ
LOD A,#$FF DO SOMETHING VISIBLE
EOR LATD,A
LOD BS,#PIR4/256
CLF T2IF CLEAR INTFLAG
STZ PIR4
STZ PIR7
RIQ DONE