16 bit Integer- lowbyte verschluckt

Gast #214920
Sers Leute,
folgende Systemvorraussetzungen: STK500, ATMega8515, CodeVision
Compiler.
Ich habe ein Problem und zwar möchte ich eine 16 bit-Integer als 2 Byte
(highbyte, lowbyte) über uart verschicken. Das ganze geht so:

int a=420;      //420 -> 0x01A4
putchar(a>>8);  //sende highbyte  0x01
putchar(a);     //sende lowbyte   0xA4

Das Ganze ist in einem größeren Programm untergebracht, wobei mein
Flash schon mit 70% ausgelastet ist.
Das Problem ist, dass nun das lowbyte nur noch als 0x00 ankommt.
Setze ich nun diesen Programteil als eigenständiges lauffähiges
Programm auf, funktioniert die Übertragung einwandfrei.
Mit was könnte dieses Problem zusmmenhängen?
Danke bereits schon im voraus für eure postings
Gruß Christian
Gast #214921
Hallo

ich bin kein AVR Spezialist. Aber ist es nicht so, daß "int" die
Registerbreite repräsentiert, also hier 8 Bit ? Muß für 16 Bit nicht
sowas wie int16 spezifiziert werden ?


Gerhard
Gast #214922
Hi!

Hast du mal das hier probiert:
int a=420;      //420 -> 0x01A4
putchar((a>>8)&0xFF);  //sende highbyte  0x01
putchar(a&0xFF);     //sende lowbyte   0xA4

Evtl vermasselt der Compiler irgendwas bei der 16->8Bit Umwandlung.

Oder shiftet er gar a um 8 nach rechts ? :-X
#214923
Hallo,

die Maske für das zweite putchar ist dringend zu empfehlen, denn
putchar bekommt einen Integer als Parameter, schneidet also das
Highbyte nicht weg.

Was damit aber praktisch angefangen wird - außer im EOF-Fall ein -1
übertragen zu können -, weiss ich nicht.

Gruß

Jens

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 21 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.