Archiv verlassen und diese Seite im Standarddesign anzeigen : Analog-Diagitalwandler auswerten
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, 19: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.
int16 hab dann also auch negative Zahlen?
wie muss das mit dem Typecast dann aussehen?
meineint8=(uint8_t) meineuint16
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, 23: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.
Powered by vBulletin® Version 4.2.5 Copyright ©2024 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.