www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik über UART 4byte long aufteilen und verschicken


Autor: Bernhard (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Oberlehrer (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Eine verständliche und vollständige Beschreibung des Problems ist die 
halbe Lösung.

Autor: g457 (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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:
int32_t daten = irgendwas;
uart_send_one_single_byte_with_or_without_encoding(daten & 0xFF);
daten >> 8;
uart_send_one_single_byte_with_or_without_encoding(daten & 0xFF);
daten >> 8;
uart_send_one_single_byte_with_or_without_encoding(daten & 0xFF);
daten >> 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

Autor: g457 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
s/int32_t/uint32_t/wennmansganzgenaumachenwill</ingrid>

Autor: Ralph (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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 "<<"

Autor: hans (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Es geht auch über eine UNION aus einem LONG
und einem CHAR[4]-Feld.

hans

Autor: Bernhard (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Vielen Dank für die schnellen Antworten

lg


Bernhard

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.