Hallo ich steh wieder mal vor einem Problem. Wie kann man ein Wort (16 Bit->ist ein Messwert von einem AD_Wandler) zu einem PC senden. Und wie erkennt der PC welcher HighByte und welcher LowByte ist? DANKE
Denk Dir doch einfach ein Protokoll aus, was Sender und Empfänger verstehen. z.B.: STX LO HI ETX MfG formtapez
Alternativ Ascii-Übertragung mit Trennzeichen. Wert: 32768 gesendet wird: 0x33, 0x32,0x37,0x36,0x38,0x0d,0x0a
Das hab ich schon mir so gedacht, nur wie greife ich im Mikrocontroller auf das High und Lowbyte einzeln in C zu?
lowbyte = (WORD&0xFF); hibyte = ((WORD&0xFF00)>>8); Gruß, Maddin
manchmal sieht man den Wald vor Bäumen nicht ;) DANKE mir ist noch was eingefallen. Kann ich nicht einfach ein Wortzeiger der auf die Adresse von der Variable zeigt und dann einfach das Highbyte auslesen, dann die Adresse um 8 (ein Byte) erhöhen und dann nochmal lesen? Währe das in einem Mikrocontroller ineffektiv?
Oder einfach 2 serielle Leitungen nehmen... ;-)) Nee, meistens liegen die Bytes ja bereits einzeln vor, dann ist es natürlich am schnellsten sie genauso nacheinander abzusenden, also z.B. beim AD-Converter des AVR liegen die 10bit ja im Register ADC, auf die High- und Low-Bytes kann man jedoch auch direkt zugreifen mit ADCH und ADCL. Dabei das Datenblatt beachten, welche Reihenfolge evtl. erforderlich ist, damit nicht das 2.Byte vom Controller geändert wird, während man noch das erste ausliest. Würde also beim AVR (mit winavr) so aussehen: loop_until_bit_is_set(UCSRA, UDRE); //wait if UART is still busy UDR = ADCL; //send char loop_until_bit_is_set(UCSRA, UDRE); //wait if UART is still busy UDR = ADCH; //send char cu joern
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.