Funktionsgenerator Andreas Schwarz

Gast #109932
Lesenswert?

Hallo!
Kann mir vielleicht irgendjemand mal erklären, wie in dem Code von
Andreas Schwarz die Frequenzumstellung funktioniert?
Ich versteh das einfach net! Wenn man z.B. den Taster "Frequenz
erhöhen" drückt lädt man Werte in die Register Change1, 2 und 3. Aber
das hat doch dann keinerlei Auswirkungen auf das Timerinterrupt oder
die Ausgabe der Hex-Werte an den PortD.
Würde mich über Hilfe freuen.

Thomas
Angehängte Dateien:
Gast #109933
Lesenswert?

Doch und zwar hier:
add z1, change1                   ; Phasenakkumulator
adc z2, change2
adc z3, change3

Hier wird quasi die Auflösung des Signals verändert.
Je höher der Wert, desto schneller wird eine Signalperiode durchlaufen
und desto höher die Frequenz.
Ein Nachteil an dieser Software ist die niedrige Samplerate von 256kHz.
Damit lassen sich maximal 10kHz Sinus, Dreieck und Rechteck erzeugen,
oder man verwendet für jede Kurvenform einen eigenen Filter, dann geht
es bei Sinus bis etwa 100kHz.

Ich verwende einen eigenen uC für die Signalerzeugung und erreiche mit
einem übertakteten AT90S2313 2MHz Samplerate. Dies erzeugt eine saubere
Sinus, Dreieck, Sägezahn und Rechteck Kurve bis 100kHz. MIt
entsprechendem Filter auch ein Sinussignal mit 1MHz...
Gast #109934
Lesenswert?

Dann müsste doch der Inhalt von Z1, Z2 und Z3 Auswirkungen auf das
Timerinterrupt haben, z.B. mit Veränderung des Compare-Wertes. Aber wo
wird im Programm gesagt das die Zeitabstände zwischen den Ausgaben der
Hex-Werte größer werden soll?

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