- Labornetzteil AliExpress         
Ergebnis 1 bis 10 von 27

Thema: UART Kommunikation zwischen Raspi und Arduino hängt sich ständig auf

Baum-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #11
    HaWe
    Gast
    Zitat Zitat von wkrug Beitrag anzeigen
    Ich hab jetzt den Code nicht zerpflückt und bin auch kein ARDUINO Mann aber,

    könnte es sein das der Raspberry einen Softwareloop auf die serielle Schnittstelle macht und somit der Eingangspuffer mit den empfangenen Daten, die der Arduino selbst gesendet hat überläuft?
    Das sollte sich testen lassen, wenn man die RxD Leitung des Arduino mal auftrennt und den Sendecode umschreibt.

    Ich lös das immer so, das der Datenempfang im Interrupt läuft und einen Ringpuffer befüllt.
    Dann gibt's da noch einen Schreib- und einen Lesezeiger auf den Ringbuffer und in der Hauptroutine wird dann, wenn die beiden unterschiedlich sind eine Abfrageroutine ausgeführt und die empfangenen Bytes ausgewertet.

    Die Senderoutine läuft dann ganz normal mit Polling auf das USARTx DRE Bit.
    Da die Atmegas einen Doppelpuffer haben gehen da am Anfang immer gleich 2 Bytes rein.
    Kriegt man die Hauptroutine unter 86µs pro Durchlauf sollten da auch keine Lücken im Sendedatenstrom entstehen.
    danke, aber ich wüsste jetzt nicht, wie ich das umschreiben soll, und ich kann den Arduino ja nicht per Serial/USB- console auslesen, weil er per USB am Raspi hängt - auf einen genauen (Arduino- oder Raspi C) Code wäre ich da jetzt schon angewiesen.
    Kann aber auch sein, dass der Fehler Raspi-seitig ist, nicht Arduino-seitig, s. hier: https://www.raspberrypi.org/forums/v...9e491#p1475408

    In jedem Falle wäre es aber am besten, einen Code zu benutzen, den schon jemand erfolgreich verwendet, und nach so vielen Jahren Raspi und Arduino müsste es das doch geben - ich bin doch da wschl nicht wirklich der allererste, der sich daran versucht?

    (Später will ich einen sehr langen String mit an die 50 tokens+args übergeben, mit denen ich schnell Variablen (int, double)- und pin-r/w-Werte (digital, ADC) hin und her übertragen will. Auch serielle Eingaben über die Konsole, abgeschlossen per Enter, sollen später grundsätzlich möglich sein, daher soll der lange String mit '\n' enden.)

    - - - Aktualisiert - - -

    PS,
    auf einen Tipp hin habe ich die Leseroutine beim Pi jetzt abgeändert (versuchsweise optional auch am Arduino entsprechend)

    Code:
     if (serialDataAvail(Serial)) { 
            while(!stringComplete && n<MSGLEN-1) {    
              if(n==MSGLEN-2) inChar='\n'; // emergency brake
              else  
                inChar = serialGetchar(Serial); 
           
              if(inChar=='\n' || inChar>=' ') inputString += inChar;       
              if (inChar == '\n')  {
                stringComplete = true;
              }
              n++;
            } 
         }
    läuft jetzt am Mega mit 2000-3000 loops, aber dann hängt er wieder - am Due läufts ohne Probleme bislang weiter....
    Künftig sollen beide Codes aber auch unabhängig vom Arduino-Board laufen, egal ob AVR oder ARM oder ESP.



    Update: nach ca. 30min hat es sich dann auch beim Due aufgehängt...
    Geändert von HaWe (02.06.2019 um 19:34 Uhr)

Ähnliche Themen

  1. Antworten: 32
    Letzter Beitrag: 04.07.2018, 08:34
  2. Kommunikation zwischen Android und Sensor(UART)
    Von Alasa im Forum Elektronik
    Antworten: 3
    Letzter Beitrag: 18.10.2017, 10:48
  3. [ERLEDIGT] Problem bei UART Kommunikation zwischen ATmega und VB.net
    Von masasibe im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 15
    Letzter Beitrag: 10.09.2011, 17:41
  4. LCD-Kontrast und UART-Kommunikation zwischen 2 µcs
    Von MelMan im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 1
    Letzter Beitrag: 04.12.2008, 15:25
  5. Uart-Kommunikation zwischen µCs
    Von ProgDom im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 2
    Letzter Beitrag: 20.04.2006, 00:37

Berechtigungen

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

Labornetzteil AliExpress