Hallo Leute, erstmal vielen Dank an alle Forenmitglieder. Zwar habe ich mich jetzt gerade angemeldet, aber ich nutze das Forum seit Jahren immer wieder und habe zahlreiche Probleme schon dank der Beiträge hier lösen können. Ich stehe gerade ein wenig auf dem Schlauch. Folgendes Problem: Ich baue eine Kamera in deren Kern der TMS320DM368 von TI arbeitet. Da es sich um eine sicherheitsrelevante Anwendung handelt, möchte ich einen externen Watchdog einbauen, der den Prozessor überwacht. Soweit so gut, Watchdogs habe ich schon verwendet und habe z.B. mit dem MAX6749 gute Erfahrungen. Allerdings nur bei eher einfachen Mikrocontrollern wie ATmega oder AT90CAN. Auf dem Ding jetzt läuft ein Linux, welches eine bestimmte Zeit zum booten braucht. Gehen wir hier mal von 15 Sekunden aus. Der Watchdog ist aber nur sinnvoll einsetzbar, wenn er z.B. jede Sekunde ein Signal haben möchte. Wir brauchen also eine Einschaltverzögerung. Kein Problem: Einfach ein Paar Transistoren und ein Verzögerungsglied, schon haben wir den Watchdog erst in Betrieb wenn Linux gebootet hat. Was passiert aber bei einem Reset? Beim Reset bleiben die Versorgungsspannungen bestehen, und lediglich der DM368 bootet neu. Das dauert wieder 15 Sekunden. Der Kondensator in meinem Verzögerungsglied wird in dieser Zeit aber nicht entladen, weil ja die Versorgungsspannung noch da ist. Die Verzögerung ist somit bei einem Reset nicht vorhanden, bzw. deutlich kürzer. Lösungsansatz ist folgender: Wir nehmen zwei Transistoren und schalten sie über die Reset Leitung so, dass der Eine beim Reset den Kondensator von der Versorgung trennt, und der andere ihn über einen Widerstand nach GND schatet. Danach schließen wir den Kondensator wieder an und haben auch nach einem Reset 15 Sekunden Verzögerung. Ich habe sehr sehr wenig Platz auf meiner Platine. Die oben beschriebene Schaltung ist zu groß. Außerdem erhöht sich das Ausfallrisiko durch viele zusätzliche Teile. Ich habe mich kaputtgesucht und finde einfach keinen Watchdog, der die Funktionalität die ich brauche von Haus aus mitbringt. Dabei kann ich mir einfach nicht vorstellen dass ich der erste Mensch mit diesem Problem bin. Gut, bei einem kleinen Controller mag das nicht von Belangen sein, und bei einem Großen kann man den WD ja auch über einen Controller-Pin per Software einschalten und ausschalten. Das ist von der Philosophie her aber ein falscher Ansatz. Hat vllt einer von euch eine Idee oder kann einen Chip empfehlen? Gruß Vladi
...kann natürlich auch sein, dass ich einfach nicht weiß wonach ich genau suchen soll.
Moin, bin nur mal kurz über das Datenblatt geflogen. Aber was spricht gegen den internen Watchdog?
Hallo Ralph, Es stimmt, der hat einen internen Watchdog. Ich fühle mich aber besser, wenn der Prozessor von einer Baugruppe überwacht wird, die physikalisch getrennt ist. Man muss hier auch Software und Hardware trennen. Wenn der Softwareentwickler den inernen Watchdog verwenden möchte, soll er das tun. Wer weiß, wie so ein Reset dann aussieht, und wo alles Ströme fließen usw., welche Chipteile richtig ausgemacht werden und welche nicht. Wenn der Chip aber z.B. einen Latch-Up o.Ä. hat, muss er zügig stromlos gemacht werden, sonst ist Hopfen und Malz verloren. Das geht am effektivsten mit einem externen Bauteil, welches dann einfach die Chipversorgung kappt. ...gerade auf ein Bauteil gestoßen, das genau das macht was ich brauche: der TPS3808 von TI. Allerdings ist die maximal einstellbare Verzögerung hier 10s. Auch bei allen anderen Watchdogs die da angeboten werden. Ich brauche aber mindestens 15.
Moin, ich verstehe deine Abneigung gegen einen internen Watchdog. Aber selbst wenn du einen externen benutzt, hast du keine 100%ige Sicherheit. Grundsätzlich ist es möglich, dass deine Applikation abstürzt, die Timerroutine den Watchtdog aber fleißig bedient. Würdest du den MAX6749 verwenden, kannst du doch während der Bootphase des OS den Watchdog über die Pins SET0/1 deaktivieren. Dazu brauchst du keine Transistoren, nur Widerstände und zwei Portpins, die später dein Ratio einstellen.
Hallo Ralph, ja, an sowas dachte ich auch schon. Allerdings wären wir da wieder an einem Punkt, wo der Controller den Watchdog direkt beeinflussen kann. Es sollte aber dabei bleiben, dass das einzige Signal was vom Controller zum Watchdog übertragen wird, das Triggern ist. Ich denke ich werde zunächst einen TI Watchdog mit 10s Delay nehmen und versuchen die Bootphase so weit zu optimieren dass ich unter 10 Sekunden bleibe. In den Datenblättern der WDs von TI steht zusätzlich oft, dass der Delay nur von der Kapazität des angeschlossenen Kondensators abhängt. Ich werde das mal auf einem Breadboard aufbauen und schauen ob ich vllt. über 10s komme. Man müsste sich hier aber auch einen fetten Low-Leakage Kondensator suchen, was auch ein Problem sein dürfte da wir hier von einer Größenordnung von 500 Mikrofarad sprechen. Danke soweit für die Anregungen.
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.