Hey,
schau mal hier:
http://kampis-elektroecke.de/?page_id=1682
Vielleicht hilft dir das ja weiter (funktioniert übrigens auch mit einem USB-Seriell Wandler. Der heißt dann nur ttyUSB0 oder so).
Hallo,
Ich bin grad dabei mit dem Pi die serielle schnittstelle anzusprechen und habe folgendes Problem:
Wenn ich etwas empfange, wird das Zeichen direkt zurück geschickt, was nicht unbedingt optimal ist
hab bisher in Erfahrung gebracht, dass sich das irgendwie per stty einstellen lässt, nach man page studieren und rumprobieren hab ich es allerdings nicht hinbekommen.
Kann mir da jemand weiterhelfen?
Danke schon mal.
Gruß,
Ivo
Hey,
schau mal hier:
http://kampis-elektroecke.de/?page_id=1682
Vielleicht hilft dir das ja weiter (funktioniert übrigens auch mit einem USB-Seriell Wandler. Der heißt dann nur ttyUSB0 oder so).
Schaut ruhig mal auf meiner Homepage vorbei :
http://kampis-elektroecke.de
Oder folge mir auf Google+:
Daniel Kampert
Es gibt 10 Arten von Menschen. Die einen können Binär, die anderen nicht.
Gruß
Daniel
Danke für die Antwort,
hab auf deiner Seite schonmal vorbeigeschaut aber nicht die Lösung des Problems gefunden:
vielleicht ein bisschen genauer:
Die Andere Seite der seriellen Schnittstelle schickt zur Bestätigung das geschickte Zeichen wieder zurück und dieses wird dann direkt wieder zurückgeschickt. Also empfängt die andere Seite (ein Roboter) das Zeichen doppelt, was bei toggle befehlen nicht so praktisch ist.
Da fehlen mir noch ein paar Infos. Worüber wird kommuniziert? USB-Seriell Wandler oder die "integrierte" ttyAMA0? Welche Sprache wird verwendet? C, sh, bash, python? Wie wird die Schnittstelle genau initialisiert?
Wenn das Herz involviert ist, steht die Logik außen vor! \/
Genau.
Poste mal bitte beide Programme/Abläufe zu dem ganzen.
Weil das ist nicht das "normale" Verhalten der UART Schnittstelle vom rPi das es einfach Daten wieder zurück schickt, frei nach dem Motto "Will ich nicht haben"
Schaut ruhig mal auf meiner Homepage vorbei :
http://kampis-elektroecke.de
Oder folge mir auf Google+:
Daniel Kampert
Es gibt 10 Arten von Menschen. Die einen können Binär, die anderen nicht.
Gruß
Daniel
Hey,
die Geschichte passiert schon bevor ich versuche zu empfangen.
Sobald ttyAMA0 auf die korrekte Baudrate eingestellt ist werden empfangene Zeichen zurückgeschickt.
Hier die Test Datei auf dem Atmega 32, die wenn ich sie starte fröhlich blinkt.
Code:atmega 32 usart initialisierung UCSRC |= (1<<URSEL)|(1<<UCSZ0)|(1<<UCSZ1); // Asynchron, 8N1 UBRRH=(uint8_t)(UART_BAUD_CALC>>8); // Baudrate wählen UBRRL=(uint8_t)UART_BAUD_CALC; UCSRB |= (1 << TXEN); // UART TX (senden) einschalten UCSRB |= (1 << RXEN); // UART RX (empfangen) einschalten usart funktionen: void usart_putc(unsigned char c) // Ein Zeichen senden { while(!(UCSRA & (1 << UDRE))); // warte, bis UDR bereit UDR = c; // sende Zeichen } int16_t usart_getc_nowait (void) { // Liefert das empfangene Zeichen, falls etwas empfangen wurde; -1 sonst return (UCSRA & (1 << RXC)) ? (int) UDR : -1; } testprogramm: while(1) { empfangen=usart_getc_nowait(); if(empfangen=='B') { if (!z_led_links) { led_links(gelb); z_led_links=1; } else { led_links(aus); z_led_links=0; } } if(kontroll_zaehler>=50) // Sekunde { led_rechts(gruen); usart_putc ('B'); kontroll_zaehler=0; } }
Ich meinte mehr die Raspberry Seite.Da fehlen mir noch ein paar Infos. Worüber wird kommuniziert? USB-Seriell Wandler oder die "integrierte" ttyAMA0? Welche Sprache wird verwendet? C, sh, bash, python? Wie wird die Schnittstelle genau initialisiert?
Wenn das Herz involviert ist, steht die Logik außen vor! \/
auf Raspberry Seite hab ich per shell nur die baud rate konfiguriert also:
stty -F ttyAMA0 ispeed 9600 ospeed 9600
und dann wird schon jedes geschickte zeichen zurückgeschickt.
Kopiere mal die Datei nach dem Entpacken auf den Raspi und führe diese mal aus. (Rechte 755, evtl. mit sudo vorneweg)
Diese stellt den Port auf 9600 BAUD ein und schaltet das Echo ab.
Dann gleich Dein Programm testen.
Ist es danach immer noch so, dann liegt das Problem tiefer.
Wenn das Herz involviert ist, steht die Logik außen vor! \/
Hat erstmal nichts geändert. :/
hat die datei einfach alle "echo*" einstellungen deaktiviert?
Damit hatte ich nämlich auch schon rumprobiert.
Hier mal die Ausgabe von stty -F ttyAMA0 -a nach ausführens deines Programms.
Code:speed 9600 baud; rows 24; columns 80; line = 0; intr = <undef>; quit = <undef>; erase = <undef>; kill = <undef>; eof = <undef>; eol = <undef>; eol2 = <undef>; swtch = <undef>; start = <undef>; stop = <undef>; susp = <undef>; rprnt = <undef>; werase = <undef>; lnext = <undef>; flush = <undef>; min = 1; time = 0; -parenb -parodd cs8 -hupcl -cstopb cread clocal -crtscts -ignbrk -brkint ignpar -parmrk -inpck -istrip -inlcr -igncr -icrnl -ixon -ixoff -iuclc -ixany -imaxbel -iutf8 -opost -olcuc -ocrnl -onlcr -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0 -isig -icanon -iexten -echo -echoe -echok -echonl -noflsh -xcase -tostop -echoprt -echoctl -echoke
Lesezeichen