Hallo, vor mir liegt eine Versuchssschaltung zum TDA1543 (serieller DA-Wandler, zwei Kanäle) auf dem Tisch. Das Testprogramm ist im Stande, einen Sägezahn auszugeben, indem es einfach die 16 Bits aufwärts zählt. Ist etwas langweilig auf die Dauer. Was könnte man damit noch anstellen? Einen kleinen DDS-Synthesizer programmieren für 9 oder 10 Bit vielleicht? Einen Voltmeter nach der Vergleichsmethode mit Komparator? Hat jemand andere Ideen? Der Übertragungsfaktor zwischen Binärwert und analoger Ausgangsspannung ist jedenfalls linear. Gruß
bist du dir deiner sache sicher? wenn du die bits durchzählst müsste da nicht etwas von einem sägezahn sich unterscheidendes rauskommen, weil der TDA twos complement- formatierte datenworte erwartet?
Hallo, auf dem Oszilloskop erscheint ein Sägezahn (kann auch auf dem Kopf stehen, die Sägezahnform hat er aber dennoch). Der nachfolgende invertierende OPAmp invertiert das analoge Ausgangssignal. Hier mal ein kleiner Ausschnitt aus dem Testprogramm, das ich genau um dies heraus zu finden so einfach gestaltet habe: main: adiw r30,1 ; Doppelregister aufwärts zählen mov temp3,r30 ; kopieren mov temp2,r31 ; oberes Register kopieren rcall out_rechts mov temp3,r30 ; weil zuvor durch das Schieben alle Einsen verschwunden sind mov temp2,r31 ; muss man das Kopieren wiederholen rcall out_links rjmp main
... die Schrift der orangefarbenen Kopfzeile scheint sich selbständig zu ändern und durch "(neu)" zu ergänzen. Welche Abwandlung erscheint als nächstes?...
Hallo, kannst Du bitte mal posten, wie du die Daten in den Wandler geschoben hast? Mit freundlichen Grüßen Frank Simon
Natuerlich kannst du einen DDS auch selber programmieren. Sowas verwende ich als Signalgenerator. Und wenn du schon einen Signalgenerator hast dann kannst du auch mal einen FIR-Filter programmieren wenn noch einen AD-Eingang hast. Mache ich gerade mit dem R8C. :-) Olaf
Wenn du ein scope hast bietet sich ne scope-clock an... http://www.roboternetz.de/phpBB2/zeigebeitrag.php?t=10606 da bieten sich 16bit auflösung geradezu an...
@Chris Cool. Interessant was du da machst. Mit welcher Samplerate gibst du denn die Samples aus ? (sprich wie schnell ist der Wandler). @Olaf hört sich interessant an mit dem R8C. werde ich demnächst auch mal machen, aber mit iir-filtern. Mal schauen was dabei rauskommt. Kannst ja mal ein MP3 reinstellen wie es nachher klingt *gg Gruß Rene
Der R8C hat einen Assemblerbefehl der multiplziert und gleich addiert. Da bieten sich halt Filter an wo bn-Koeffizienten 0 sind. Ich hab auch mal ein IIR Filter probiert. Da konnte ich beliebige Sinuskurven reinschicken und es kam immer Rauschen raus. Muss ich mir mal patentieren lassen. :-) Vermutlich irgendwo ein Rechenproblem mit dem Wertebereich. Mein FIR Filter laeuft aber schon ganz gut. (mit 50Taps und 40kHz fs) Momentan verwende ich bloss als DA-Wandler den PWM Ausgang und da werden leider hoehere Frequenzen (alles ueber 5kHz) durch den PWM-Takt etwas vergurkt. Aber da kann man mal schoen die guten alten Kenntnisse aus dem Studium wieder auffrischen.... Olaf
Hallo Olaf, wenn die Berechnung der FIR-Koeffizienten nicht so lange dauern würde bzw. mehr möglichkeiten bieten würde (überschwingen usw). würde ich wahrscheinlich auch eher FIR nutzen, aber ich will ja gerade das es quietscht, zirpt und knarzt :-)) Aber deinen Rauschgenerator solltest du dir echt Patentieren lassen *gg. Hatte auch mal einen Synthesizer in einem FPGA realisiert (bzw bin immer noch dabei) und größere Probleme was das Rechnen von IIR-Filtern angeht hatte ich eigentlich nicht (ok es kommt zwar leider nicht das heraus was ich möchte, aber das liegt an meiner struktur) Bei dem R8C hab ich vor einen DAC0808 als DA Wandler zu nehmen, da ich mir kein Widerstands-DA-Wandler aufbauen wollte. Bin mal gespannt was dabei rauskommt. Aber ein paar Audio-Beispiele würden mich echt mal interessieren. Gruß Rene
Ich hatte mit dem IIR auf dem PC auch keine Probleme, aber da hab ich halt Fliesskommazahlen verwendet. Irgendwo beim umstellen auf Festkomma und skalieren muss ich wohl noch einen Fehler gemacht haben. DA_Wandler mit Parallelport gefallen mir nicht so weil sie soviele Pinne verwenden. Ich werde wohl noch einen seriellen Wandler an SPI pappen den ich aus einem CD-Player geschlachtet habe. Fuer erste Tests ist aber der PWM-Ausgang auch ganz okay. Der macht 79kHz Takt bei 8Bit Aufloesung. Da man Puls und Pausenzeiten getrennt einstellt muesste es sogar moeglich sein noch deutlich hoehere Taktraten zu erreichen wenn man z.B nur 6 oder 7Bit verwendet. Muss ich heute Abend mal probieren. Olaf
Hallo Olaf, also mit Fließkomma ists ja kein Problem. Bei Festkomma muß man sich lediglich auf feste Größen (Audio-Daten und Koeffizient) achten. Bei meinem FPGA-Biquad hab ich 32Bit Audio (24Bit Daten + 8Bit Overhead) und 32Bit Koeffizienten (8Bit Vorkomma, 24Bit Nachkomma) benutzt. Einfach multiplizieren, begrenzen (wichtig), um 8 Bit nach rechts schieben, abschneiden, fertig. Funktioniert sehr gut. So hatte ich es auf dem PC in Festkomma auch gemacht. Klappt hervorragend. Das einzige was bei der portierung auf einem uC nervig ist, das man bei der Koeffizientenberechnung Fließkomma nutzen muß (sollte), was einfach irre viel zeit kostet. Aber da kommt man nicht drum herum wenn der Filter moduliert werden soll. Können ja mal zwecks Erfahrungsaustausch Emailen. Hab auch deinen Thread zum Wecker gelesen. Ich würd nen DA-Wandler nehmen, einen Oszillator mit Multiplizierer (für die Lautstärke) und eine Hüllkurve (einfache Attack-Decay), sowie einen kleinen Sequencer (8 Schritte) für die Tonhöhe nehmen. Insgesamt dürfte das bestenfalls 2k Code kosten und sehr einfach zu implementieren sein. Gruß Rene
Also ICH habe keinen Wecker, das muss dann wohl ER sein. Vielleicht gehoert ER ja auch zu IHNEN, aber ICH nicht. :-) Olaf (der Echte)
oh entschuldigung bitte ... hatte den unterschied zwischen olafK und olaf für marginal gehalten *gg.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.