Sinus in cHz genau mit Atmega162

Gast #1995690
Lesenswert?

Hallo,

ich möchte ein Sinussignal zwischen 63,00 und 65,00Hz auf cHz genau 
ausgeben.
In der Anordnung habe ich einen Atmega 162 auf STK500. Das Sinussignal 
hat nur 24 Stützstellen, da der Aktor, der damit betrieben werden soll 
entsprechend träge ist.
Sinus wird mit Timer2(8Bit) fast PWM, kein prescale
sowie Timer3 (16Bit) kein prescale über OCR3A fürs Auslesen der LUT 
erzeugt.

Das Sinussignal lasse ich zum Einen auf dem Oszi darstellen, zum Anderen 
wandle ich das Signal mit einem Schmitt Trigger und füttere damit die 
ICP von Timer 1 (prescale256).

Dazu lasse ich mir die Ergebnisse der Messung in ms*100, also für 15,873 
dann 15873 über UART ausgeben. (Periodendauer)
Ich hatte vor, damit eine Wertetabelle zu erstellen, indem ich die OCR3A 
Werte manuell verändere und dann den Periodendauern gegenüberstelle.
Daraus wollte ich eine Funktion ableiten, die dann im Projektprogramm 
aus entsprechenden Messergebnissen die korrekte Frequenz erzeugt.

Allerdings bringen die Änderungen des OCR3A in Einzelschritten, also zB.
von 2332 zu 2333 keine Änderung in den UART Ergebnissen. Erst nach 
einigen weiteren Einzelschritten verändert sich auch die Anzeige der 
ms*100

Im Oszi sind die Änderungen wg der Auflösung auch nur sprunghaft zu 
sehen.

Kann es sein, dass Interruptkonflikte UART/ICP/OCR eine Ursache sind, 
oder gehe ich das Ganze völlig falsch an?

Würde mich über einen Tipp freuen

Thomas
Angehängte Dateien:
Gast #1996542
Lesenswert?

@ e-profi

Danke, habe es begriffen!!! Typischer Anfängerfehler: Habe das korrekte 
Ergebniss von Timer1 in Menschenzeit umrechnen lassen und dann 
rumgenölt, dass es dann eine klar definierte Menge (je nach prescaler)an 
Rundungsfehlern gibt.

Wenn ich µC Zeit messe kann ich ja um rumzuspielen außerhalb des µC 
daraus machen was ich will, also auch ms mit float soviel ich will und 
mein PC hergibt ;-))

Das Forum hat mir schon super geholfen! Danke

Thomas

Achso: Frohes Neues an alle!

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