Hallo,
@a7x:
Probier erstmal nach jeder Zeile eine kurze Pause einzufügen (also die Ausgabe mit ner zweiten Stopwatch machen)
damit der Raspi(!) da überhaupt nachkommt mit dem Empfang. Fang mal mit 25ms an und teste dann andere Zeiten.
Als nächstes dann mal auf C umsteigen und nicht python scripte nutzen und statt es in nem Terminal (per Netzwerk oder im Fenster) ausgeben lassen mal in eine Datei oder einen großen Puffer schreiben (im RAM, nicht auf der SD Karte).
EDIT: Du kannst statt einer kurzen Zeile natürlich auch mehr Text auf einmal ausgeben (wieviel musst Du ausprobieren, 5 Zeilen, 20 Zeilen... ), wichtig ist, dass da regelmäßig eine kurze Pause eingefügt wird.
Und natürlich kann man da ein kleines Protokoll selbst implementieren (egal was fürn UART) - muss nix wildes sein einfach nur den Empfang kurz quittieren und erst dann weitersenden (+Timeout +Repeat).
@Rolf:
a7x nutzt hier die andere Richtung: RP6 sendet, Raspi empfängt.
Das Senden ist in der RP6Lib natürlich blockierend (ist mit voller Absicht so und nicht interrupt basiert, sonst wäre es gerade für Anfänger völlig undurchsichtig wann welcher String gesendet wird - so wird die Ausgabe erst vollständig erledigt und dann gehts mit dem rest des Programms weiter), da geht auf der Seite nichts verloren sondern beim Raspi.
Der UART Empfang allerdings läuft in der RP6 Lib natürlich Interrupt basiert und nutzt einen größeren Ringpuffer.
Das läuft auch auch mit 500k Baud stabil (vielfach erfolgreich mit dem RP6 getestet - klar der Rest muss auch stimmen damit das gut klappt, die Lib kann aber nix dafür wenn der Anwender es falsch nutzt bzw. die CPU anderweitig zu stark auslastet). Egal - wird hier gar nicht genutzt, ist nur zusatzinfo.
Hier läufts ja sogar nur mit 38k Baud also viel langsamer als das was möglich ist...
MfG,
SlyD
Lesezeichen