Hi Leute, mich hat vor einiger Zeit das DAC-Dithering fasziniert - mangels Zeit (durch berufliche Einbindung) konnte ich aber nicht alles testen, was ich gerne testen wollte. Jetzt hatte ich am letzten Wochenende aber etwas zeit gehabt. Zwar nicht so viel, als das ich dies in HW umsetzten hätte können, - dafür aber zumindest das softe... ;) Entstanden ist eine (wie ich meine) sehr portable einfache Variante der Berechnung in C samt Beispiel. Es ist eins meiner ersten Programme nach sehr langer programmier-pause (>15 Jahre), also seid gnädig mit mir, was den Stil angeht. - Ich habe alles in Fixpoint umgesetzt, so das auch MCUs ohne FPU schnell damit umgehen können sollten (also auch 8Bit AVR/PIC/8051... o.Ä.). - Gezielt habe ich auch auf Pointer verzichtet um ggf. Anfängern in C einen schnellen Einstieg zu ermöglichen. Dafür als Zugeständnis werden aber auch globale Variablen benutzt. - Parametrisiert wird nicht dynamisch (HW ändert sich nur selten zur Laufzeit) sondern per Definitionen in der "dithering.h" Dort gibt man nur die reale HW-Auflösung und die Referenzspannung (bei PWM die digitale I/O Spannung) an. Im Beispiel wird 8 Bit und 2.048V (bzw. 2048mV wegen Fixpoint) verwendet. - Und zu guter Letzt ist in der main.c auch ein Konsolen-Demo dass das Ganze auch einmal sehr einfach "durchsimuliert" (wenn man mal keine passende Hardware zur Hand hat ;) Was macht das ganze jetzt? Es wird versucht durch "Wackeln" am DAC (egal ob ein echter Analog-Ausgang oder PWM) zusätzliche Bits zu interpolieren. Hierzu werden 12 Sequenzen errechnet die dann zyklisch (und schnell) auf dem DAC ausgeben werden müssen. - idealerweise hat der DAC dann noch einen Tiefpass nachgeschaltet. Die Mittelung aus der 12er Sequenz entspricht dann annähernd einer höheren Auflösung bzw. nähert sich dieser. Ich sehe das nicht als fertig an, sondern nur als Lernaufgabe/Übung meinerseits - mit ggf. Nutzen für andere, weshalb ich dies gerne mit euch teilen möchte. Auch über die Methode selbst darf diskutiert werden. Kritik darf auch gerne geäußert werden, - wenn sie denn nicht gleich beleidigend wird! Und jetzt viel Spaß damit :) Ich freue mich auf Feedback [Mod: Typos korrigiert]
:
Bearbeitet durch Moderator
Beitrag #7815104 wurde von einem Moderator gelöscht.
Beitrag #7815391 wurde von einem Moderator gelöscht.
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.