Forum: Mikrocontroller und Digitale Elektronik Watchdogschaltung für TI TMS320DM368


von Vladi B. (polonium4u)


Lesenswert?

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

von Vladi B. (polonium4u)


Lesenswert?

...kann natürlich auch sein, dass ich einfach nicht weiß wonach ich 
genau suchen soll.

von Ralph T. (programinator)


Lesenswert?

Moin,

bin nur mal kurz über das Datenblatt geflogen. Aber was spricht gegen 
den internen Watchdog?

von Vladi B. (polonium4u)


Lesenswert?

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.

von Ralph T. (programinator)


Lesenswert?

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.

von Vladi B. (polonium4u)


Lesenswert?

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
Noch kein Account? Hier anmelden.