mikrocontroller.net

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


Autor: Michi (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Benedikt K. (benedikt) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Mut4nt (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ist in dem µC bereits ein Programm enthalten?

Autor: Stephan Henning (stephan-)
Datum:

Bewertung
0 lesenswert
nicht 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,

Autor: Helmut Lenzen (helmi1)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Michi (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Michael W. (retikulum)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Michael W. (retikulum)
Datum:

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

Autor: Helmut Lenzen (helmi1)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Benedikt K. (benedikt) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Michi (Gast)
Datum:

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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.