kleines Problem beim einschalten des µC?

Gast #1301771
Lesenswert?

Hallo,
ich habe ein vermutlich kleines Problem mit meinem Mikrocontroller 
(AT89C51).

Immer wenn ich mein Netzteil einschalte, welches den Controller mit 
Strom versorgt, setzt der Controller alle Ausgänge auf High. Ich habe 
eine Power-On Reset Schaltung davor gehängt aber ich denke nicht dass 
das, das Problem sein wird. Kann mir jemand helfen?? Wäre sehr dankbar.

(Ich vermute mal das dieses Problem Software technisch zu lösen ist, 
wäre also froh wenn jemand einen Programmcode kennt, am besten in ASM)

Gruß Michael
#1301775
Lesenswert?

Michi schrieb:
> Hallo,
> ich habe ein vermutlich kleines Problem mit meinem Mikrocontroller
> (AT89C51).
>
> Immer wenn ich mein Netzteil einschalte, welches den Controller mit
> Strom versorgt, setzt der Controller alle Ausgänge auf High.

Das ist bei den 8051 Controllern nun mal so. Da hilft nur ein anderer 
µC, oder die Signale zu invertieren.
#1301779
Lesenswert?

>Immer wenn ich mein Netzteil einschalte, welches den Controller mit
>Strom versorgt, setzt der Controller alle Ausgänge auf High.

Das ist auch richtig so. Die Ein/Ausgaenge sind nach dem Reset zuerst 
auf Eingang geschaltet. Durch die internen Pullups werden sie dann auf 
'1' gezogen. So richtige Datenrichtungsregister hat der 80C51 ohnehin 
nicht.
Das sind quasi Opendrain Ausgaenge mit internen Pullup. Und nach dem 
Reset sind die erstmal auf '1' gesetzt. Du must halt in der Software die 
entsprechenden Ausgaenge die du auf '0' haben willst auch auf '0' 
setzen.


Gruss Helmi
Gast #1301787
Lesenswert?

Also versteh ich das richtig das ich dem Controller nicht sagen kann das 
er bei einem Reset die ausgänge auf low halten soll? Das Problem ist 
nämlich das ich einen Hubzylinder ansteuere und wenn ich das Gerät 
einschalte sollte sich der Hubzylinder nicht bewegen. Dies tut er aber 
kurz da ja ein kurzes Signal am Ausgang des µC anliegt.
#1301790
Lesenswert?

Michi schrieb:
> Also versteh ich das richtig das ich dem Controller nicht sagen kann das
> er bei einem Reset die ausgänge auf low halten soll? Das Problem ist
> nämlich das ich einen Hubzylinder ansteuere und wenn ich das Gerät
> einschalte sollte sich der Hubzylinder nicht bewegen. Dies tut er aber
> kurz da ja ein kurzes Signal am Ausgang des µC anliegt.

Dann muss ein externer Pull Down Widerstand her.
Michael
#1301801
Lesenswert?

>Dann muss ein externer Pull Down Widerstand her.

Der ist aber wieder problematisch. Der 80C51 kann nur ein paar 100uA 
Strom am Ausgang liefern. Ein Pulldown Widerstand wuerde die 
runterziehen. Besser ist es einen Inverter dazwischen zu schalten und 
den HubZylinder mit einer '0' am Port auszuloesen. Aber diese Probleme 
hat man auch beim AVR . Erst wenn die Software den Pin als Ausgang 
definiert hat stimmt der Pegel. In der Zeit von Reset bis zum Befehl ist 
der Ausgang halt undefiniert. Man mauss halt schaltungstechnisch dafuer 
sorgen das so etwas nicht passiert.
#1301802
Lesenswert?

Michi schrieb:
> Also versteh ich das richtig das ich dem Controller nicht sagen kann das
> er bei einem Reset die ausgänge auf low halten soll?

So ist es.
Daher, wie bereits gesagt: Das Signal invertieren, so dass Low = An 
bedeutet.

Oder was ich früher gerne gemacht habe:
Einen NPN Transistor an einen weiteren Pin, der alle anderen Pins über 
Dioden auf Low zieht. Erst wenn der an der Basis ein Low bekommt, gibt 
er damit die anderen Ausgänge frei.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren