Forum: Mikrocontroller und Digitale Elektronik Arduino Micro TX funktioniert nicht nicht


von Chris (Gast)


Lesenswert?

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?

von Wolfgang (Gast)


Lesenswert?

Chris schrieb:
> Was ist da das Problem?

Vielleicht liegt es am Programm. Oder kannst du das sicher ausschließen?

von Chris (Gast)


Lesenswert?

Das Programm ist eigentlich nur auf einen Print Befehl reduziert.
Das würde Ich jetzt mal ausschließen.

von jo mei (Gast)


Lesenswert?

Chris schrieb:
> Was ist da das Problem?

Zeige erst dein ganzes (Minimal-)Programm wo der Fehler auftritt,
dann reden wir weiter.

von Chris (Gast)


Lesenswert?

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
}

von Michael U. (amiga)


Lesenswert?

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

von Einer K. (Gast)


Lesenswert?

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.

von Michael U. (amiga)


Lesenswert?

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
Noch kein Account? Hier anmelden.