Gast
#1932
Hallo! Ich weiss, es könnte etwas OT sein, aber es gehört zur seriellen Übertragung. Also falls es wer zu "OT" findet nicht weiterlesen und nicht aufregen ;) Und zwar kann ich keine Zeichen am PC empfangen, die über den AVR geschickt wurden, wenn z.b. das Zeichen hex 0 haben. Ich hab alles probiert, sowohl in HyperTerminal als auch in Linux, aber keine Chance. Wenn ich z.B. folgendes mache: unsigned char i; unsigned char tx[5]; tx[0] = '['; tx[1] = 0x00; tx[2] = 0x01; tx[3] = 0x02; tx[4] = ']'; for(i=0;i<5;i++) { while(!bit_is_set(UCSRA, UDRE)); outp(tx[i], UDR); } Dann erhalte ich auf PC Seite einfach nur "[]", ich sollte aber, wenn ich mir das in eine Datei mitschreibe (HyperTerminal) und die Datei dann HEX betrachte ca so aussehen: 5B 00 01 02 5D Es steht aber ganz einfach nur 5B 5D drinnen. Ich nehme an, dass es daran liegt, dass das Steuerzeichen sind. Fehlt eine Einstellung am AVR oder am PC??? Ich habe 9600 Baud, 1 Stoppbit, no parity und 8 data bits gewählt. Ich hab unter Linux schon mit stty herumgespielt, auch keine Besserung. Was ist das für eine Terminal einstellung?? (mit cat /dev/ttyS0 geht es nur begrenzt, d.h. wie oben beschrieben, aber erst nachdem mit stty umgestellt wurde). 2.) Wie schreibe ich am besten so ein Empfangsprogramm? So auf die Art scheint es NICHT zu gehen: [...] while(1) { if(read(serial_fd, (unsigned char*)byte, 1)) printf("0x%2X ", byte); } Wie mach ich das damit das funktioniert? Gibt es irgendwo DOCS etc?? Vielen Dank Niki