ich bin neu im Gebiet der µC-Programmierung. Zur Zeit mache ich meine ersten Gehversuche. Momentan setze ich u.a. einen Raspberry Pi als "Kommandostation" ein, welches über die GPIOs den µC über seine I/Os antriggert. Jedoch werden die GPIOs beim Booten des Raspberry PIs auf 0 gesetzt (wenn ich das gerade richtig im Kopf habe). Dies würde aber beim µC für unkontrollierte Aktionen sorgen. Ist es daher möglich, denn RESET solange auf GND zu ziehen, bis der Raspberry gebootet ist und die GPIOs mit gültigen Werten initialisiert sind? Wenn ja, wie bewerkstellige ich dies am besten (Hardwareseitig)? Der RESET-Pin soll dabei auch RESET bleiben, ich möchte nicht die FUSEbits ändern. Vielen Dank schon einmal im Voraus für Eure Hilfe!
Üblicherweise werden beim Boot die Pins nicht auf "0" gesetzt, sondern auf "input" (also High-Impedance / Tristate). Was der Empfänger sieht, hängt dann eher von Störfeldern in der Umgebung ab. Ob das für den Raspberry genau so gilt, weiß ich aber nicht. Um einen definierten Zustand extern zu erzwingen, nimmt man Pullup- oder Pulldown-Widerstände (ein paar kOhm), die einen nicht getriebenen GPIO passiv auf "high" bzw. "low" ziehen.
Hallo Svenska, kannst du mir dies mit einem kleinen Schaltungbild visuell darstellen?
Ein Pull-Down z.b. hält den Pin auf 0 - Beidseitig.
1 | GPIO Rasp <----------> GPIO µC |
2 | | |
3 | | |
4 | [] 10kOhm |
5 | | |
6 | | |
7 | --- GND |
8 | - |
Auch Null ist ein Zustand und ich kann mir nicht vorstellen, dass dies immer der Richtige ist. Normalerweise ist aber "Reset" der Zustand der auch den Ausgangspunkt beim Einschalten bildet. Das heißt, der µP hat üblicherweise keine Ahnung, wie er dahin gekommen ist. Also war Reset-Pin aktiv, oder hat es einen Stromausfall gegeben, oder hat das ganz normale Einschalten stattgefunden, eventuell war’s auch ein Programmsprung auf die Adresse 0. Natürlich gibt es ein paar Tricks, wie man z.B. durch das setzen einiger Speicherstellen erkennen kann was Sache war. Oder so-schnell-wie-möglich (a.s.a.p) einen definierten Zustand herstellen kann. Dies bedingt aber einen Eingriff in den Start-Code des Systems plus einem sehr tiefen Einblick in das gerade laufende System. Meist Linux. Nicht zu vergessen, man sollte auch die hier angesprochenen Quellen haben und wissen, was man damit anfangen kann...
Hallo Sebastian, ist es denn für den Microcontroller so wichtig, wie er jetzt in diesen Zustand gekommen ist , oder verstehe ich dich gerade falsch? Der µC soll ja einfach nur warten, bzw. nichts tun, bis der Raspberry Pi mit dem Booten fertig ist. 1. Power On 2. RESET auf LOW & Raspberry bootet 3. Raspberry ist gebootet, GPIOs gesetzt 4. RESET auf HIGH 5. Raspberry und µC machen ihre Arbeit
:
Bearbeitet durch User
Sebastian G. schrieb: > ist es denn für den Microcontroller so wichtig, wie er jetzt in diesen > Zustand gekommen ist Das hängt von der Anwendung ab. Viele Mikrocontroller haben z.B. einen Watchdog, der das System automatisch resettet, wenn die Software nicht mehr korrekt arbeitet (d.h. den Watchdog nicht regelmäßig streichelt). Wenn die Software nun startet, kann es wichtig sein, zu wissen, ob das System einfach nur "eingeschaltet" wurde, oder ob es "wegen Absturz neu gestartet" wurde. Für deine einfache Sequenz (halte den Mikrocontroller im Reset, bis der Raspberry läuft) reicht ein Pulldown-Widerstand, wie von DraconiX aufgemalt.
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.