mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Sinus in cHz genau mit Atmega162


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

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

Autor: Zwölf Mal Acht (hacky)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich denke du geht das Problem falsch an. Ein DDS hat immer 2^N 
Stuetzstellen.
Und wenn man eine hohe Aufloesung will, dann sowieso. Was soll das 
Messen am ICP  ? Zurueckmessen was man ausgegeben hat ?

Autor: Icke (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
O.. oha Jetzt ! schrieb:
> Ich denke du geht das Problem falsch an. Ein DDS hat immer 2^N
> Stuetzstellen.

Macht man zwar Sinnvollerweise meist so ist aber kein muss.

Autor: eProfi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hacky:
Er verwendet gar keine DDS!
Würde ich aber an dieser Stelle machen!

Er gibt immer alle 24 Stützstellen aus, aber mit variabler 
Ausgabefrequenz.

Thomas:
Gib mal auf der Seriellen den Timerwert aus, fällt Dir was auf?

Verbesserung:
1. DDS verwenden (Jesper's Poor Man DDS)
2. Taktfrequenz erhöhen.

Autor: Thomas (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ich wollte es so einfach wie möglich machen, da hier definitiv kein Hifi 
Sound benötigt wird, sondern nur ein einfaches Signal...

@hacky
klar wollte ich die Ausgabe messen, mein Oszi löst das nicht auf.

@e-profi
Du meinst die Timerwerte von welchem Timer? Den PWM oder den Timer 3?

Gruß

Thomas

Autor: Thomas (Gast)
Datum:

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

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.