Ereigniszähler

 

Auf jedem der 6 Timerkanäle können Ereignisse (max. 16-Bit) gezählt werden. In diesem Beispiel werden die steigenden Flanken auf Eingang COUNTA_1 (siehe Pinzuordnung ) in Timer 2 gezählt. Alle 300 Ereignisse wird ein Interrupt ausgelöst, dabei wird der Zähler zurückgesetzt. Das Beispielprogramm gibt nach 10 Sekunden den aktuellen Stand des Zählers aus.

 

Beispiel

 

word cnt;
 
void count_irq(void)
{
    cnt++;
    Irq_GetCount(INT_TIMER0);
}
 
void main(void)
{
    cnt= 0;
    Irq_SetVect(INT_TIMER2, count_irq);
    Timer_ConfigCounter(2, COUNTA_1, CNT_RISING, 300);
 
    AbsDelay(10000);
    Msg_WriteWord(Timer_GetCounterVal(2));
    Msg_WriteChar('\r');
 
    while(1);
}