Hallo, habe folgendes Problem. Ich habe einen Arduino Micro am USB hängen. Ich verbinde mich mit dem Arduino mit HTerm. Wenn ich an den Arduino was sende reagiert dieser auch. Wenn ich allerdings etwas an den PC zurücksenden möchte passiert rein garnichts. Auch die TX LED auf dem Board macht nichts. Habe schon in diversen Forum alles durchstöbert, das Problem scheint bekannnt zu sein und man soll nach Serial.begin(9600); das einfügen while(!Serial) ; Wenn ich das while(!Serial) ; einfüge ist das ganze Programm eingeforen scheint dann in der Schleife gefangen zu sein. Was ist da das Problem?
Chris schrieb: > Was ist da das Problem? Vielleicht liegt es am Programm. Oder kannst du das sicher ausschließen?
Das Programm ist eigentlich nur auf einen Print Befehl reduziert. Das würde Ich jetzt mal ausschließen.
Chris schrieb: > Was ist da das Problem? Zeige erst dein ganzes (Minimal-)Programm wo der Fehler auftritt, dann reden wir weiter.
Hallo, Code sieht folgendermaßen aus: TX macht reingarnichts, auch nich die TX LED
1 | int led = 13; |
2 | |
3 | void setup() { |
4 | Serial.begin(9600); |
5 | pinMode(led, OUTPUT); |
6 | }
|
7 | |
8 | void loop() { |
9 | digitalWrite(led, HIGH); // turn the LED on (HIGH is the voltage level) |
10 | delay(1000); // wait for a second |
11 | digitalWrite(led, LOW); // turn the LED off by making the voltage LOW |
12 | delay(1000); |
13 | Serial.write("Test"); |
14 | }
|
Hallo, Chris schrieb: > Wenn ich das while(!Serial) ; einfüge ist das ganze Programm eingeforen > scheint dann in der Schleife gefangen zu sein. Der Micro hat einen AVR32U44 drauf, der auch USB erledigt. Die Warteschleife muß rein damit der Zeit hat, seine Initialisierung und die Verbindung zum PC zu erledigen. Wenn er da hängt stimmt mit dem Treiber für die COM auf dem PC was nicht. Der wird nur für die Datenübertragung mit Serial genutzt, zum Programmieren baurt er eine andere Verbindung auf. Gruß aus Berlin Michael
Natürlich tuts der Mikro! z.B. mit der Arduino eigenen seriellen Konsole. Und auch mit anderen "Terminal Emulatoren" Nur HTerm ist da etwas, naja, flexibler. Es möchte gerne, dass man oben in der Leiste "CTS Flow control" deaktiviert. Und unten, knapp, schräg, über dem "ASend" Button DTR aktiviert. Dann klappts auch mit HTerm -------------- Michael U. schrieb: > Die Warteschleife muß rein damit der Zeit hat, seine Initialisierung und > die Verbindung zum PC zu erledigen. Ihr meint while(!Serial) ; ?!?! Serial überläd den casting operator bool(). Das Ziel: Wenn eine COM Verbindung zum PC besteht, liefert Serial true, sonst false Also, ob while(!Serial); ins Programm rein muss, liegt einzig daran, ob das Programm auch ohne Serielle Konsole starten soll, oder eben nur wenn eine COM Verbindung besteht. Aus der Praxis: A: while(!Serial) muss ins Programm, wenn man alle Startmeldungen sehen will, z.B. zu debugging zwecken. B: while(!Serial) darf nicht ins Programm, wenn der Mikro/Leonardo auch standalone laufen soll, also ohne den PC und seine Konsole.
Hallo, erstmal Danke für Deine Ergänzung. Arduino Fanboy D. schrieb: > Aus der Praxis: > A: while(!Serial) muss ins Programm, wenn man alle Startmeldungen sehen > will, z.B. zu debugging zwecken. > B: while(!Serial) darf nicht ins Programm, wenn der Mikro/Leonardo auch > standalone laufen soll, also ohne den PC und seine Konsole. C: ich habe eine Warteschleife drin wenn beides für mich wahlweise nötig ist:
1 | for (byte i = 0; i < 100; i++) |
2 | { |
3 | if (Serial) |
4 | { |
5 | break; |
6 | } |
7 | delay(50); |
8 | } |
Er wartet ganz primitiv max. 5s ob die Serielle ragiert. Stört für mich in der Praxis nicht weil er entweder weitermacht sobal die Serielle ready ist oder eben standalone läuft und da dann meist 24/7. Gruß aus Berlin Michael
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.