Forum: Mikrocontroller und Digitale Elektronik kleines Problem beim einschalten des µC?


von Michi (Gast)


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

von Benedikt K. (benedikt)


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.

von Mut4nt (Gast)


Lesenswert?

Ist in dem µC bereits ein Programm enthalten?

von Stephan H. (stephan-)


Lesenswert?

das ist völlig korrekt.
Deswegen werden als Steuerelemente meist PNP Transistoren genommen.
Die sind beim Einschalten dann gesperrt.

Also

ORL P1,#00h
ORL P2,#00h

Damit sind P1 und P2 auf Low,

von Helmut L. (helmi1)


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

von Michi (Gast)


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.

von Michael W. (retikulum)


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

von Michael W. (retikulum)


Lesenswert?

Vergiss meine Antwort. Lange nicht mehr mit dem 8051 gemacht.
Michael

von Helmut L. (helmi1)


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.

von Benedikt K. (benedikt)


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.

von Michi (Gast)


Lesenswert?

Alles klar, danke für eure Antworten, dann werde ich dem Hubzylinder 
halt sagen dass er, nach dem Einschalten, wieder einfahren soll.

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.