Forum: Digitale Signalverarbeitung / DSP / Machine Learning 8 bit Datenyp erzeugen


von tobe1980 (Gast)


Lesenswert?

Hallo, bei dem TI DSP 320f2812 ist ein char Datentyp automatisch 16 bits 
groß.

Das Datenblatt schreibt hierzu:

By ANSI/ISO C definition, the sizeof operator yields the number of bytes 
required
to store an object. ANSI/ISO further stipulates that when sizeof is 
applied to char,
the result is 1. Since the TMS320C28x char is 16 bits (to make it 
separately
addressable), a byte is also 16 bits. This yields results you may not 
expect; for
example, size of (int) = = 1 (not 2). TMS320C28x bytes and words are 
equivalent
(16 bits).

Jetzt möchte ich aber ASCII Zeichen über die Serielle Schnittstelle 
einlesen und zwischenspeichern. Um Speicherplatz zu sparen wäre es 
praktisch ich könnte mir ein Datentyp erzeugen der wirklich nur 8 Bit 
groß ist.
Ich habe hierbei an eine Lösung über Bitfelder gedacht wie.
1
Struct test {
2
3
Unsigned datentyp8a :8
4
Unsigned datentyp8b :8
5
}structur;
Dies ist aber nicht das wahre oder das was ich suche. Gibt’s hier nicht 
noch eine elegantere Lösung mit Union der typedef???

Vielen dank für eure Vorschläge.

von 6635 (Gast)


Lesenswert?

<Grins>
Dem C Compiler mangelt es an der erwarteten Flexibilitaet... Da es mit 
aller Voraussicht nicht um Stringverarbeitung geht, sondern nur um eine 
Augabe wuerde ich 2 Char in einem Word speichern und bei der Ausgabe das 
Passende zuerst ausgeben.
</Grins>

von Tobias M. (tobe1980)


Lesenswert?

Hm Ok

Ja das mit den 2 Char also 2 mal 8 bit ascii Zeichen in einem 16 bit 
datentyp speichern ist die notlösung.

Aber nochmal mithilfe der Bitfelder mit 8 einzelnen bits also so
1
Struct test {
2
3
Unsigned datentyp8a :8
4
Unsigned datentyp8b :8
5
}structur;

kann ich mit typedef oder sowas kein 8 bit datentyp erzeugen?

Schade wäre halt so praktisch gewesen.

Falls noch jemand eine idee hat bin ich dankbar.

gruss tobe

von 6635 (Gast)


Lesenswert?

Mal probieren. Und dann das ASM Listing pruefen. Vielleicht geht's ja.

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.