Forum: Mikrocontroller und Digitale Elektronik Timer 2 starten; AtMega


von Toni (Gast)


Lesenswert?

Hallo Leute,

ich bin gerade dabei, zu versuchen, den Timer 2 zu starten. Ich kriege 
es aber nicht hin.

Folgender Code will nicht funktionieren:
1
//Timer 2
2
//Vorteiler = 1024
3
TIMSK |= (1<<OCIE2)|(1<<TOIE2);
4
TCCR2 |= (1<<CS20)|(1<<CS21)|(1<<CS22);
5
OCR2 = 125;

Ich bin eigentlich der Meinung, dass es genügt den Vorteiler zu setzen 
und der Timer dann anfängt zu zählen.

Im Datenblatt habe ich auch keinen speziellen Hinweis gefunden. Was 
mache ich falsch?
Gibt es sonst noch etwas zu beachten?
Ich verwende alle 3 Timer (Timer0, Timer1 funktionieren wunderbar).

Vielen Dank für eure Hilfe.

von Oliver S. (oliverso)


Lesenswert?

Toni schrieb:
> Ich bin eigentlich der Meinung, dass es genügt den Vorteiler zu setzen
> und der Timer dann anfängt zu zählen.

Das ist auch so. Wie stellst du denn fest, daß er nicht läuft?

Oliver

von W.A. (Gast)


Lesenswert?

Toni schrieb:
> Ich kriege es aber nicht hin.

Wie stellst du das fest?

Die drei Programmzeilen alleine werden dafür auch nicht reichen.

von mikki (Gast)


Lesenswert?

Das Programm sieht weniger vollständig aus wie die µC Bezeichnung. Mit 
beidem kann man nichts anfangen ohne zu raten.

von Wolfgang (Gast)


Lesenswert?

mikki schrieb:
> Das Programm sieht weniger vollständig aus wie die µC Bezeichnung.

Vielleicht hat der ATmega gar keinen Timer2 und Toni kriegt es nicht 
hin, weil sich schon der Compiler sträubt ;-)

von Toni (Gast)


Lesenswert?

Man, seid ihr Witzbolde. Dummes Gelaber kann ich nicht brauchen!

Ich nutze einen AtMega8L und ich toggel einen Pin in der Timer overflow 
Service Routine. Zusätzlich gebe ich mir jede Sekunde das TCNT Register 
per UART auf den PC aus.
Hat es vielleicht etwas mit dem asynchronen Modus zu tun?

von Wolfgang (Gast)


Lesenswert?

Toni schrieb:
> Man, seid ihr Witzbolde. Dummes Gelaber kann ich nicht brauchen!

Du bist doch der Witzbold, der sämtliche Details für sich behält und nur 
einen 3-Zeilen Codeschnipsel in die Debatte wirft. Vielleicht hast du 
deinen Interrupt nicht frei gegeben oder sonstwas. Ohne Code wird das 
nichts ...

von Frickelfritze (Gast)


Lesenswert?

Toni schrieb:
> Man, seid ihr Witzbolde. Dummes Gelaber kann ich nicht brauchen!

Ohne deinen vollständigen Code wird es wohl nichts werden
mit einer erfolgreichen Fehlersuche .....

von Felix A. (madifaxle)


Lesenswert?

Wenn das da oben der einzige Code ist, den du nutzt, dann gibt es nur 
den TOIE, da der OC-mode nicht aktiviert wurde.

von Oliver S. (oliverso)


Lesenswert?

Toni schrieb:
> Hat es vielleicht etwas mit dem asynchronen Modus zu tun?

Solange du nicht an den dazugehörigen Registern rumgefummelt hast, 
nicht.

Der Timer funktioniert genauso wie die anderen, daher machst du halt was 
irgendwo was verkehrt. Wo, musst du selber rausfinden.


Oliver

von Markus O. (pipimaxi)


Lesenswert?

Führst du irgendwo sei(); aus? Bisher nicht ersichtlich!

von c-hater (Gast)


Lesenswert?

Toni schrieb:

> Man, seid ihr Witzbolde. Dummes Gelaber kann ich nicht brauchen!

Dummes Gelaber sind Situationsbeschreibungen, bei denen alle 
wesentlichen Punkte fehlen. Also z.B. deine!

Es kann doch nicht so schwer sein, zumindest den konkreten Controller 
anzugeben, ein vollständiges Programm, welches das Problem aufweist und 
eine Darstellung dessen, was du erwartest, was passieren sollte und 
dessen, was statt dessen passiert.

Wer dazu nicht in der Lage ist, ist als Programmierer völlig 
unbrauchbarer Müll, denn genau das ist immer das, womit man eine 
Fehlersuche beginnt: möglichst viele Variablen von vornherein 
ausschließen, denn das reduziert den Suchraum für die möglichen Fehler 
auf das Minimum...

> Ich nutze einen AtMega8L und ich toggel einen Pin in der Timer overflow
> Service Routine.

Das z.B. könnte schon das Problem sein. Wenn du nämlich den Timer nicht 
aus der "Reset-Konfiguration" heraus initialisierst.

> Hat es vielleicht etwas mit dem asynchronen Modus zu tun?

Solange du den nicht konfigurerierst: sicher nicht. Und in den drei 
Zeilen Code, die du gepostet hast, konfigurierst du ihn nicht. Also: 
nein.

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.