-
-
Erfahrener Benutzer
Begeisterter Techniker
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
-
Erfahrener Benutzer
Robotik Visionär
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.
-
Erfahrener Benutzer
Begeisterter Techniker
int16 hab dann also auch negative Zahlen?
-
Erfahrener Benutzer
Begeisterter Techniker
wie muss das mit dem Typecast dann aussehen?
-
Erfahrener Benutzer
Roboter-Spezialist
meineint8=(uint8_t) meineuint16
-
Erfahrener Benutzer
Roboter Experte
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
Gruß
Jens
-
Erfahrener Benutzer
Robotik Visionär
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.
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- Anhänge hochladen: Nein
- Beiträge bearbeiten: Nein
-
Foren-Regeln
Lesezeichen