Forum: Mikrocontroller und Digitale Elektronik Autoreset des Drecks-Arduino deaktivieren.


von Christian (Gast)


Lesenswert?

Hi,

seit gut einer Woche arbeite ich an einem Problem mit einem dieser 
scheiss Arduinoboards... Nach tagelangem Fehlereingrenzen und Debuggen 
habe ich den Fehler gefunden:
Der Arduino resettet sich automatisch, wenn man die serielle 
Schnittstelle (z.B. in Matlab) öffnet.

Weiss jemand, wie man das beim Arduino Due deaktivieren kann? Die 
Tipps mit Widerständen und Kondensatoren haben bisher nicht geholfen...

Gruß,

Christian

von Moritz A. (moritz_a)


Lesenswert?

Wenn Seriell über den mega16u2 läuft, sollte Entfernen von R23 helfen 
http://arduino.cc/en/uploads/Main/arduino-Due-schematic.pdf

Ansonsten mal die restlichen Resetquellen auf MASTER-RESET überprüfen.

von ich (Gast)


Lesenswert?

Hallo,
Hast du einen Schaltplan bzw. eine Erklärung für die Stromversorgung.
Ich könnte mir eigenlich nur vorstellen, dass die Vcc zusammenbricht 
oder irgend ein Automatismus vom Arduino so reagiert.
MfG
ich

von Christian (Gast)


Lesenswert?

Danke! Das sieht schonmal hilfreich aus!

von Michael R. (Firma: Brainit GmbH) (fisa)


Lesenswert?

Das könnte helfen: 
http://playground.arduino.cc/Main/DisablingAutoResetOnSerialConnection

Der Reset kommt vom DTR wenn ich mcih recht erinnere, und hat damit zu 
tun dass masn aus der Arduino IDE jederzeit neu flashen kann, dafür ist 
es nötig das Board zu resetten damit der Bootloader anspringt.

von Christian (Gast)


Lesenswert?

Moritz A. schrieb:
> Wenn Seriell über den mega16u2 läuft, sollte Entfernen von R23
> helfen
> http://arduino.cc/en/uploads/Main/arduino-Due-schematic.pdf
>
> Ansonsten mal die restlichen Resetquellen auf MASTER-RESET überprüfen.

R23 ist ausgelötet. Nun muss ich nach dem Flashen manuell über den 
Taster resetten. Dennoch wird der Controller beim öffnen (oder 
vielleicht auch beim Schliessen) der seriellen Schnittstelle resettet...

Michael Reinelt schrieb:
> Das könnte helfen:
> http://playground.arduino.cc/Main/DisablingAutoRes...
>
> Der Reset kommt vom DTR wenn ich mcih recht erinnere, und hat damit zu
> tun dass masn aus der Arduino IDE jederzeit neu flashen kann, dafür ist
> es nötig das Board zu resetten damit der Bootloader anspringt.

Weder Kondensator nach GND noch Widerstand nach VCC scheinen zu 
helfen...

von Jürgen S. (jurs)


Lesenswert?

Christian schrieb:
> Weiss jemand, wie man das beim Arduino Due deaktivieren kann? Die
> Tipps mit Widerständen und Kondensatoren haben bisher nicht geholfen...

Was für Widerstände und welche Kondensatoren haben mit welcher Schaltung 
nicht geholfen?

Ein 1K Widerstand zwischen Reset und 3V3 hat nicht geholfen?

von Christian (Gast)


Lesenswert?

ich schrieb:
> Hallo,
> Hast du einen Schaltplan bzw. eine Erklärung für die Stromversorgung.
> Ich könnte mir eigenlich nur vorstellen, dass die Vcc zusammenbricht
> oder irgend ein Automatismus vom Arduino so reagiert.
> MfG
> ich

Stromversorgung über USB.
Ich habe ein Minimalbeispiel:
1
void setup() 
2
{
3
  Serial.begin(115200);
4
}
5
6
char c = '0';
7
void loop() 
8
{
9
  if (Serial.available() > 0)
10
  {
11
    c = Serial.read();  
12
  }
13
  Serial.println(c);
14
  delay(100);
15
}

Ich öffne die Schnittstelle mit HTerm und empfange lauter Nullen. Nun 
gebe ich eine 1 ein und empfange auch diese. Nach Disconnect / Connect 
empfange ich wieder nur Nullen...

von Christian (Gast)


Lesenswert?

