2
volatile uint32_t counter_timer = 0; void __USER_ISR myISR() { counter_timer++; clearIntFlag(_TIMER_3_IRQ); } void __USER_ISR myISR_timer_four() { clearIntFlag(_TIMER_4_IRQ); TMR4 = 0x16E3600; Serial.print("hi\n"); if(PORTAbits.RA10 != 1){ LATAbits.LATA10 = 1; } else{ LATAbits.LATA10 = 0; } } void setup{ T3CONbits.TCS = 0b0; // Timer Clock Source Select bit T3CONbits.TCKPS = 0b000; //0b111; // Timer Input Clock Prescale Select bits T3CONbits.ON = 0b1; //0;//0b1; asm("nop \n"); T4CONbits.TCS = 0b0; T4CONbits.TCKPS = 0b000; T4CONbits.T32 = 0b1; TMR4 = 0x16E3600; // half of 48mHz. T4CONbits.ON = 0b1; setIntVector(_TIMER_3_VECTOR, myISR); setIntPriority(_TIMER_3_VECTOR, 4, 0); clearIntFlag(_TIMER_3_IRQ); setIntEnable(_TIMER_3_IRQ); setIntVector(_TIMER_4_VECTOR, myISR_timer_four); setIntPriority(_TIMER_4_VECTOR, 1, 0); clearIntFlag(_TIMER_4_IRQ); setIntEnable(_TIMER_4_IRQ); TRISAbits.TRISA10 = 0; // Fubarino onboard yellow led } void loop() { delay(500); Serial.println(counter_timer); Serial.println(TMR4, DEC); } 

Hi,

i wanna use multiple interrupts, i got the information from a document i got from: Majenko Technologies. the interrupt bound to Timer3 works, this was the example code in the pdf. now i "assembled" a second interrupt bound to timer4, copy, paste and adapt, but that isn't working.

i can print the "content" of the timer4 register and it's running.

have i done something wrong? search engine didn't yield a answer.

1 Answer 1

1

The problem was that you need to combine the even and the next odd timer (see datasheet of the microchip pic you're using) to form a 32 bit timer.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.