Forum: Mikrocontroller und Digitale Elektronik Timer2 initialisieren


von Robert_1 (Gast)


Lesenswert?

Hallo,
Ich möchte Timer2 so initialisieren dass ich nach jedem Überlauf(100µs) 
einen Sendepuls erzeugen. Ich nehme den Prescaler 256 aber irgendwie 
klappts nicht weil ich wahrscheinlich entweder den falschen 
Prescaler(256) nehme oder einen Startwert dafür berechnen muss.

Also die Frage ist: wie wird der Startwert berechnet?

Controller: mega328p
F_CPU = 16Mhz


Timer2-Funktion:
void Timer2Init(void)
{
        TCCR2B = (1<<CS22)|(1<<CS11) ;
        TIMSK2 = 1<<TOIE2 ;

}

Danke.

Gruß

von spess53 (Gast)


Lesenswert?

Hi

>Also die Frage ist: wie wird der Startwert berechnet?

Welcher Startwert? Der Timer kann CTC.

MfG Spess

von Karl H. (kbuchegg)


Lesenswert?

Robert_1 schrieb:

> Also die Frage ist: wie wird der Startwert berechnet?

spess53 hats ja schon gesagt: CTC ist das was du suchst.

Aber um auch auf die Frage ein wenig einzugehen.

Deine Frage ist auf dem Niveau von:
Wenn ich präzise alle 2 Minuten 30 Sekunden "Aua" schreie, wie oft muss 
ich dann "Aua" schreien, bis 1 Stunde um ist.

That's it. Das ist im Prinzip die Berechnung die du machen musst. Und 
das ist so trivial, dass jeder sie hinkriegt, wenn er nur gewillt ist, 
ein bischen zu rechnen und sich überlegt, was so ein Timer eigentlich 
macht und wie er arbeitet.

FAQ ganz unten, letztes Kapitel

von Robert_1 (Gast)


Lesenswert?

Hallo,

>Welcher Startwert?
Ich meine, der Startwert so zu wählen dass ich in der ISR einen Puls 
nach jedem Überlauf erzeugen kann.

ISR(....)
{

PORTB = ~PORTB;

TCNT2= 0
}
>Der Timer kann CTC

Okay bin nicht drauf gekommen weil ich das einfach nicht verstehe:-( was 
soll ich im Code dann ändern damit der Timer in dieses Modus betrieben 
wird?

Und wenn man den timer 2 in Normal Modus betreiben will, sollte man 
einen Startwert berechnen oder?

Danke
Gruß

von Robert_1 (Gast)


Lesenswert?

>Wenn ich präzise alle 2 Minuten 30 Sekunden "Aua" schreie, wie oft muss
>ich dann "Aua" schreien, bis 1 Stunde um ist.

Auaaaaa :-)))

von spess53 (Gast)


Lesenswert?

Hi

>Okay bin nicht drauf gekommen weil ich das einfach nicht verstehe:-( was
>soll ich im Code dann ändern damit der Timer in dieses Modus betrieben
>wird?

Datanblatt Timer2 Register Description lesen. Stichwort WGM-Bits.

MfG Spess

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.