-         

Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 19

Thema: Serielle Schnittstelle - Input Echo

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    25.03.2012
    Beiträge
    15

    Serielle Schnittstelle - Input Echo

    Anzeige

    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

  2. #2
    Moderator Robotik Einstein Avatar von Kampi
    Registriert seit
    21.11.2009
    Ort
    Monheim, Nordrhein-Westfalen, Germany
    Alter
    27
    Beiträge
    3.517
    Blog-Einträge
    9
    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

  3. #3
    Neuer Benutzer Öfters hier
    Registriert seit
    25.03.2012
    Beiträge
    15
    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.

  4. #4
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    18.05.2007
    Ort
    Berlin
    Alter
    46
    Beiträge
    765
    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! \/

  5. #5
    Moderator Robotik Einstein Avatar von Kampi
    Registriert seit
    21.11.2009
    Ort
    Monheim, Nordrhein-Westfalen, Germany
    Alter
    27
    Beiträge
    3.517
    Blog-Einträge
    9
    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

  6. #6
    Neuer Benutzer Öfters hier
    Registriert seit
    25.03.2012
    Beiträge
    15
    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;
            }
       }

  7. #7
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    18.05.2007
    Ort
    Berlin
    Alter
    46
    Beiträge
    765
    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?
    Ich meinte mehr die Raspberry Seite.
    Wenn das Herz involviert ist, steht die Logik außen vor! \/

  8. #8
    Neuer Benutzer Öfters hier
    Registriert seit
    25.03.2012
    Beiträge
    15
    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.

  9. #9
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    18.05.2007
    Ort
    Berlin
    Alter
    46
    Beiträge
    765
    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.
    Angehängte Dateien Angehängte Dateien
    Wenn das Herz involviert ist, steht die Logik außen vor! \/

  10. #10
    Neuer Benutzer Öfters hier
    Registriert seit
    25.03.2012
    Beiträge
    15
    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

Seite 1 von 2 12 LetzteLetzte

Ähnliche Themen

  1. serielle schnittstelle
    Von Roboman93 im Forum Robby RP6
    Antworten: 11
    Letzter Beitrag: 15.04.2008, 19:48
  2. Serielle Schnittstelle
    Von pacer_one im Forum AVR Hardwarethemen
    Antworten: 6
    Letzter Beitrag: 08.01.2008, 18:33
  3. Serielle Schnittstelle
    Von suggle im Forum Sensoren / Sensorik
    Antworten: 4
    Letzter Beitrag: 24.01.2006, 14:34
  4. serielle Schnittstelle
    Von Devil Ray im Forum C - Programmierung (GCC u.a.)
    Antworten: 13
    Letzter Beitrag: 04.10.2004, 13:26
  5. 2x ATMEGA 1x serielle Schnittstelle?
    Von boeseTURBO-CT im Forum AVR Hardwarethemen
    Antworten: 11
    Letzter Beitrag: 16.06.2004, 12:35

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •