Forum: Compiler & IDEs serielle schnittstelle 10 bit


von maximilian (Gast)


Lesenswert?

hallo zusammen!

ich habe ein kleineres problem mit einem 4433 und dem gcc. ich habe
vor, die 10-bit werte eines internen analog-digital-wandlers über die
serielle schnittstelle zu übertragen. derzeit sende ich im 8-bit modus,
und schneide den rest des messwerts einfach ab, um nicht 2 packete
senden zu müssen! (UART_SendByte((ADCW>>2)); -jaja. ich weiß. sehr ugly
g)

hat jemand ne idee, wie ich die schnittstelle dazu bewegen kann,
10-bit-werte an einem stück zu übertragen?

danke schon mal im vorraus!

von Matthias (Gast)


Lesenswert?

Hi

garnicht. 9 Bit wären möglich aber nur bei µC zu µC Kommunikation. PC
seitig ist das 9 Bit immer das Parity Bit. Mag sein das man trotz einem
Parity Fehler an die Daten kommt und so auch 9 Bit übertragen kann. Ist
aber IMHO den Aufwand nicht wert. Warum nicht einfach zwei Byte
senden?

Matthias

von maximilian (Gast)


Lesenswert?

dann hab ich doch unnötigen overhead, oder? (normalerweise wird das ja
byteweise geschickt. wenn ich davon nur 2 brauche, hab ich 6 stellen
frei.)

von Matthias (Gast)


Lesenswert?

Hi

ja und? Mußt du die Daten so schnell übertragen?

Matthias

von maximilian (Gast)


Lesenswert?

jap. ich möchte möglichst viele messwerte übertragen.

von maximilian (Gast)


Lesenswert?

ach noch was: passt der code von oben überhaupt so? dadurch sollte das
ganze doch um den faktor 4 ungenauer werden, oder? (weil hinten 2
digits fehlen)

von Werner Hoch (Gast)


Lesenswert?

Du kannst 4 Werte in 5 Byte aufteilen.
4 mal die obersten 8 bit und im 5. Byte die niedrigen bits.

Du mußt auf der PC-Seite halt darauf achten, daß du den Anfang wieder
findest. (event. 6. Byte als Markierung)

mfg
werner

von maximilian (Gast)


Lesenswert?

daran hab ich auch schon gedacht. allerdings ist es variabel, wie viele
ad-wandler ich abfragen muss.

von Florian Pfanner (Gast)


Lesenswert?

Dann nutz doch die restlichen Bits zur Informationsübertragung des
Kanals etc.

Gruß, Florian

von maximilian (Gast)


Lesenswert?

hallo zusammen

erst mal danke für die vielen antworten! ich hab's jetzt so gemacht,
dass ich vor der datenübertragung übertrage, was ich will, dann werden
maximal 4 channels gesendet, und dann ein byte mit den 2bit
reststücken...

jetzt taucht hier aber ein kleines anderes problem auf:

    UART_SendByte((swap>>2));

durch den code schneidet er zwar schön ab, füllt dann von hinten her
alles mit einsern bis zur ersten eins auf. ich bekomme dann so sprünge
wie:
    193 11000001
    195 11000011
die 194 11000010 unterschlägt er hier einfach! (das macht er
systematisch so. die nächste zahl ist dann (11000111) = 199)

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.