OK. Stichwort hier sind die hardwaretimer von der µ. Der MEGA32 hat 3 solche Timer (counter), 2*8 bit und 1*16 bit. Diese Timer konnen hoch oder unterzahlen auf eine bestimmte Teilfrequenz von der hauptakt. So mit der Haupttakt von 8 MHz kansst du zahlen an 8MHz oder ein teilfactor davon (prescaler). Mit hilfe von bestimmte register (OCR) konnen dan bei bestimmte ergebnissen etwas getan wirden. Sage mal diesen 8 bit counter lauft mit ein prescaler von 8. Dan ist seine Frequenz 1 MHz. In 1 mS zaehlt er dan hoch bis 1000.... Leiter gibt nur 8 bit, nach 255 fangt das wieder von 0 an... Lassen wir mal bei Zahlerwert 200 eine Ausgang toggle (wechseln von Zustand) und der Zaehler zuruck auf 0 setzen. Dan schaltet diese Ausgang mit 5000 Hz !! Zahler rucksetzen bei 50 gibt dan schon 20000 Hz.
Leiter sind alle 3 Timer bei den RP6 schon genutzt für : PWM Motoren, ACS - RC5 Functionen, Stopwatches und Timer Functionen.
Aber du muss sicher mal die RP6lib ansehen. Das nutzen von diese Timer ist nicht so gans einfach. Bestimmte Register mussen richtig gesetzt werden, interrupts sub routines (ISR) mussen programmiert werden. Aber mit Hilfe von das gut documentierte Lib von RP6, und das datasheet von der ATMega32 ist das zu verstehen.