Reset beim Arduino steuerbar machen

OP #7374934
Lesenswert?
• ▲
▼

Ich suche nach Schaltung, mit der man den Reset des Arduino Nano über das DTR-Signal per Software sperren kann. Sie sollte folgende Eigenschaften haben:

  • wenn der Port-Pin des 328P auf Input steht, soll DTR einen Reset auslösen können.
  • wenn der Port-Pin des 328P auf Output steht, soll DTR gesperrt oder frei geschaltet sein, je nach Ausgabesignal
  • die Schaltung soll möglichst einfach aufgebaut sein

Ich habe lange überlegt, wie man das machen könnte, bin aber auf keine überzeugende Idee gekommen.

Hat jemand eine Idee?

Anhang: wie der Reset beim Nano realisiert ist.

Angehängte Dateien:
OP #7374948
Lesenswert?
• ▲
▼

Christian M. schrieb:

Deine Anforderungen sind zu umgekehrt!

Per I/O-Port einen Reset auszulösen, ist nicht mein Ziel – einen SW-Reset bekomme ich auch mit dem Watchdog hin.

Sinn der Schaltung soll es sein, den Nano vor dem Reset zu schützen, wenn man ihn während des Betriebs per USB an den PC anschließt – der wird nämlich ausgelöst, wenn Linux das ttyUSB anlegt.

Auf der anderen Seite soll ein verflashter oder leerer Controller, der keine Kontrolle über den Pin geben kann, per Bootlader und avrdude neu programmiert werden können.

#7374958
Lesenswert?
• ▲
▼

Moriz schrieb:

Sinn der Schaltung soll es sein, den Nano vor dem Reset zu schützen

DTR geht auf LOW um den RESET auszulösen. Der 100n erzeugt dann einen kurzen RESET-Puls.

Du kannst zum Beispiel zwischen DTR und diesen Kondensator einen NFET setzen, mit S an DTR, D am Kondensator, und G an deinem Port, und noch einem 10k von G/Port an VCC. Wenn dann der Port auf Input, oder auf Output High steht, leitet der FET und DTR löst den RESET aus; wenn aber der Port auf Output Low steht, sperrt der FET und DTR Low löst den RESET nicht aus.

LG, Sebastian

#7374980
Lesenswert?
• ▲
▼

Ein leerer Controller schaltet den Pin nicht auf Output - Reset ist möglich. Ein gutes Programm macht das und verhindert so den Reset. Alles gut, aber: Ein böses Programm wird das (natürlich) auch machen. Also in erster Näherung ist es unmöglich.

Ein gutes Programm könnte auf einem Pin ein Rechteck ausgeben, und zwar per Programm, nicht per Timer. Die zusätzliche Hardware würde den Reset genau dann sperren, wenn die Frequenz stimmt. Natürlich würde ein böses Programm auch die richtige Frequenz ausgeben.

Man könnte die Sperre erst eine gewisse Zeit nach dem Einschalten freigeben. In der Zeit ist es egal, was das Programm macht, ein Reset ist möglich. Man muss dann nur schnell genug die Programmierung starten.

Deshalb benutze ich nicht DTR oder RTS, sondern sende ein BREAK. Ja, das kostet 5 oder 6 Bauteile, aber dafür funktioniert es. Bonus: es funktioniert auch ohne USB bzw. mit jedem USB-UART-Konverter, weil man nur die Datenleitungen braucht.

OP #7375024
Lesenswert?
• ▲
▼

Bauform B. schrieb:

Also in erster Näherung ist es unmöglich.

In dem raren Fall müsste man einmal auf den Bootlader verzichten und den Chip per ISP flashen – das wäre in meinen Augen vertretbar.

Deshalb benutze ich nicht DTR oder RTS, sondern sende ein BREAK. Ja, das kostet 5 oder 6 Bauteile, aber dafür funktioniert es.

RTS für Reset verwenden? Das ist Unsinn, RTS ist eine Handshakeleitung, die jederzeit vor einer neuen Datenübertragung vom Sender aktiviert werden kann – damit will man ganz sicher kein Reset lostreten…

Das mit dem BREAK könnte man machen, hat aber den Nachteil, dass das mit dem Arduino-Bootlader nicht kompatibel ist.

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.