Quiero usar timer1 y timer2 para el mismo vector TIMER#_COMPA_vect
isr en atmega328p.
La idea es iniciar y detener uno cuando se solicite, para funciones sensibles al tiempo. Y para seguir corriendo siempre para mantener el tiempo del reloj.
Al inicializar ambos temporizadores, no funcionan. Mientras que lo hacen al inicializar por separado.
Timer2
void timer2CtcInit(void){
//Timer 2 interrupt service routine CTC settings, 1 uS:
TCCR2A = 0;
TCCR2B = 0;
//set CTC mode
TCCR2A |= (1 << WGM21);
//prescaler 1 for timer2
TCCR2B |= (1 << CS20);
// value for 1 usec
OCR2A = 15;
//set compare match for register OCRA
TIMSK2 |= ( 1 << OCIE2A);
}
Timer1
void timer1CtcInit(void){
//timer1 for 100 ms
cli();
TCCR1B = 0;
TCCR1A = 0;
//set CTC mode
TCCR1B |= (1 << WGM12);
// enable compare match interrupt
TIMSK1 |= (1 << OCIE1A);
sei();
// set OCR0A value for 100 msec
OCR1A = 0x0619;
//set 1024 prescaler
TCCR1B |= (( 1 << CS10) | (1 << CS12));
}
Seguido de dos ISRs
ISR (TIMER1_COMPA_vect){
tmr1Count++;
}
y
ISR (TIMER2_COMPA_vect){
if(timerFlag)
tmr2Count++;
}
Todo esto no funciona en conjunto.
Editar
Supongo que OP es un tanto engañoso de mi objetivo.
Quiero usar dos temporizadores para diferentes interrupciones de tiempo. Uno para mantener la hora del reloj en la pantalla LCD y otro para dar pulsos en ciertos momentos. Por alguna razón, los temporizadores no funcionan como se esperaba al inicializar ambos: Timer2 obtiene mayor prioridad y Timer1 no funciona.
Los temporizadores se prueban en la pantalla LCD, Timer2 por segundos y Timer1 minutos.
¿Cómo configurar dos temporizadores ejecutándose simultáneamente?