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

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren