Pages: [1]   Go Down
Author Topic: Arduino-Board-reset nach 10 s  (Read 326 times)
0 Members and 1 Guest are viewing this topic.
Munich
Offline Offline
Newbie
*
Karma: 0
Posts: 1
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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?
Logged

Switzerland
Offline Offline
Faraday Member
**
Karma: 108
Posts: 5144
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Quote
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.
Logged

Germany S-H
Offline Offline
Faraday Member
**
Karma: 138
Posts: 2891
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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.

Logged

Pages: [1]   Go Up
Jump to: