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!
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
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.)
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)
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
daran hab ich auch schon gedacht. allerdings ist es variabel, wie viele ad-wandler ich abfragen muss.
Dann nutz doch die restlichen Bits zur Informationsübertragung des Kanals etc. Gruß, Florian
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.