Tengo una función general, que se pasa, entre otros, un temporizador. Inicializa el temporizador utilizando la función de devolución de llamada común:
void setup(config_t* config) {
...
tc_enable(config.timer);
tc_set_overflow_interrupt_callback(config.timer, common_callback);
...
}
Esa función se puede llamar varias veces con diferentes configuraciones, incluidos los temporizadores. En la devolución de llamada de interrupción, me gustaría identificar de alguna manera qué temporizador causó la devolución de llamada.
void common_callback() {
// Which timer called?
}
No encontré una función asf tc_ que me diera algún tipo de identificación.
- Intenté ver
TCXX.INTFLAGS
, pero las marcas de desbordamiento parecen restablecerse con el código asf. - Un enfoque intrépido que podría encontrar es comparar el registro de conteo
¿Existe una forma sencilla de hacerlo utilizando el marco de software Atmel? Asumo que asf tiene un controlador de interrupción interno que hace algo como restablecer los indicadores de interrupción antes de llamar al callback definido por el usuario. Otro enfoque sería escribir tc_set_overflow_interrupt_callback
-function que mantendría parte de esa información.