www.mikrocontroller.net

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


Autor: AVR-Anfaenger (Gast)
Datum:

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

Autor: yalu (Gast)
Datum:

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

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.