Go Down

Topic: Probleme bei der seriellen Kommunikation. (Read 984 times) previous topic - next topic

iluvatar2k13

Hi,
ich versuche über ein Terminalprogramm Daten zwischen Arduino und dem Pc zu schicken.
Es werden auch Daten übertragen, aber leider ganz andere als ich jeweils sende.

Ein Drücken der Entertaste z.B. ergibt auf dem Serial Monitor ein "y"

wenn ich im Terminal test und danach Enter eingebe kommt auf dem Arduino
" MF y" an.

Muss ich beim Terminalprogramm evtl irgendwas einstellen?

Gruß
Ilu

Addi

Du musst evtl. in der IDE wenn du den Pro Mini ,etc. verwendest
den korrekten Prozessor mit der korrekten Freguenz(16 bzw. 8 MHZ) einstelllen.
Wenn man das nicht macht kann der Text verstümmelt ankommen.

ich versuche über ein Terminalprogramm Daten zwischen Arduino und dem Pc zu schicken.

Den Seriellen Monitor in der IDE? Dann musst die richtige Baud-Rate angeben(die du im Sketch
angegeben hast) Vlt. einmal den Sktech zeigen.

Addi
/ \    _|  _| o
 /--\ (_| (_| |

iluvatar2k13

#2
Feb 02, 2013, 05:29 pm Last Edit: Feb 02, 2013, 05:33 pm by iluvatar2k13 Reason: 1
Hiho,

die richtigen Daten sind eingestellt. Hier mal mein Sketch:
Code: [Select]

void setup(){
 
 Serial.begin(9600);
 
}
void loop(){
 if(Serial.available()) {
     int count = Serial.available();
     for (int i = 0; i<count; i++){
             char ch = Serial.read();
             Serial.print(ch);}
          Serial.print("\r");    
     
     }
 delay(1000);
 }


In der anderen Richtung ist genauso, wenn ich mit Serial.println was auf die serielle Schnittstelle ausgebe kommt im Terminalprogramm auch nur Müll an

Doc_Arduino

Hallo,

was macht der Code in Deiner Loop Hauptschleife?

Wenn ich irgendwelche Zwischenwerte zum debuggen o.ä. auf ein Terminal ausgeben möchte, dann nutze ich nur in meinem Programmcode den Befehl bzw. Funktion

Serial.println(Speed, DEC);   

Dann bekomme ich im Terminalfenster den Wert meiner Variablen Speed dezimal ausgegeben.

Oben bei Setup mußte die serielle Schnittstelle nur mit   Serial.begin(9600);   initialisieren. Mehr mußte eigentlich nicht machen.
Versuch erstmal nur die Ausgabe damit. Sollte klappen. Nimmst Du das Terminalfenster vom IDE?
Wenn die Ausgabe klappt, nimmste die Arduino fertige von Serial lesen Funktion.



Tschau
Doc Arduino

iluvatar2k13

Hiho,
ich benutze ein externes Terminalprogramm mit einem usb2serial adapter.

WEnn ich Daten über den Seriellen Monitor der IDE sende habe ich die richtigen Daten in beide Richtungen.


Doc_Arduino

Hallo,

ich nehme an die Baudrate usw. stimmt im externen Terminalprogramm. Das läuft auf dem gleichen Rechner nur mit anderen COM Port vom zusätzlichen Adapter? Was passiert wenn Du das ext. Terminal auf den COM Port vom Arduino einstellst? Damit umgehst Du den Adapter und prüfst ob das auch mit Deinem Terminal klappt und nicht nur mit dem vom IDE. Aber immer nur ein Terminal offen bzw. connected haben.

Sonst.
Kannst Du die serielle Schnittstellen an einen Rechner anschließen der selbst noch eine RS232 hat? Also ohne USB Adapter?
Ich vermute der Adapter macht hier Mist. Das er selbst die Datenweitergabe verzögert. Ich habe bei meinen anderen/alten µC (Renesas R8C13) einen FTDI Chip verbaut. Das hat immer funktioniert.

Tschau
Doc Arduino

iluvatar2k13

Hiho,
wenn ich das Terminalprogramm auf den Arduino einstelle klappts. Mal sehen ob noch n PC mit serieller Schnittstelle auftreibe.

Gruß
Ilu

Doc_Arduino

Hallo,

was Du noch probieren kannst. Es kann auch sein das der FIFO Buffer vom Rechner OS, von dem virtuellen COM Port woran der Adapter hängt, Mist macht. Dazu kannst Du in dessen Eigenschaften (Gerätemanager) gehen und die beiden Schieberegler (Empfangs/Übertragungspuffer) nach links zu niedrig verschieben, falls die auf hoch oder mitte stehen. Probiere damit mal etwas rum.



Tschau
Doc Arduino

thewknd

interessant wäre zu wissen, was da wirklich ankommt.
Quote
" MF y"
Das könnten auch Codes sein, die nicht oder nicht korrekt als Zeichen dargestellt werden können.

Mit Serial.print(ch,HEX); wird die Hexzahl des Zeichen ausgegeben.

um nochmals die Einstellungen zu überprüfen. Meine Einstellungen im Terminalprogramm
duemilanove / OSX & WIN
Arduino & Teensy: http://bit.ly/13rbdtQ

iluvatar2k13

Hiho,

meine Einstellungen sehen bis auf RTS/CTS genauso aus, das habe ich nicht zur Auswahl.DTR Signal gibts bei mir auch nicht.

Das mit dem FiFo Puffer hab ich auch probiert, hat leider auch nichts gebracht. Ich werde mal sehen ob ich nen anderen Adapter bekomme, derweil begnüge ich mich mit der seriellen im Arduino.



Gruß
Ilu

Doc_Arduino

Hallo,

Schade das es nichts gebracht hat mit dem FIFO Buffer. Wenn es mit dem anderen Terminalprogramm auf der normalen Arduino COM funktioniert, dann schließe ich daraus das Deine Terminaleinstellungen stimmen. Demnach kann es nur an dem Adapter liegen laut meiner Meinung. Achte bitte darauf bei der Suche nach einem neuen Adapter das ein FTDI FT232... Chip verbaut ist. Meistens ein FT232RL.
Tschau
Doc Arduino

iluvatar2k13

Hiho,

werd ich machen,  und Danke noch für Eure Hilfe.


Gruß
Ilu

Go Up