Forum: Compiler & IDEs Wie 10 bit datentyp erzeugen?


von 5tefan (Gast)


Lesenswert?

Hallo Leute!

Bin leider noch Anfänger. Hab daher mal ne kleine Frage.

Ist es möglich einen neuen Datentyp zu erzeugen der nur 10 Bit groß ist?

Wär echt klasse, wenn das möglich wäre, da ich zwei riesen Arrays habe 
in denen ich Messwerte vom ADC speichere.

Leider muss ich da ja auf Integer zurückgreifen. Daher hab ich ja bei 
jeden Messwert 6 Bits verloren, die ich nicht mehr benutzen kann, weil 
der ADC ja eine Auflösung von 10 bit hat.

Kann mir vielleicht jemmand sagen ob es möglich ist 10 bit Datentypen zu 
erzeugen, oder gibt es eine andere Möglichkeit, um nicht bei jeden Wert 
6 Bits zu verlieren?


Danke schonmal im Voraus!!!

von Karl H. (kbuchegg)


Lesenswert?

So direkt ist das nicht möglich.
Die kleinste EInheit ist ein Byte, also 8 Bit

Aber: mit Bitgepfriemel kann man das schon erreichen. Als Anfänger würd 
ich dir das jedoch noch nicht empfehlen.
Kurz gesagt: Du musst dein Array als Abfolge von Bits ansehen. Wenn du 
dann den 13. Datenwert brauchst, beginnt der bei dir logischerweise ab 
Bitposition 130. Jetzt muss man sich ausrechnen, in welchem Byte des 
Arrays das liegt und dort wieder beginnend mit welchem Bit. Da dann die 
nächsten 10 Bits holen (aufpassen, das kann natürlich auch ins nächste 
Byte überlaufen) und diese 10 Bits in einem temporären int wieder 
richtig rechts ausrichten. Fertig

machbar, aber für einen Anfänger zu fehleranfällig.

von Karl (Gast)


Lesenswert?

Also 10 bit im Speicher dürfte nur auf einem FPGA sinnvoll realisierbar 
sein. Mit nem µC kannst Du
- die 2 LSB wegwerfen -> 8 bit
- einen 16 bit Wandler nehmen, dann wird nichts verschwendet ;)
- mühsam die Werte durch Bitschubsereien zusammenpfriemeln
- damit leben
- in 10.6 fixedpoint rechnen

Geht dir deswegen der Speicher aus?
Braucht es die 10 bit wirklich?

von 5tefan (Gast)


Lesenswert?

Erstmal danke für euere Antworten!

Dann werd ich das ganze lieber sein lassen, wenn das echt so kompliziert 
wird. Dachte nur, vielleicht gibts da ne ganz einfache Lösung.

Speicher reicht mir ja gerade so. Benutze zwei Arrays mit einer laenge 
von je 350 Messwerten. Und bissl was brauch ich noch für andere 
Variablen. Dann komm ich auf eine RAM-Auslastung von ca. 90% bei einem 
Atmega32.

von Karl H. (kbuchegg)


Lesenswert?

Vielleicht gibts ja eine Möglichkeit die Messwerte etwas intelligenter 
zu speichern. ADC Werte sind ja nicht unbedingt als wahnsinnig schnell 
verändernd bekannt.

von Gast (Gast)


Lesenswert?

Je nach dem sin dvon den 10Bit sowieso 2Bit verrauscht. Dann reichen 
auch 8Bit.

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.