Arduino-Board-reset nach 10 s

Hallo,
ich arbeite nun schon einige Zeit mit einem MEGA2560. Dies Board habe ich gewählt, um einen Port-Expander für einen PC zu erstellen. Der PC soll mit einfachen ASCII-Kommandos über die serielle Schnittstelle digitale und analoge Pins des Arduino-Boards einlesen bzw. setzen.
Ich habe die Arduino-Sw fertig und sie mit einem Terminal-Programm (zoc, putty, meguno-link) getestet. Dies funktioniert gut.

Nun habe eine Windows-GUI geschrieben, welche Maus-Clicks in eben diese ASCII-Kommandos umsetzt und die Ansteuerung der seriellen Schnittstelle vornimmt. Hierzu benutze ich eine Serial-Library, die schon in anderen Projekten eingesetzt wurde.

Wenn ich nun meine GUI starte, und diese die serielle Schnittstelle initialisiert, dann macht das Arduino-Board alle 10s einen Reset. (Dies erkenne ich eindeutig, da mein Board nach einem Reset einen Text "r\n" als reset-indication ausgibt.)

Ich verstehe dies Verhalten nicht.

Ich weiß, dass der Bootloader eine Autoreset-Funktionalität hat, die (so glaube ich) mit dem RTS-signal der seriellen Schnittstelle zu tun hat. Irgendwie muss der Bootloader ja auch in den Mode gebracht werden, dass er eine neu SW zu Programmieren entgegennimmt. Ich habe dies Signal mit der Seriell-Library auf 0 und auf 1 gesetzt; es hat irgendwie keine Auswirkung auf den zyklischen Reset; der kommt weiterhin.

Wer kann mir helfen, dies Problem zu verstehen?

ch weiß, dass der Bootloader eine Autoreset-Funktionalität hat, die (so glaube ich) mit dem RTS-signal der seriellen Schnittstelle zu tun hat

Nein, es ist nicht das RTS- sondern das DTR-Signal, welches den Arduino resetten lässt. Dies passiert normalerweise immer, wenn die serielle Schnittstelle geöffnet wird. Bei einigen Bibliotheken ist eine Auto-Scan-Funktion eingebaut, die ständig überprüft, welche seriellen Schnittstellen verfügbar sind. Falls Deine Bibliothek das auch kann/macht, solltest Du diese Funktionalität deaktivieren.
Die andere Möglichkeit ist, den Arduino so zu modifizieren, dass er bei einem DTR-Signal nicht mehr resettet. Damit verlierst Du aber auch die einfache Upload-Möglichkeit für Deine Sketches.

Detlef1954:
Wer kann mir helfen, dies Problem zu verstehen?

Das ist ein Arduino Feature und nennt sich Autoreset. Jedesmal wenn über den USB die serielle Schnittstelle zum PC geöffnet wird, führt der Arduino automatisch einen Reset aus.

Dadurch ist es z.B. möglich, Programm-Sketche auf den Arduino hochzuladen, ohne dass am Arduino vorher ein Reset-Button gedrückt werden muss. Aber dadurch gibt es auch jedesmal einen Controller-Reset, wenn der serielle Monitor geöffnet wird.

Wenn Du den Auto-Reset disabeln möchtest, nachdem Dein Programm so weit debuggt ist und nur noch laufen soll, kannst Du einen 10?F Kondensator zwischen die RESET und GND Pins schalten. Dann sollte der Autoreset nicht mehr funktionieren.