tiny24 compare match tut nicht richtig

Gast #395279
Lesenswert?
• ▲
▼
Hallo,
ich verzweifele hier gerade an der compare Funktion des Timer0 eines
tiny24.

Im Datenblatt steht für OCR0A=0 sei die Frequenz am Ausgangspin
OC0A  =fclock/2.
Mit dem internen 8mhz oszilator (ohne Vorteiler) messe ich aber nur
500khz am Pin OC0A und nicht wie erwartet 4MHZ.

Folgende Bits des Timers habe ich gesetzt:

Register TCCR0A:

Bit 1 WGM01   CTC aktivieren
Bit 6 COM0A0  Ausgang OC0A toggelnd


Register TCCR0B:

Bit 0 CS00    Interner Systemtakt(8mhz) ohne Vorteiler

Register OCR0A habe ich null und alle Richtungsbits in ddrb auf high
gesetzt.

Habt Ihr eine Idee was mein Fehler sein könnte?
Gast #395281
Lesenswert?
• ▲
▼
Mein Relaod Wert ist 0
im Datenblatt des Tiny24 steht auf Seite 77:
The waveform generated will have a maximum frequency of fclk_I/O /2
when OCR0A is set to zero (0x00)

Fuses hmm habe im AVR Studio einfach internen 8MHZ Oszi ausgewählt. In
Klammern steht da CKSEL=0010 und SUT=10
Gast #395282
Lesenswert?
• ▲
▼
Hallo,

ich kann ja verstehen, das sich bei dem Durcheinander was ich da
gestern Abend verzapft habe niemand die Mühe macht mir einen Tip
zugeben. Deshalb habe ich mal den Assemblercode der Timerinitialsierung
angehängt.
Wie gesagt, mein Problem ist am Ausgang messe ich 500khz und nicht
4MHz.
(interner 8mhz oszi)
Vielleicht hat jetzt jemand von euch eine Idee?

Gruss Ralf
Angehängte Dateien:
Gast #395283
Lesenswert?
• ▲
▼
Hallo Ralf

Da ich gerade mit einem Tiny44 am experimentieren bin, habe ich es
schnell ausprobiert, und es kommen tatsächlich nur 500 kHz. Es scheint
so, dass der Tiny mit 1 MHz läuft statt 8MHz und das liegt daran dass
das CkDIV8 Bit der L-FUSE entgegen dem Datenblatt halt doch
programmiert ist. Den Clk-Prescaler kann man aber auch ohne
umprogrammieren der Fuse ändern, und mit folgendem Code kamen dann doch
4 MHz aus dem OC0A-Pin:

  ldi  r16,0b01000010         ;CTC A, Bit toggle
  out  TCCR0A,r16
  ldi  r16,0b00000001         ;Timer Prescaler=1
  out  TCCR0B,r16
  ldi  r16,0                  ;OCR0A=0
  out  OCR0A,r16
  sbi  DDRB,2                 ;OC0A=Output

  ldi     r16,$80
  out  CLKPR,r16
  ldi  r16,0                  ;CLK= 8MHz
  out  CLKPR,r16

Gruss Andi

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.