Forum: Mikrocontroller und Digitale Elektronik unkontrolliertes Schalten während Programmierung


von hadua (Gast)


Lesenswert?

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

von Tobias L. (murxwitz)


Lesenswert?

PullDown am Gate vorhanden?

Mit einigen 74er Logic-ICs eine verrigelung Aufbauen, oder einfacher: 
einen 3 zu 8 decoder mit enable eingang verwenden.

von Joachim B. (jar)


Lesenswert?

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

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

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
von Joachim B. (jar)


Lesenswert?

Matthias Sch. schrieb:
> das Reset während der Programmierung aktiv

low ist, sperrt die Signale zum Mos FET

von hadua (Gast)


Lesenswert?

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?

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

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
von hadua (Gast)


Lesenswert?

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?

von Joachim B. (jar)


Lesenswert?

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.

von Julian B. (julinho)


Lesenswert?

Benutze einen Bootloader, dann kannst du andere Pins zum Programmieren 
verwenden.

von Frank K. (fchk)


Lesenswert?

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

von hadua (Gast)


Lesenswert?

Danke für die Zahlreichen Antworten, hat mir sehr geholfen! (:

von Joachim B. (jar)


Lesenswert?

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.

von Peter D. (peda)


Lesenswert?

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