www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik CTC-Mode Atmega8 OCR2 kleiner 1?


Autor: Flori (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Leute,

ich versuche seit Tagen mein Atmega8-Timer mit 3646800Qarz in Gang zu 
bekommen, teilweise auch mit Erfolg allerdings scheiterts an Dingen, die 
ich einfach nicht im Datenlatt sehe, oder übersehe. Vielleicht kann mir 
jemand von euch helfen?
Also mein Problem ist, dass ich eine variable Rechteckspannung benötige. 
Nun habe ich den CTC-Modus erfolgreich aktiviert und habe mir folgendes 
errechnet: Interrupts = 3686400/(2*256*1024) = 7,03125Hz
7,03125*255/Rechteckfreq = OCR2
Ist das so korrekt?
was mache ich nun, wenn der berechnete Wert für OCR2 kleiner 1 wird, 
also double??? Was bedeutet das dann konkret?
Leider finde ich dazu keine Angaben im Datenblatt oder überlese sie 
chronisch und geschickt :-(
ich muss einen Frequenzbereich von ca 2k-20kHz abdecken...

Danke und Lieben Gruss
Flori

Autor: Johannes M. (johnny-m)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
OCR2 kann mit einem Gleitkommawert nichts anfangen. Generell sollte eine 
solche Berechnung auch ohne Gleitkomma gehen und auch so implementiert 
werden (siehe Festkommaarithmetik).

In Deiner Berechnung oben fehlt aber noch die Tatsache, dass ein 
Compare-Ereignis erst jeweils einen Timertakt nach dem Feststellen der 
Gleichheit der Werte im OCR und im TCNT stattfindet (sprich, das Flag 
wird erst im OCR2+1en Takt gesetzt). Deshalb ist ein Wert von 0 im OCR 
auch kein Problem. Wenn im OCR eine 0 steht, dann wird nach jeweils 
einem Takt das Compare-Flag gesetzt und (im CTC-Modus) der Timer 
zurückgesetzt.

Autor: Flori (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Vielen Dank für deine Hilfe, allerdings passt bei mir irgendwas nicht, 
ich kann mit meinen Berechnungen keine Werte bis 20khz erzeugen, oder?

Autor: Johannes M. (johnny-m)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Flori wrote:
> Vielen Dank für deine Hilfe, allerdings passt bei mir irgendwas nicht,
> ich kann mit meinen Berechnungen keine Werte bis 20khz erzeugen, oder?
Mit einem Prescaler von 1024 kannst Du maximal
 erzeugen. Dass das keine 20 kHz geben kann, sollte klar sein. Dafür 
bräuchtest Du einen Quarz mit mehr als 40 MHz.

Autor: Flori (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Vielen Dank für die Antwort Johannes,

teile ich meine Quarzfrequenz nicht nochmal durch 256 für den 8bitTimer?
gruss Flo

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.