ATmega16 Timer 1 Normal Mode
Dieses Codebeispiel setzt den Timer 1 des ATmega16 im Normal Mode auf.
Beschreibung
dieses Beispiel lässt den timer 1 im Normal Mode laufen. Er zählt bis 2^17-1 und setzt sich dann zurück. In
der main() Schleife beobachten wir das oberste Bit des Zählerregisters, wie es mit einer Periodendauer von 8.38s schwingt. |
Please visit: the four |
C Sourcecode
#include <avr/io.h>
// Calculations in the comments
// are valid vor a CPU Clock of 8MHz
int main(void)
{
DDRA = 0x01; // Set PA0 as output
TCCR1B = (1<<CS12)|(1<<CS10); // Start timer1 with prescaler 1024
// Fclk_timer = 8MHz/1024 = 7812.5Hz
for(;;) // Endless loop;
{
if (TCNT1 & 0x8000) // Check the MSB of the timer
PORTA |= 0x01; // Set PA0
else
PORTA &= ~0x01; // Reset PA0
// F_PA0 = 7812.5Hz/(2^16)=0.1192Hz
// t_period_PA0 = 8.38s
} // main() will never be left
return 0; // This line will never be executed
}
Download C-Sourcefile mit ASCII-Schema: C-Sourcefile mit ACII-Schema
Signalplots
Gelb: Digitaler Ausgang PA0
|