Forum: Mikrocontroller und Digitale Elektronik Bitmanipulation


von Karl-Uwe (Gast)


Lesenswert?

Schönen Sonntag alle zusammen,

Ich bin neu auf dem Gebiet Mikrokontroller. Ich habe ein kleines 
Problem.
Also, ich verwende einen Atmel Mikrokontroller, dieser hat einen 
internen 10Bit A/D-Wander. Damit sind ja Werte von 0 - 1023 möglich, 
welche ja den 10Bit entsprechen.
Mein Problem ist, ich brauch aber 16Bit. Wie komme ich von 10Bit auf die 
vollen 16Bit? Einfach nur von 10 auf 16Bit shiften funktioniert ja 
nicht.
Ich möchte die Werte NACH der Wandlung "aufblasen" auf 16Bit, sprich aus 
1023 wird 65535, usw. Also jeden Wert nach der Wandlung bearbeiten.

Ich hoffe ihr könnt mir helfen.

Schönen Sonntag noch

: Verschoben durch User
von Läubi .. (laeubi) Benutzerseite


Lesenswert?

Karl-Uwe schrieb:
> Also jeden Wert nach der Wandlung bearbeiten
http://de.wikipedia.org/wiki/Dreisatz

von _M_ (Gast)


Lesenswert?

Warum funktioniert shiften nicht?
Es wäre vermutlich die Lösung zu deinem Problem.

von Läubi .. (laeubi) Benutzerseite


Lesenswert?

_M_ schrieb:
> Warum funktioniert shiften nicht?
> Es wäre vermutlich die Lösung zu deinem Problem.
Weil vermutlich nicht die "bits" interessant ist, ein 10bit Wert kann 
auch ohne "shift" 16 bit beanspruchen (einfach vorne 0en einfüllen, bzw 
sind diese automatisch da).
Es soll aber höchstwahscheinlich gelten das einfach die Werte 
"gestreckt" werden sollen auf eine 16bit Skala (was auch immer das 
bringen soll).

von spess53 (Gast)


Lesenswert?

Hi

ADLAR-Bit setzen. ADCH und ADCL auslesen. Fertig.

MfG Spess

von Sascha W. (sascha-w)


Lesenswert?

@Karl-Uwe

mach 64 Messungen und addiere die Werte, dann hast du 16Bit - ob das was 
bringt ist eine andere Frage.

Sascha

von Wissender (Gast)


Lesenswert?

Hallo,

spess53 schrieb:
> ADCH und ADCL auslesen.

Aber bitte in der umgekehrten Reihenfolge (erst ADCL, dann ADCH), sonst 
kommen falsche Werte heraus ...

Diese Art der Skalierung liefert allerdings Werte zwischen 0 und 65472, 
da die untersten 6 Bits immer 0 sind. Bei Skalierung auf "echte" 65535 
als Maximalwert muss man die Werte berechnen oder, wie bereits 
vorgeschlagen, 64 10bit-Werte aufaddieren (dann hat man auch echte 16bit 
Auflösung).

von Thomas E. (thomase)


Lesenswert?

Wissender schrieb:
> 64 10bit-Werte aufaddieren (dann hat man auch echte 16bit
>
> Auflösung).

Angenommene 16-Bit-Möchtegern-Auflösung!

mfg.

von Karl-Uwe (Gast)


Lesenswert?

Erst mal danke für die Antworten. ADCH und ADCL auslesen würde nichts 
bringen, wenn da nur Werte zwischen 0 und 65472 ausgelesen werden 
können. Das Gleiche bekommt man auch wenn man einen 10Bit-Wert um 6 
Shiftet, deswegen geht Shiften ja nicht ;-). Muss ich wohl berechnen.
Und ja ich brauche nicht die Bits wie Läubi schon sagte, aber danke an 
alle!! Wirklich viel los für einen Sonntag hier :)

von spess53 (Gast)


Lesenswert?

Hi

>wenn da nur Werte zwischen 0 und 65472

Ja und? Das ist richtig. Deine anvisierten 65535 sind schlichtweg 
falsch.

MfG Spess

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.