Forum: Mikrocontroller und Digitale Elektronik Funktionsgenerator Andreas Schwarz


von Thomas (Gast)


Angehängte Dateien:

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

von Benedikt (Gast)


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...

von Thomas (Gast)


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?

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
Noch kein Account? Hier anmelden.