Casten von uint16_t zu uint8_t

OP #564037
Lesenswert?

Moin,

ich möchte aus dem internen ADC vom ATMEGA16 (10 Bit breit),
welchen ich in eine uint16_t gelesen habe,
mit Informationsverlust in ein uint8_t lesen.
1
uint16_t test;
2
uint8_t result;
3

4
uint16_t ReadChannel(uint8_t mux)
5

6
test = ReadChannel(1);
7

8
result = (uint8_t) test >> 2;

Kann dies leider im Augenblick nicht testen?!

Die Unterschiede "zwischen" zwei Werten soll somit bei
4 liegen.


Leider kann ich mich nicht besonders artikulieren,
falls einer nicht genau verstanden hat was ich möchte,
bitte nachfragen

Danke
Matthias
Gast #1862638
Lesenswert?

Johannes M. schrieb:
> Ja, so wie Du es oben schreibst, müsste es gehen. Aber Du machst es Dir
> unnötig kompliziert, wie Uwe schon sagt. Setz das ADLAR-Bit im
> ADMUX-Register und lies nur das High-Byte aus (direkt in eine
> 8-Bit-Variable).

Hallo,

ich bin ein absoluter Anfänger und hab ein Frage. Ich hab soweit alles 
versatanden mit "Das Ergebnis linksbündig schreiben und ADCH 
auslesen"... was ich noch nicht verstanden habe ist folgendes: Wenn ich 
den 10 Bit Wert (ADC) auslese kann ich mit folgender Formel:
Vin = ADC * (Vref/1024)
bestimmen ob das Ergebnis richtig ist. Wie ist es nun im Falle wo ich 
nur den High Byte benutze? ändert sich da was in der Formel (Da ich 
quasi mit einer 8Bit Auflösung umsetze)?

Danke
Carlos
Gast #1862972
Lesenswert?

Bernd N schrieb:
> Was glaubst du wo 1024 her kommt ?
>
>>> 8Bit Auflösung
>
> ist dann ?

Danke für die Antwort Bernd N

dann sind es wohl 256 [ Vin = ADC * (Vref/256) ]. jetzt kommt aber meine 
nächste Frage: Wie beeinflusst diese Maßnahme meinen Ergebnis jetzt 
abgesehen vom Quantisierungsfehler? wohlwissend, dass bei meiner Messung 
8Bits ausreichend sind.

Zum Testeb hab ich mir vorgenommen einen Poti am ADC-Eingang 
einzuschalten und dann die Messwerte vergleichen...

Danke
Carlos

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren