Wilkommen im Forum,
Grundsätzlich ist es egal welchen Timer du verwendest. Du kannst den Timer aber nur für eine Aufabe verwenden. Wenn du z.B. Timer0 für die PWM Erzeugung nutzt kannst du den Sekundentakt nicht mit dem Timer0 erzeugen. Du nimmst also einfach den ersten Timer den du noch nicht brauchst.
Wenn eine Funktion hardwaremäßig im Controller ist (Timer, ADC, I2C, SPI, RS232,...) läuft dies unabhängig (wenn richtig konfiguriert) vom Programm. Auf Ereignisse wirst du mit Interrupts aufmerksam gemacht. Wenn z.B. der Timer überläuft wird ein Interrupt ausgelöst.
Zum Timer: Du nimmst den größtmöglichen Prescaler. Wenn du 16MHz hast, brauchst du einen Prescaler von 1024. Somit erhältst du 16000000Hz / 1024 = 15625Hz. Das ist die Frequenz um die der Zählerwert des Timers um 1 erhöht wird. Bei 8Bit hättest du dann 256 Schritte (0-255) und bei 16Bit hast du 1024 Schritte (0-1023). Wenn du einen 16Bit Timer nimmst erhälts du eine Frequenz von 15625 / 1024 = ca.15,26Hz. Somit erhältst du 15,26 Überläufe/s (f=1/s). Mit der Wahl des richtigen Zählerwertes kannst du auf genau 16 Überläufe kommen. Jetzt musst du nur noch bis 16 Zählen und hast dann 1 Sekunde.
Vielleicht hilft das weiter http://www.rn-wissen.de/index.php/Timer/Counter_(Avr)
MfG Hannes
Lesezeichen