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
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.
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,
>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
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.
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
>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.
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.