Forum: Compiler & IDEs Integer über rs232


von Frank (Gast)


Lesenswert?

Hallo

Ich möchte vom PC aus mit folgenden Code ein int(m_e_adresse) über die 
r232 an meinen Meg16 übertragen:
flag =((char)(m_e_adresse>>8));

ComWrite(0,flag);
ComClose(0);
flag = ((char) m_e_adresse);
ComWrite(0,flag);

ComClose(0);
Und auf der Meg16 Seite siehts dan so aus:
int adresse;
if (((UCSRA & (1<<RXC)))){uart_getc();}

  int RXD = UDR;
  if (((UCSRA & (1<<RXC)))){uart_getc();}
  int RXD1 = UDR;
  adresse =  (int) (RXD<<8);
  adresse |=  (int) RXD1;



  LCD_Print(0,0,"Adresse:%i",adresse);
Leider kommt auf meinem LCD nur irgendwelche Ergebnisse, aber nicht das 
was ich schicke????
Frank

von Frank (Gast)


Lesenswert?

Hallo
Vielleicht sollte ich noch sagen, dass ein Byte schicken einwandfrei 
funktioniert. Also die rs232 ist richtig init. Beim Byte verstehen sich 
PC und Meg16.
Frank

von Thomas (Gast)


Lesenswert?

Was kommen denn für Werte?
Schicke mal eine 1 und ein 256 an den AVR und dann schreib mal was am 
LCD ausgegeben wird.
Von der Endianess sollte das eigentlich passen, falls du den AVR-GCC 
verwendest.

von Frank (Gast)


Lesenswert?

Hallo
Das komische ist ja das alle Werte bis 256 kommen, aber sobald es in den 
int Bereich geht kommt nur Kauderwelsch????
Frank

von Thomas (Gast)


Lesenswert?

Was heißt Kauderwelsch? Immer etwas anderes?

Gib doch einfach mal am LCD beide Bytes aus, dann siehst du ja genau was 
am Controller ankommt.

von Karl H. (kbuchegg)


Lesenswert?

Ich empfehle das auch auf der sendenden Seite zu machen.

* auf der sendenden Seite beide Bytes ausgeben
* auf der empfangenden Seite beide empfangenen Bytes ausgeben
* auf der empfangenden Seite den aus den Bytes zusammengebauten
  int ausgeben.

Damit kann man dann ganz leicht kontrollieren, bis wohin der
Prozess noch stimmt und ab wo Unsinn passiert.

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
Noch kein Account? Hier anmelden.