www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik bytes verbinden


Autor: Aiwendil (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo an alle

Ich schreibe gerade (als ziemlicher Hardware Anfänger) ein programm für 
einen Atmega 32, das (unbter anderem) daten über die RS232 erhält (bzw 
erhalten soll). Das Problem hierbei: eigentlich baruche ich 2byte große 
Integer, über RS232 werden aber nur 1Byte große versendet.
Meine (Teil-)Lösung:

das "Sendeprogramm" zerlegt die 2Byte großen Werte in je 2 1Byte große 
und sendet diese Nacheinander. Nur weiß ich jetzt nicht wie ich diese je 
1Byte großen werte in einer "Byte ariablen zusammenfassen kann.

hier mal ein Teil dessen was ich schon gecodet hab:
void getDaten(void) {
 uint8_t tempXL = -1;
 uint8_t tempXH = -1;
 uint16_t tempX = -1; 
 
 tempXL = usart_getc();
 tempXH = usart_getc(); 
  
 tempX = ??  
 
}


auf Hilfe hoffend:
Aiwendil

Autor: G4st (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
tempX = unsigned int;
tempX = tempXL | (tempXH>>8);
so ungefähr

Autor: Thomas Weyhrauch (thomas100)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
so:
tempX = (tempXH <<8) | tempXL

Autor: holger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>tempX = unsigned int;
>tempX = tempXL | (tempXH>>8);
>so ungefähr

Nö

tempX = ((uint16_t)tempXH << 8) + tempXL;

Autor: Karsten (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Nicht Nö! Die Lösung von Thomas Weyhrauch funktioniert auch. So 
intelligent ist der AVR-GCC dann nämlich doch schon.

Autor: Aiwendil (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
tja das gieng ja verdammt schnell!

DANKE!

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.