-
-
Erfahrener Benutzer
Robotik Visionär
Man kann etwas schnelle werden, wenn man die schleife etwas länger macht, und dann 2 Werte in der Schleife Ausgibt. Da spart man sich einen RJMP Befehl (=2 Takte).
Die Tasten oder ggf. auch eine UART oder I2C kann man im Interrupt auswerten, aber dann hat man immer Störungen wenn eine Taste gedrückt wird. Wenn man die Auswertung in der Schleife macht, wird das allerdings ein ziehmliches gerechne damit man weiterhin alle z.b. 10 Takte die daten ausgeben will. Man hat dann also nur jeweils ein paar Zyklen zeit, und muß immer gleich schnell sein, unabhängig ob eine Taste gedrückt ist.
Die Alterantive wäre es die DDS Ausgabe in eine ISR zu packen und dann die Tasten behandlung usw. im Hauptprogramm zu machen. Durch den Overhead beim Interrupt wird man da wohl kaum unter 10-12 Zyken kommen. Das wäre dann schon mit deutlich mehr als 1 Ausgabewert pro ISR, vermutlich etwa 4 bis 8.
Außerdem hat man noch etwas Jitter in der Ausgabe, denn die ISR kann noch bis zu 1 oder 2 Zyklen verzögert sein. Das könnte man zwar noch kompensieren,kostete dann aber extra Zeit ( ca. 10 Zyklen) und wird daher eher nicht lohnen. Dafür kann man aber die tabelle auf 1024 Werte oder wenigstens 512 Werte verlängern. Im Interrupt würde das nicht mal extra Zeit kosten, sonst nur 2-3 Zyklen.
Ich bin auch gerade dabei mir einen Funktionsgenerator auf AVR Basis zu entwerfen. Ich werden vermutlich den Weg mit Ausgabe in der ISR wählen. Man wird zwar nicht ganz so schnell, aber so groß ist der Unterschied nicht. Versuchsweise werden ich aber auch mal die Tastenabfrage (bzw. AD Wandler oder I2C) in kleinen Häppchen probieren.
Zum Ausgangsfilter kann man bei den fertigen DDS Chips abschauen. Soweit ich mich da erinnere ist eine einfache, aber schon ganz gute Version ein LC Filter mit einem passiven RC Filter dahinter. Der LC Filter gibt neben der starken Unterdrückung hoher Frequenzen auch etwas Resonanzüberhöhung und damit Anhebung kurz vor der Grenzfrequenz. Der RC Filter dient auch gleich zur Dämpfung des LC Filters.
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- Anhänge hochladen: Nein
- Beiträge bearbeiten: Nein
-
Foren-Regeln
Lesezeichen