Forum: Mikrocontroller und Digitale Elektronik Eingänge und Ausgänge wie beschalten


von AVR-Anfaenger (Gast)


Lesenswert?

Hallo,

auch wenn ich vermutlich gleich gesteinigt werde muss ich es doch 
Fragen.
Ich habe vor Jahren mal ein Controllerboard gebaut mit einem 80C517A 
meine ich mich noch erinnern zu können.
Ich hatte damals an den Ports immer eine Treiberstufe ULN2803.
Ich hatte immer Probleme abgesehen von Ein- und Ausgang mit den Pegeln 
sodas ich an alle Portpins einen 4K7 Pullup gemacht habe.
Ich habe nun einen MEGA128 und habe hier eine Testplatine gebaut bei der 
ich ebenfalls ULN2803 verwende.
Da ich beim 128 ja Pullups schalten kann habe ich auf externe Pullups 
verzichtet und nun wieder das gleiche Phänomen wie damals das die Pegel 
nicht von einer logischen 0 auf eine Logische 1 wechseln sondern ich ein 
flackern der LEB erkennen kann.Kann es sein das es sich empfiehlt trotz 
internen Pullup doch einen externen zu bestücken?
Wenn ein Portpin auf Ausgang definiert ist kann ich ja keinen Pullup 
setzen ist es hier auch ratsam einen Pullup zu bestücken?
Also Ausgangspin per Pullup auf Vcc und dann in Reihe einem Widerstand 
auf die Basis des Transistors.

Der Anfänger

von yalu (Gast)


Lesenswert?

Externe Pullups braucht man an den AVR-Ausgängen nicht, da diese als
Push-Pull aufgebaut sind und damit im Gegensatz zu 8051-Derivaten auch
bei High-Pegel ordentlich Strom liefern.

Wenn's trotzdem nicht funktioniert:

Hast du die betreffenden Portpins auch wirklich durch Setzen der
entsprechenden Bits im DDRx-Register als Ausgang konfiguriert?

Oder hast du in gewohnter 8051-Marnier einfach nur die Bits im
PORTx-Register auf high gesetzt? Dann bleiben die Portpins Eingänge.
Bei als Eingang konfigurierten Portpins wird durch das Setzen der
PORTx-Bits der interne Pullup aktiviert. Durch diesen kann ein
schwacher Strom fließen, der aber den ULN wahrscheinlich nicht voll
durchsteuert. Dies führt zu dem von dir beschriebenen 8051-ähnlichen
Verhalten.

Setze also im DDRx-Register für jeden Portpin, der mit dem ULN
verbunden ist, das entsprechende Bit beim Programmstart auf 1.
Anschließend kannst du über die Bits des PORTx-Registers die
Ausgangspegel bestimmen: 1 ergibt ein niederohmiges High, 0 ein
niederohmiges Low. Dazu wird weder ein interner noch ein externer
Pullup und benötigt. Du brauchst auch keinen zusätzlichen
Basiswiderstand. Der ist im ULN2803 schon eingebaut und so
dimensioniert, dass er für 5V-Pegel passt.

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.