Timerfunktionen

 

Es stehen zwei (Mega32) bzw. drei (Mega128) unabhängige Timer zur Verfügung. Timer_0 mit 8 Bit, Timer_1 und Timer_3 mit 16 Bit (nur Mega128). Die Timer verfügen über einen programmierbaren Vorteiler. Mit dem Timer läßt sich eine Zeit festlegen, nach der ein Interrupt ausgelöst wird. In der Interruptroutine lassen sich dann bestimmte Verarbeitungsschritte ausführen.

 

Timer_T0Time (8 Bit)

 

Beispiel: Timer0: Ausgang mit einer Verzögerung von 6,94 ms (100x 69,44 µs, siehe Tabelle) einschalten

 

void Timer0_ISR(void)

{

    int  irqcnt;

    

    Port_WriteBit(0,1);

    Timer_T0Stop() ;                       // Timer0 anhalten

    irqcnt=Irq_GetCount(INT_TIM0COMP);

}

 

void main(void)

{

    Port_DataDirBit(0,0);                // PortA.0 Ausgang

    Port_WriteBit(0,0);                  // PortA.0 Ausgang=0

    Irq_SetVect(INT_TIM0COMP,Timer0_ISR);// Interrupt Routine definieren

    Timer_T0Time(100,PS0_1024);          // Zeit festlegen und Timer0 starten

    //  weiterer Programmablauf...

}