-
-
Timer für lange Laufzeiten
Hallo,
ich möchte mit eine Timer lange Zeiten realisieren. Im berreich Minuten und Stunden.
Also habe ich den Timer mit Teiler 1024 gestartet heißt das ich rund 3,8 mal pro sec die 256 voll habe. Also 0,263 sec.
in einer If schleife Warten bis ich die 4 mal durchlaufen habe = 1,xxx sec. Genauigkeit reicht für meine Anwendung.
nun kann ich mit einer hochgezählten Variabele S eigendlich grob die Sec vorgen ( zumindest bis 32000 ) so die Theorie.
Nun meine Frage:
geht das auch eleganter und warum bekome ich in meiner Variable s nur secundenbruchteile abgebildet ( Wert 10 ca. 1 sec.)
Danke und Gruß
#include <avr/io.h>
int main(void)
{
int i;
int s;
i=0;
s=0;
DDRC = (1 << DDC0) |(1 << DDC1); // pin c0 und c1 als ausgang
for( ;; )//Endlosschleife
{
TCCR0 |= (1<<CS00)|(1<<CS02); //Teilung 1024 des Taktes
if(TCNT0==255){
i=i++;} // alle 0,2612 sec einen hochzählen 1Mhz/1024=976 976/256 = 3,8146 1/3,8146/1=0,2612
if(i==4){
s=s++;
i=0;} // s für sec alle 0,2612 sec mal 4 = 1,0448 variable s einen hochzählen
if(s==5000){
PORTC |= (1<<PC1);// Port C1 auf high
}
}
}
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- Anhänge hochladen: Nein
- Beiträge bearbeiten: Nein
-
Foren-Regeln
Lesezeichen