Hallo Leute, ich schreibe gerade einen (universellen) Bootloader, er wird bei mehreren Platinen eingesetzt. JE nach Platine werden die IOs anders benutzt oder gar nicht, wie sind sie am besten zu konfigurieren? Inputs/Outputs?
Nach dem Reset sind alle GPIOs normalerweise als Eingang konfiguriert. Der µC kann zu diesem Zeitpunkt ja noch nicht wissen, ob ein Pin als Eingang oder Ausgang verwendet wird. Spricht was dagegen, die Pins im Bootloader einfach auf Resetzustand zu belassen?
Ich würde sie zunächst so konfigurieren, das sie einfach nur in der Luft hängen (werder Pull Up noch Down) -> bei AVR DDR 0, PORT 0.
Mike schrieb: > JE nach Platine werden die IOs anders benutzt oder gar nicht Da sehe ich nur 2 Möglichkeiten: entweder du lässt sie wie sie sind und verlässt dich drauf, dass das aktuelle Programm das regelt - aber das könnte ein Sicherheitsproblem geben, wenn z.B. der Bootloader erst mal eine Weile auf eine Eingabe wartet und die Ausgänge solange nicht sicher abgeschaltet sind. Oder du versiehst deine Platinen mit einer Kennung und schreibst für jede Version ein Basic Init, dass vorerst mal alles in den sicheren Zustand versetzt. Nicht nur in diesem Fall sondern überhaupt ist es hilfreich, die Peripherie so zu entwerfen, dass sie bei einem Reset von selbst in einem sicheren Zustand bleibt, ohne dass der Prozessor eingreifen muss. Dann stellt sich deine Frage garnicht erst. Gruss Reinhard
Der Bootloader läßt alles, was er nicht selber braucht, im Resetzustand, Und der Anwender hat mit Pullups/Pulldowns dafür zu sorgen, daß die Hardware keinen Unfug macht. Es kann ja noch andere Ursachen geben, daß die CPU in Reset geht (z.B. Watchdog, Brownout). Peter
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.