So heikel find ich das mit der Software gar nicht mal.
Wenn es Interrupt-Gesteuert ist, kann ja fast nichts schief gehen.
Selbst wenn das hauptprogramm hängt, die Interruptroutinen funktionieren
normalerweise immer.
Ich hätte mir was so gedacht:
Ein LM311 vergleicht Vsense und Vref, welche weiterhin von den DACs kommt.
Der Ausgang des LM311 wird direkt mit einem Interrupt des Atmels verbunden.
Dies ist die Wichtigste Routine:
Code:
SIGNAL ( SIG_INTERRUPT1 ) {
A( 0, 0); //Brücke A: Alles auf GND
}
Gleiches für Phase B!
Das ist alels was diese Routine machen muss. Lediglich zwei Ausgänge auf GND setzen.
Wenn man das mal programmiert, kann im grunde nichts mehr schief gehen.
Gesetzt wird das ganze dann wieder wenn der Timer, welcher für die
Chopperfrewuenz zuständig ist, wieder einen Interrupt auslöst:
Code:
SIGNAL ( SIG_OUTPUT_COMPARE1A ) {
A_SET(); //Brücke A: Neu setzen
B_SET(); //Brücke B: Neu setzen
Und schon wäre der L6506 ersetzt...
Vorausgesetzt der Atmel ist so schnell. Aber das dürfte normalerweise kein Problem sein.
Oder?
Ich denke, dass es einen Versuch wert ist.
Man spart sich ein exotisches Bauteil. Denn in SMD bekommt man
den L6506 nicht an jeder Ecke.
Lesezeichen