Jürgen S. schrieb:
> Christian schrieb:
>> Weiss jemand, wie man das beim Arduino Due deaktivieren kann? Die
>> Tipps mit Widerständen und Kondensatoren haben bisher nicht geholfen...
>
> Was für Widerstände und welche Kondensatoren haben mit welcher Schaltung
> nicht geholfen?
>
> Ein 1K Widerstand zwischen Reset und 3V3 hat nicht geholfen?

Genau, das hat nicht geholfen.

1µF und 10µF gegen GND haben ebenfalls nicht geholfen.

Vielleicht beides in Kombination?

von Jürgen S. (jurs)


Lesenswert?

Christian schrieb:
> Jürgen S. schrieb:
>> Ein 1K Widerstand zwischen Reset und 3V3 hat nicht geholfen?
>
> Genau, das hat nicht geholfen.
>
> 1µF und 10µF gegen GND haben ebenfalls nicht geholfen.
>
> Vielleicht beides in Kombination?

Der einfachste Weg zur Vermeidung des Autoreset wäre wohl, den anderen 
USB-Port zu verwenden.

Der DUE hat zwei USB-Ports.

Der eine ist der "Native USB Port".
Der andere ist der "Programming port".

Nur beim Öffnen der Seriellen Schnittstelle über den "Programming port" 
wird der Autoreset durchgeführt. Dieser Port ist an den ersten UART des 
SAM3x angeschlossen. In der Arduino-Software wird dieser Port über das 
"Serial" Objekt angesprochen.

Der "Native USB Port" läuft über das USB-Hostinterface des Controllers. 
In der Arduino-Software wird er über das "SerialUSB" Objekt 
angesprochen.

Verwendest Du die Arduino-Software zum Programmieren?
Dann wechsele einfach den verwendeten USB-Port!

Andere Idee: Kannst Du Deine serielle Anwendersoftware eigentlich nicht 
so konfigurieren, dass DTR nicht verwendet wird bzw. dauerhaft Low 
bleibt, wenn Du mit dem Programm die serielle Schnittstelle öffnest?

von Christian (Gast)


Lesenswert?

Hi, danke für die Hinweise!
Ich werde mal probieren, die SerialUSB Schnittstelle zu verwenden!

Ich verwende Matlab zum Öffnen und Schließen der Schnittstelle... ich 
wüsste nicht, wie ich da das DTR deaktieren sollte...

von Robert N. (metrux)


Lesenswert?


von Christian (Gast)


Lesenswert?

Ich habe das Minimalbeispiel jetzt auf SerialUSB geändert und geflasht. 
Anschliessend den USB-Stecker umgesteckt. Arduino hat sich dann als COM6 
gemeldet. Jedoch empfange ich auf COM6 gar nichts.
Ideen?

von Christian (Gast)


Lesenswert?

Wenn ich in der Arduino IDE auf Due(Native Port) und COM 6 umschalte, 
dann sehe ich die Nullen.
Wieso kann ich den Port jetzt nicht mit HTerm auslesen?

von Hinweisgeber (Gast)


Lesenswert?

Der Arduino hat die Faxen von seinem Drecks-Anwender satt.

SCNR

von Christian (Gast)


Lesenswert?

Ja ich wünschte, ich könnte wieder mein eigenes Atmega-Board verwenden 
-.-
Arduino und ich werden keine Freunde!

von Christian (Gast)


Lesenswert?

Danke an alle, die konstruktiv beigetragen haben! Nun läuft alles!

von M. K. (avr-frickler) Benutzerseite


Lesenswert?

Du kannst an RX0 (Pin 0) und TX0 (Pin 1) auch einfach wieder einen 
eignen USB-UART oder einen MAX232 hängen, ist gleiche Schnittstelle wie 
am mega16u2.

Christian schrieb:
> Arduino und ich werden keine Freunde!

Geht mir genauso deshalb verwendet ich auch Eclipse und C. ;-)

von Jürgen S. (jurs)


Lesenswert?

Christian schrieb:
> Wenn ich in der Arduino IDE auf Due(Native Port) und COM 6 umschalte,
> dann sehe ich die Nullen.
> Wieso kann ich den Port jetzt nicht mit HTerm auslesen?

Ein serieller Port kann immer nur von einem einzigen Programm zur Zeit 
geöffnet sein.

Hast Du den "Seriellen Monitor" der Arduino-IDE zuerst geschlossen, 
bevor Du denselben Port mit HTerm zu öffnen versucht hast?

