über UART 4byte long aufteilen und verschicken

Gast #2049750
Lesenswert?

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
Gast #2049769
Lesenswert?

..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
Gast #2049775
Lesenswert?

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 "<<"

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren