mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik tiny24 compare match tut nicht richtig


Autor: Ralf (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Ronny (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Welchen Reload-Wert hast du den in OCR0A?Und wie genau sind die Fuses
für den Haupttakt den gesetzt?

Autor: Ralf (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Ralf (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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

Autor: Andi (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Andi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Nachtrag:
Nach dem ich jetzt das neuste Datenblatt geladen habe, ist da auch
richtig angegeben, dass das CKDIV8 Bit programmiert ist.

Autor: Ralf (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Andi,
verdammt...dieses Teiler Fuse Bit hatte ich völlig übersehen...ich
danke Dir...damit ergibt das alles einen Sinn.

Ich Danke Dir

Gruss Ralf

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
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.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.