mikrocontroller.net

Forum: Compiler & IDEs Wie 10 bit datentyp erzeugen?


Autor: 5tefan (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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!!!

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Karl (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: 5tefan (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Gast (Gast)
Datum:

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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.