PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Analog-Diagitalwandler auswerten



sebi87
05.02.2009, 18:25
Hallo Leute,

ich mache mit meinem AD-Wandler an meinem Mega32 eine Differenzmessung zwischen ADC0 und ADC1 über den Mux Kanal 11.

Alles kein Probelm.

Jetzt geht es nur an das auswerten.
Ich lese einfach das ADCW Register aus und wandle es in eine uint8_t um.
funktioniert auch. Nur sollte das Ding auch negative Zahlen zurückgeben und das tut es nicht.

Kann mir da jemand helfen?

Grüßle Bastii

Besserwessi
05.02.2009, 18:34
Wenn man das Vorzeichen mit erhalten will, darf man nicht erst nach uint8 umwadeln. Die daten aus ADCW sind dann als int16 zu interpretieren. Im Zweifelsfall muß da dann noch ein Typecast dazwischen.

sebi87
05.02.2009, 19:10
int16 hab dann also auch negative Zahlen?

sebi87
05.02.2009, 19:16
wie muss das mit dem Typecast dann aussehen?

s.o.
05.02.2009, 21:08
meineint8=(uint8_t) meineuint16

McJenso
05.02.2009, 21:28
Hallo,

er möchte das Vorzeichen behalten.

int8_t meineint8;
meineint8=(int8_t) meinint16;

@sebi87

Du kannst natürlich auch int16_t für meineint8 nehmen. Dann fällt der Typecast (int8_t) weg. Aber wenn du von 16 Bit nach 8 Bit wandelst, würde dich der Compiler warnen. Mit dem Cast sagst du ihm, dass du weißt, was du da tust. Ob du nun 8 oder 16 Bit benötigst, kann dir keiner sagen.

BTW: Bei deinen eigenen Beiträgen gibt es einen schönen Edit-Button :wink:

Gruß

Jens

Besserwessi
05.02.2009, 22:33
Wenn man nur ein 8 Bit Ergebnis haben will, dann sollte man das Ergbenis linksbündig einstellen, bei der Konfiguration des ADs. Dann kann man den 8 Bit wert direkt aus ADCH auslesen. Einfach nur per typcast gibt es Probleme bei Werten außerhalb von +-128.