Hallo Leute habe leider das Problem dass ich eine current position Variable eines Schrittmotors auf der seriellen Schnittstelle ausgeben möchte.Meine ersten Denkansätze waren dass ich den wert in einer schleife durch 256^3...256^1 unterteile und so sequenzell schicke .Dies Funktioniert nur leider nicht. Könntet ihr mir vielleicht ein paar denkanstöße geben. Wäre echt nett. Apropos ich verwende die µVision Testversion und bin noch neu auf dem Gebiet der µC. Herzlichen Dank mfg Bernhard
Eine verständliche und vollständige Beschreibung des Problems ist die halbe Lösung.
..der übliche Ansatz (abgesehen von einer verständlichen Problembeschreibung ;-) ist hier ein byteweises Versenden. Ob big oder little endian ist dabei erst mal egal. Jetzt musst Du nur noch die einzelnen Bytes rauskitzeln. Dafür gibts mehrere Methoden, die einfachste ist i.d.R sowas:
1 | int32_t daten = irgendwas; |
2 | uart_send_one_single_byte_with_or_without_encoding(daten & 0xFF); |
3 | daten >> 8; |
4 | uart_send_one_single_byte_with_or_without_encoding(daten & 0xFF); |
5 | daten >> 8; |
6 | uart_send_one_single_byte_with_or_without_encoding(daten & 0xFF); |
7 | daten >> 8; |
8 | uart_send_one_single_byte_with_or_without_encoding(daten & 0xFF); |
Geht auch noch auf zahlreiche andere Arten, jeder wie ers gerne macht. HTH
s/int32_t/uint32_t/wennmansganzgenaumachenwill</ingrid>
1. Byte : (U8)( long & 0x000000FF) 2. Byte : (U8)((long >> 8 ) & 0x000000FF) 3. Byte : (U8)((long >> 16) & 0x000000FF) 4. Byte : (U8)((long >> 24) & 0x000000FF) Dann die 4 Byte einzel übertragen. Auf dem PC die 4 Bytes wieder zusammensetzen. geht da mit "<<"
Es geht auch über eine UNION aus einem LONG und einem CHAR[4]-Feld. hans
Vielen Dank für die schnellen Antworten lg Bernhard
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.