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.
Vor den Taster ein R und dort den Portpin dran. Dann kannst mit Low bootstrap hardware resetten. Deine Anforderungen sind zu umgekehrt! Gruss Chregu
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.
:
Bearbeitet durch User
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
Ja eben, dann Pin auf High! Ich hab mir einen Jumper reingemacht... Gruss Chregu
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.
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.
Christian M. schrieb: > Ja eben, dann Pin auf High! Ich hab mir einen Jumper reingemacht... Ich habe das Teil in ein Gehäuse eingebaut, das will ich zum Flashen nicht aufschrauben müssen, denn sonst könnte ich auch gleich den ISP nehmen…
Sebastian W. schrieb: > 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. Ja, das isses wohl…
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.