ATmega8 CLK/timer1 an OC1B

Gast #743497
Lesenswert?
• ▲
▼
Hallo,
ich möchte gerne per Timer mit Prescaler 64 aus dem 8MHz Takt eines 
ATmega8 ein 125khz Takt an einen Pin herausführen. Ich dachte immer es 
sei möglich passend zum Timer OC1B "mitschwingen" zu lassen, kann es 
aber jetzt beim besten willen nciht mehr hinbekommen...
Geht das so garnicht, bzw. muss ich manuell per Interrupt-Handler einen 
Pin auf Low/High schalten?
Danke,
Julian
#743628
Lesenswert?
• ▲
▼
Das was Du vorhast, geht zwar im Prinzip (also was das hardwaremäßige 
Umschalten eines Portpins durch die Compare-Einheit angeht), aber nicht 
mit den von Dir genannten Einstellungen.

Die Compare-Einheit kann im CTC-Modus (den sollte man für sowas 
verwenden, wenn das Signal nicht pulsbreitenmoduliert werden soll) den 
Pin nur toggeln (also umschalten). Pro Periode des Ausgangssignals sind 
aber zwei Umschaltungen nötig. 8 MHz / 64 sind aber schon 125 kHz, was 
bedeutet, dass mit der Prescaler-Einstellung die maximal mögliche 
Frequenz am Output-Compare-Pin 125 kHz / 2, also 62,5 kHz beträgt.

Abgesehen davon muss der betreffende Pin selbstverständlich als Ausgang 
konfiguriert sein. Wenn das der Fall ist, sollte das eigentlich 
funktionieren (z.B. ohne Prescaler und 31 im Compare-Register).

EDIT:
Hatte überlesen, dass Du es an OC1B machen willst. Das geht nicht so 
einfach, weil CTC nur mit OC1A geht. Wenn das Signal unbedingt an OC1B 
ausgegeben werden muss, dann musste wohl oder übel ne PWM nehmen.

Und noch was: Beim nächsten Mal schickste bitte deinen bisherigen Code 
mit, damit man sieht, was Du da überhaupt machst.
Gast #743755
Lesenswert?
• ▲
▼
Hallo Johannes,

danke für die Tipps, ich habe das gerade mal probiert. Port OC1A ist 
auch ok...
Habe dazu folgenden Code benutzt:
1
DDRB = (1<<DDB1);
2
OCR1A = 31;
3
TCCR1A = (1<<COM1A0);
4
TCCR1B = (1 << CS10);
5
TIMSK |= (1<<TOIE1);                // enable timer

Damit bekomme ich allerdings genau 60Hz statt 125kHz am OC1A Ausgang. 
Mache ich noch etwas falsch?

Danke,
julian

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.