AVR <-> PC Kommunikation (unter Linux)

Gast #1016572
Moin,
ich habe hier einen kleinen Mega8 der per UART mit 'nem alten PC 
kommunizieren soll. Ich habe also auf dem AVR ein Programm am laufen 
welches bytes/chars sammelt und solange puffert bis entweder 80 zeichen 
empfangen sind (und dann den puffer resettet) oder bei empfang con '\r' 
den empfangenen string mit einigen befehlen vergleicht und dann eine 
antwort sendet. Wie gesagt arbeite ich unter Linux (altes Debian Sarge) 
und mit "minicom" funktioniert auch alles ganz gut (lediglich der cursor 
befindet sich nicht am ende der avr-antwort ... who cares). Ein Problem 
habe ich mit meinem eigenen serial-program und zwar sieht es 
folgendermaßen aus: ich sende einen befehl an den avr und bekomme keine 
anwort (oder eine 0-length antwort) sende eine weiteren befehl und 
erhalte dann die antwort für den ersten befehl. Also irgendwie scheint 
der PC wohl was zu puffern oder so ... mir erschließt sich das nicht 
genau. Ich habe schon versucht einfach zwei reads nach dem ersten write 
eizusetzen, aber das bringt auch den gewünschten effekt. pc-code basert 
auf diesen "linux-serial-programming-hwtos" mit 
"non-canonical-synchronous" setup. Ich werde versuchen den code mal hier 
als anhang zu posten, muss ihn irgendwie von dem anderen rechner 
bekommen. vllt hat ja schon jmd ne idee?

beste grüße & vielen dank :-)
Gast #1016612
Hast du mal ohne das PC-seitige Programm getestet? Einfach mit echo & 
cat direkt auf der Schnittstelle. Sehr wahrscheinlich liegt es eher am 
Microcontroller bzw. dessen programmierung.
Gast #1016655
Ich habe mal das "echo" durch "minicom" ersetzt (mir ist nicht 
eingefallen wie ich mit echo ein '\r' sende und war zu faul den avr code 
zu ändern) und bekomme dann mit cat die entsprechende, prompte und 
unverzögerte antwort (und keine in minicom - cat fängt hie wohl ab). Ich 
habe mal meinen code hochgeladen:

pc-prog: http://pastebin.com/m32d150bb
avr-prog: http://pastebin.com/m35aa48cb

thx ozo, weitere vorschläge? habe noch ein erweitertes howto gefunden 
und werde mir dieses nun mal angucken. in der zwischeneit bin ich für 
weitere kommentare natürlich dankbar.
Gast #1018088
Okay, danke. Ich habs jetzt, c_cc[VTIME] in der termios struct sollte 
auf größer Null gesetzt sein ... rs232 Kommunikation ist wohl doch 
langsamer als das Fetchen (wenn nicht schon teils geprefetched) und 
Executen von ein paar Opcodes auf meinem alten 586er.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 18 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.