Forum: Mikrocontroller und Digitale Elektronik Atmega 8 OC1 Pin mit 32Khz


von Falke (Gast)


Lesenswert?

Hallo zusammen,

Ich bin gerade dabei einen 32 Khz Takt mit meinem Atmega 8 zu erzeugen.
Der Atmega 8 wird mit einem 8Mhz Quarz angesteuert. Der Takt soll durch 
das Toggeln des OC1A Pins erzeugt werden. Leider funktioniert der Takt 
nicht sprich der Ausgang bleibt auf low.

Hoffentlich könnt ihr das Problem finden.

Anbei der Quellcode:
1
DDRB |=  (1<<DDB1); //PB1 (OC1A)als Ausgang
2
3
4
TCCR1A=(0<<COM1A1) | (1<<COM1A0);  //OC1 Pin im Toggle Mode  aktivieren
5
TCCR1B=(1<< WGM12); //CTC Mode aktivieren
6
OCR1A = 249; //Timer auf Wert setzen >> 250 Zählschritte entspricht bei 8MHz Takt 32Khz
7
8
TCCR1B = (1<<CS10); //Timer ohne Vorteiler aktivieren

Vielen Dank!
MFg

von Spess53 (Gast)


Lesenswert?

Hi

>TCCR1B=(1<< WGM12); //CTC Mode aktivieren

>TCCR1B = (1<<CS10);

Fällt dir etwas auf?

>OCR1A = 249; //Timer auf Wert setzen >> 250 Zählschritte entspricht bei >8MHz 
Takt 32Khz

Das ergibt 15kHz.

MfG Spess

von Spess53 (Gast)


Lesenswert?

Hi

>Das ergibt 15kHz.

Natürlich 16kHz.

MfG Spess

von Johannes O. (jojo_2)


Lesenswert?

Falke schrieb:
> TCCR1B=(1<< WGM12); //CTC Mode aktivieren
> [...]
> TCCR1B = (1<<CS10); //Timer ohne Vorteiler aktivieren

Beachte: In dieser letzten Zuweisung, LÖSCHT DU das oben gesetzte Bit!
Verwende anstatt TCCR1B = hier besser TCCR1B |=
Sofern du den Unterschied zwischen den beiden Zuweisungen nicht kennst, 
schau dir bitte das ganze Themengebiet anhand von Tutorials usw. genauer 
an.

von Falke (Gast)


Lesenswert?

Ok Vielen Dank dass werde ich dann noch ändern müssen...

Aber das Hauptproblem ist dass mein Pin immer auf low Level bleibt?
Der Timer sollte doch im CTC Mode unabhängig von meinem Programm laufen 
oder bin ich falsch?


Vielen Dank nochmal.

von Martin K. (maart)


Lesenswert?

Keine Ahnung. Zumindest im Simulator funktioniert es bei mir.

von Falke (Gast)


Lesenswert?

Dass ich das TCCR1B Register "verodern" muss hätte ich selbst drauf 
kommen können.....

Habe das ganze jetzt nochmals ausprobiert aber leider tut sich immer 
noch nichts...

Ist das ganze vllt. noch von etwas anderem abhängig?

Muss ich noch ein anderes Register setzten? Habe ich da nochwas 
übersehen.

Vielen Dank nochmals!

von Martin K. (maart)


Lesenswert?

Zeig' mal das ganze Programm.

von Spess53 (Gast)


Lesenswert?

Hi

>Habe das ganze jetzt nochmals ausprobiert aber leider tut sich immer
>noch nichts...

Mißt du auch am richtigen Pin?

MfG Spess

von Falke (Gast)


Lesenswert?

Ja leider messe ich am richtigen Pin (Nr. 15)

Das wäre natürlich der Super Gau gewesen wenn Ich am falschen Pin 
gemessen hätte....

Ich habe auch den Timer 0 in Benutzung kann der den Timer 1 
beeinflussen?

von Martin K. (maart)


Lesenswert?

Martin Kreiner schrieb:
> Zeig' mal das ganze Programm.

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.