Hallo, ich möchte gern mein am ADC anliegendes Signal invertiert am DAC wieder ausgeben. Wenn ich das Signal einach nur durchreiche gibt es keine Probleme, sobald ich es invertiere entstehen kleine Wellen auf dem Invertierten Signal. Ich denke ich habe irgendwo etwas mit den Variablen verhunzt. Ich hoffe mir kann einer helfen, mir gehen nämlich die Ideen aus. Danke #define ADC_OFFSET 2047 __IO int16_t ADC1_Konv_Wert = 0; //Zielvariable für ADC Wert __IO int16_t DAC1_Ausgabe_Wert = 0; //DAC Ausgabewert int16_t ADC1_Wert_manip = 0; //Manipulierter ADC1 Wert uint16_t Signaloffset = ADC_OFFSET; ADC1_Wert_manip = ADC1_Konv_Wert - Signaloffset; //Offset entfernen (2047) ADC1_Wert_manip = Signaloffset - ADC1_Wert_manip; //Invertieren DAC1_Ausgabe_Wert = ADC1_Wert_manip; //fertigen Wert in Ausgabe
Du musst den Offset wieder addieren. Am besten machst du das alles unsigned.
Ok ich habe das ganze schlecht erklärt, tut mir leid ich war bisschen durch den Wind. Das Prinzip ist dass ich ein Sinussignal mit dem Offset von genau (2^12 Bit /2) am ADC als eingehendes Signal habe und diesen als erstes abziehe. Damit bekomme ich den Sinus ohne Offset auf einer int Variable. Diese Werte ziehe ich dann wieder von dem Offset ab, woraus sich genau das invertierte Signal ergibt. Möglicherweise geht das ganze aber auch wesentlich einfacher und besser, oder ich habe dich gerade nicht richtig verstanden. Ich bin immer noch für jede Hilfe dankbar. Gruß Marc
>Möglicherweise geht das >ganze aber auch wesentlich einfacher und besser, Ja. 1111 invertiert ist 0000 1110 invertiert ist 0001 1101 invertiert ist 0010 Fällt dir was auf? Nix Offset abziehen. Einfach invertieren. Das gibst du dann so auf deinen DAC.
Gott bin ich dämlich. Aller besten Dank. Trotzdem merkwürdig dass ich diese Fehler beim Subtrahieren bekomme. Nunja sei es drumm. Und noch mal danke^^.
Die Fehler werde übrigens vom Board verursacht, ich nutze das Olimex STM-H107. Bei einem anderen Board traten die Fehler nicht auf.
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.