|
Navigation: Bibliotheken > Timer > 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...
}