www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Problem bei linearer Frequenzerzeugeung


Autor: Alex (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo

Habe ein Problem bei der Erzeugung eines Sinus und hoffe ihr könnt mir 
helfen.

Zuerst zur Aufgabenstellung was das Programm machen soll:

Erzeugung eines Siuns von 3-150Hz mittels DA-Wandler und einstellen der 
Frequenz über Poti. Dabei sollte die Frequenz linear einstellbar sein. 
Das ist sie aber bei mir nicht.

Kurz meine Vorgehensweise:

Lese den AD-Wert des Potis ein und schreibe ihn in das Compare-Registers 
des Timers. Der Timer läuft im CTC-Modus und beim Capture Interrupt wird 
der Wert aus einer Sinustabelle (mit 256 Werten) über SPI dem DA-Wandler 
übergeben. D.h. die Frequenz ändere ich durch die Zugriffszeit auf die 
Tabelle.
Nun ändert sich aber dadurch die Frequenz nich linear. Bei kleinen 
Frequenzen kannn man die Frequenz sehr fein einstellen, wobei bei 
höheren diese sprunghaft ansteigt.

Das Problem ist, dass ich einen 8-Bit Timer mit CLK/128 benutze und 
somit dessen Auflösung 8 ns ist (16MHz Quarz). Das bedeutet bei 
niedrigen Comparewerten n=5 (hohen Frequenzen) das Übertragen einer 
Periode          256 x n x 8ns = 10ms = 100Hz
dauert. Wird der comparewert nur um 1 erhöht so dauert die Übertragung
256 x n+1 x 8ns =12ms = 83Hz

Benutzt habe ich ein Mega8. wenn ich den Timer schneller laufen lasse 
wird es zwar besser aber ich komme nicht mehr in die niedrigen 
Frequenzen.

Wie würdet ihr so etwas realisieren bin für jeden Tip dankbar

Gruß









Autor: Andreas Schwarz (andreas) (Admin) Benutzerseite Flattr this
Datum:

Bewertung
0 lesenswert
nicht lesenswert

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.