ATmega32 Timer 1 Normal Mode
Dieses Sourcecode Example bereibt den Timer1 des ATmega32 im Normal Mode.
Beschreibung In diesem Programm läuft Timer1 im Normal Mode. Er zählt bis (2^17)-1 und setzt sich anschliessend zurück. In der main() Schleife wird das oberste Bit des Zählerregisters aiuf einen Digitalausgang übertragen. Dieser schwingt mit einer Periodendauer von 8.38s. |
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: Downloadlink
Signalplots
Gelb: PA0 ist gleich dem höchsten Bit des Zählerregisters
|