www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik AVR <-> PC Kommunikation (unter Linux)


Autor: Joghurt3000 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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 :-)

Autor: ozo (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Joghurt3000 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Stefan Ernst (sternst)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Joghurt3000 wrote:
> mir ist nicht eingefallen wie ich mit echo ein '\r' sende

echo -e "text\r"

oder ohne das \n hinterher:

echo -en "text\r"

Autor: Joghurt3000 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.