Hallo, An meinem Atmega644 sind 8 n-Mosfets angeschlossen (PortC -> Gate n-Mosfet), welche jeweils rund 500mA schalten sollen. Es darf Aufgrund einer Hardwarevorgabe jedoch zu jeder Zeit nur einer dieser Ausgänge aktiv sein. Gibt es eine einfache Möglichkeit zu verhindern, dass während der Programmierung die Pins unkontrolliert meine Mosfets schalten. (Jumper kommen nicht in Frage) Wäre für jeden Tipp dankbar. lg
PullDown am Gate vorhanden? Mit einigen 74er Logic-ICs eine verrigelung Aufbauen, oder einfacher: einen 3 zu 8 decoder mit enable eingang verwenden.
hadua schrieb: > Es darf Aufgrund einer Hardwarevorgabe jedoch zu jeder Zeit nur einer > dieser Ausgänge aktiv sein. > > Gibt es eine einfache Möglichkeit zu verhindern, dass während der > Programmierung die Pins unkontrolliert meine Mosfets schalten. mit einer Verriegelungslogik ist das doch leicht, wenn einer aktiv ist werden weitere gesperrt. -> 74HC**** -> GAL entsprechend programmiert
Du könntest ausnutzen, das Reset während der Programmierung aktiv ist und solange per Treiberbaustein die MOSFet abkoppeln. Das kann im einfachsten Fall ein '244 sein.
:
Bearbeitet durch User
Matthias Sch. schrieb: > das Reset während der Programmierung aktiv low ist, sperrt die Signale zum Mos FET
Tobias L. schrieb: > PullDown am Gate vorhanden? > > Mit einigen 74er Logic-ICs eine verrigelung Aufbauen, oder einfacher: > einen 3 zu 8 decoder mit enable eingang verwenden. Pulldown vorhanden. Gibt es auch einen einzelnen IC der die Verriegelung kann die ich möchte, habe wenig platz und einfach ist immer gut (: Beim encoder besteht das Problem ja weiterhin, denn der enable Eingang wird ja auch vom uC beschalten. Matthias Sch. schrieb: > Du könntest ausnutzen, das Reset während der Programmierung aktiv ist > und solange per Treiberbaustein die MOSFet abkoppeln. Das kann im > einfachsten Fall ein '244 sein. Dachte ich zuerst auch, aber nimm ich mir mit diesem Ansatz nicht die Möglichkeit zu debuggen?
Joachim B. schrieb: > Matthias Sch. schrieb: >> das Reset während der Programmierung aktiv > > low ist, sperrt die Signale zum Mos FET Ja, Reset ist aktiv, wenn es low ist, gut erkannt. hadua schrieb: > Dachte ich zuerst auch, aber nimm ich mir mit diesem Ansatz nicht die > Möglichkeit zu debuggen? Keine Ahnung, ich musste meine Programme bisher nicht auf der Zielhardware debuggen. Wenn das aber wichtig ist, würde ich PortC sowieso nur mit Vorsicht oder für LEDs oder so benutzen, denn da hängt nun mal auch JTAG drauf. Meine MOSFet Treiber koppele ich meistens sowieso über HC244 o.ä. an den MC, erstens schützt das den MC im Falle einer detonierenden Endstufe und zweitens ist das Sperren aller Treiber so recht einfach.
:
Bearbeitet durch User
Matthias Sch. schrieb: > Keine Ahnung, ich musste meine Programme bisher nicht auf der > Zielhardware debuggen. > Wenn das aber wichtig ist, würde ich PortC sowieso nur mit Vorsicht oder > für LEDs oder so benutzen, denn da hängt nun mal auch JTAG drauf. > Meine MOSFet Treiber koppele ich meistens sowieso über HC244 o.ä. an den > MC, erstens schützt das den MC im Falle einer detonierenden Endstufe und > zweitens ist das Sperren aller Treiber so recht einfach. Ist nicht sehr wichtig, aber nice to have wenn möglich. Hmmm, gute Frage, ist es generell möglich einen der Pins zu verwenden während man debugged? Hast du dabei ebenfalls Reset als zum Enablen benutzt?
hadua schrieb: > Gibt es auch einen einzelnen IC der die Verriegelung kann die ich > möchte, habe wenig platz und einfach ist immer gut (: 74HC244 wurde ja genannt, 8 Treiber die zugleich disabelt werden können, danach noch ein SIL Array aus 8 Widerstände als pulldown um die MOSFETS unten zu halten.
Benutze einen Bootloader, dann kannst du andere Pins zum Programmieren verwenden.
hadua schrieb: > Tobias L. schrieb: >> PullDown am Gate vorhanden? >> >> Mit einigen 74er Logic-ICs eine verrigelung Aufbauen, oder einfacher: >> einen 3 zu 8 decoder mit enable eingang verwenden. > > Pulldown vorhanden. > > Gibt es auch einen einzelnen IC der die Verriegelung kann die ich > möchte, habe wenig platz und einfach ist immer gut (: > > Beim encoder besteht das Problem ja weiterhin, denn der enable Eingang > wird ja auch vom uC beschalten. 74hc138. Pin 6 (GC) an !Reset Pin 5 (!GB) an einen Portpin mit ext. Pullup Pin 4 (!GA) an Ground Pin 3..1 an Portpins - hier wird der zu schaltende Ausgang ausgewählt. Wichtig dabei: Im und nach dem Reset sind alle IO-Pins hochohmig bzw Eingänge. Der Pullup verhindert die unkontrollierte Aktivierung. Später, wenn die Ports initialisiert werden, wird zuerst das Bit in PORTC auf 1 gesetzt, dann das Bit in DDRC. Dadurch wird der Pin zum Ausgang und treibt dann den Pin aktiv auf 1, und zwar ohne Glitch bei der Initialisierung). Der Decoder verhindert außerdem, dass mehr als ein Ausgang gleichzeitig aktiv wird. Achtung: Die Ausgänge des HC138 sind low-aktiv, daher Beschaltung entsprechend anpassen. fchk
Danke für die Zahlreichen Antworten, hat mir sehr geholfen! (:
hadua schrieb: > Es darf Aufgrund einer Hardwarevorgabe jedoch zu jeder Zeit nur einer > dieser Ausgänge aktiv sein. Frank K. schrieb: > 74hc138. Mist, ich wusste doch warum 244 keine tolle Idee ist, wieso 8 Ports vergeuden wenn eh nur einer aktiv sein darf? (ich dachte kurz mal an den 138 habe es aber schnell wieder vergessen, ist lange her das ich den nutze) der 74HC138 macht das automatisch und disabelt kann er auch werden, nur das er low aktiv ist stört etwas, er benötigt noch 8 Inverter gefunden 74HC540 kann auch disabelt werden, aber ich würde disable am 138 machen, den 540 immer enabelt lassen uns wie gesagt am Ausgang kann ein zusätzlicher pulldown nicht schaden.
hadua schrieb: > Gibt es eine einfache Möglichkeit zu verhindern, dass während der > Programmierung die Pins unkontrolliert meine Mosfets schalten. Pulldowns, da die Pins beim ISP floaten. Und JTAG-Fuse abschalten.
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.