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
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.
Vielen Dank für deine Hilfe, allerdings passt bei mir irgendwas nicht, ich kann mit meinen Berechnungen keine Werte bis 20khz erzeugen, oder?
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.
Vielen Dank für die Antwort Johannes, teile ich meine Quarzfrequenz nicht nochmal durch 256 für den 8bitTimer? gruss Flo
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.