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!!!
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.
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?
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.
Vielleicht gibts ja eine Möglichkeit die Messwerte etwas intelligenter zu speichern. ADC Werte sind ja nicht unbedingt als wahnsinnig schnell verändernd bekannt.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.