Forum: Mikrocontroller und Digitale Elektronik ADC signal invertiert auf DAC geben STM32


von Marc (Gast)


Lesenswert?

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

von holger (Gast)


Lesenswert?

Du musst den Offset wieder addieren.
Am besten machst du das alles unsigned.

von Marc (Gast)


Lesenswert?

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

von holger (Gast)


Lesenswert?

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

von Marc (Gast)


Lesenswert?

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

von Marc (Gast)


Lesenswert?

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