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
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
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.
Hallo Das komische ist ja das alle Werte bis 256 kommen, aber sobald es in den int Bereich geht kommt nur Kauderwelsch???? Frank
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.