von Christian (Gast)


Lesenswert?

Jürgen S. schrieb:
> Christian schrieb:
>> Wenn ich in der Arduino IDE auf Due(Native Port) und COM 6 umschalte,
>> dann sehe ich die Nullen.
>> Wieso kann ich den Port jetzt nicht mit HTerm auslesen?
>
> Ein serieller Port kann immer nur von einem einzigen Programm zur Zeit
> geöffnet sein.
>
> Hast Du den "Seriellen Monitor" der Arduino-IDE zuerst geschlossen,
> bevor Du denselben Port mit HTerm zu öffnen versucht hast?

Ja das habe ich natürlich! Sowohl Matlab als auch die Arduino Konsole 
können von dem "native USB" lesen. HTerm scheint irgendwie ein Problem 
zu haben...

von Peter R. (pnu)


Lesenswert?

Christian schrieb:
> Danke an alle, die konstruktiv beigetragen haben! Nun läuft alles!

Genau dies war natürlich das Wichtigste. Der Arduino von Christian läuft 
wieder.  - Dann kann ich ja heut nacht ruhig schlafen.

Nebenbei: Mancher würde vielleicht auch gerne wissen, woran es nun 
gelegen hat, dass ers jetzt wieder tut.

von Christian (Gast)


Lesenswert?

Hast du den ganzen Beitrag gelesen?
Der Arduino hat sich bei Öffnen und Schließen des Ports immer resettet.
Nun bin ich von der Serial-Schnittstelle auf die SerialUSB-Schnittstelle 
umgestiegen. Nun erfolgt kein Auto-Reset mehr und das Matlab-Skript in 
Verbindung mit dem Arduino-Board läuft!

von Walter (Gast)


Lesenswert?

So wie Du Dich ausdrückst ist es kein Wunder, dass Du Probleme hast.
Depp!

von Bernd K. (prof7bit)


Lesenswert?

Der Port lässt sich unter Windows so öffnen daß DTR nicht betätigt wird. 
Bin ich mal durch Zufall drüber gestolpert und hab mich gewundert warum 
er keinen Reset macht. Unter Linux jedoch ist mir das leider nicht 
gelungen, das scheint der Treiber nicht zu unterstützen.

von Kaj (Gast)


Lesenswert?

Ihr hab schon gesehen das der Thread von 2014 ist?

Abgesehen davon:
Die Arduinos melden sich (normalerweise) unter Linux (ttyACM) und BSD 
als Modem. Den Autorest kann man abschalten. Unter BSD ist die Option 
-hupcl von stty hilfreich. Ich weiss aber nicht, ob stty -hupcl unter 
Linux das selbe macht wie unter BSD.

von Dreckspatz (Gast)


Lesenswert?

Bei mir macht der eklige Mist mit 'stty ... -hupcl' tatsächlich keinen 
Reset mehr, was vorher doch gewaltig nervte.

Mein System:
* Arduino Duemilanove (Standard-Bootloader, keine Änderungen an der 
Hardware)
* coreutils 8.13-3.5
* Linux (...) 3.2.0-4-486 #1 Debian 3.2.88-1 i686 GNU/Linux

Vielen Dank für den Tipp!

von Alexander J. (Gast)


Lesenswert?

Robert N. schrieb:
> Hier hat einer die atmega16u Firmware geändert.
>
> 
http://petervanhoyweghen.wordpress.com/2013/05/04/disabling-auto-reset-on-the-due/

VORSICHT BEI DEM LINK: BEI MIR (HANDY) IST EIN POPUPFENSTER 
AUFGEGANGEN, WAS NUR SICH NUR SCHWER SCHLIESSEN LIESS.

Neustart hat nichts gebracht, Browser beenden auch nicht, weil nach 
jedem Öffnen des Browsers das Fenster wieder da war. Ist das Fenster 
erstmal offen, weigert sich Android die APP zu beenden.

Erst Neustart und deaktivieren der Datenverbindung und dann öffnen des 
Browser mit schnelem reagierrn zum Tabschließen hat geholfen.

Wieder eine URL für mrine Blacklist. Und ich meine nicht dnur en 
Werbelink, sondern gleich wordpress.com. 99,9% der Blogs dirt sind eh 
Müll.

Wer nicht bereit ist ein paar Kröten für eine eigene Domain auszugeben, 
der kann auch die Bloggerklappe halten.

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.