inputs am avr funktionieren nicht richtig!

Gast #60720
Lesenswert?

achtung!!! anfängerfragen!!!

ich habe seit kurzem mit mikrokontrollern angefangen. und habe nun seit
ein paar tagen das stk500. hab natürlich direkt mit rumprobiert. und
jetzt tun sich mir ein paar fragen auf. als erstes hab ich einfach mal
ein kleines prog geschrieben, das bei gedrücktem schalter eine led
aufleuchten lassen soll. der schalter ist an port a0 (at90s8515) und
mit internem pull-up. und wenn ich den schalter auf ground lege
leuchtet die led. hat also funktioniert. und jetzt wollte ich es auch
mal andersrum ausprobieren. hab also den internen pull-up weggelassen
und den schalter auf +5v gelegt. dabei tut sich aber nix. die led
leuchtet nicht. wenn ich aber den portpin nur mit dem finger berühre
geht die led sofort an (und bleibt danach auch manchmal noch kurz an).
wieso ist das so? und warum geht die led nicht an, wenn ich pina0 auf
+5v lege?
Gast #60721
Lesenswert?

Du hast keinen definierten Pegel am Eingang. Wenn Du den Schalter gegen
+5V hast, mußt Du den Portpin mit einem Pull-down Widerstand (1..10kOhm
gegen Masse) beschalten.
Eingänge sind sehr hochohmig, d.h. sie brauchen nur sehr geringe
Stromstärken, um zu reagieren. Deshalb leuchtet die LED bei Berührung
mit dem Finger. Ich würde sogar wetten, daß sie mit 50Hz flackert
(sieht man nur mit einem Oszi), weil der menschl. Körper die 50Hz der
Netzspannung irgendwo auffängt.
Gast #60722
Lesenswert?

ah. du hast recht. so funktionierts. im anhang hab ich das mal
aufgemalt. du hast das doch so gemeint, oder? auf jeden fall klappt es
so. vielen dank für deine hilfe!

kennst du ein gutes programm zum schaltplan zeichnen? mit paint ist das
ein wenig umständlich :-)
Angehängte Dateien:
Gast #60725
Lesenswert?

jep. Der Vollständigkeit halber könntest Du den Taster noch entprellen,
indem Du einen 100nF Kondensator zwischen avr-pin und masse anschließt.
Oder das entprellen in der Software erledigen.
Gast #60726
Lesenswert?

ok, dann hab ich noch ne frage. und zwar wie man den eingang mit nem
transistor schaltet. ich hab nochmal aufgemalt, wie ich mir das
vorgestellt habe. is wahrscheinlich falsch. vielleicht kann mich da mal
jemand korrigieren. die obere zeichnung (interner pullup aktiviert) hab
ich schonmal ausprobiert und hat auch funktioniert. zu der unteren
(kein interner pullup) wollt ich erstmal eure meinung hören. is da denn
auch der pulldownwiderstand (wie beim schalter) notwendig. und wie
sieht es mit der notwendigkeit von R1 aus (für beide schaltungen)? ist
der wirklich nötig oder kann ich den getrost weglassen?

sorry für diese blöden fragen, aber ich fange grade erst mit dem thema
an :)

achja: was genau bedeutet entprellen?
Angehängte Dateien:
Gast #60728
Lesenswert?

das einfachste ist, mit dem internen pullup zu arbeiten. Dann brauchst
du nur noch extern einen npn-Transistor, Kollektor auf den Eingangspin,
Emitter an Masse, an die Basis kommt das Signal. Basiswiderstand nicht
vergessen. Und beachten: diese Anordnung invertiert das Signal, also
H-Pegel an der Basis -> L-Pegel am Portpin. Weitere Widerstände sind
nicht nötig. Sperrt der Transistor, erzeugt der pullup den H-Pegel.
Gast #60729
Lesenswert?

Ein mechanischer Schaltkontakt prellt beim Einschalten, man kann sich
das wie ein federn vorstellen. Dadurch entsteht nicht nur ein, sondern
mehrere Schaltimpulse irgendwo im msec - Bereich. Der Controller ist
schnell genug, die zu zählen, das kann manchmal zu ungewollten Effekten
führen. Deswegen: Entprellen. Suche mal hier im Forum, da gibts
sicherlich noch einige Beiträge dazu, evtl. auch mal in der
Codesammlung reinschauen.
Gast #60730
Lesenswert?

ok. ich habs nochmal aufgemalt. aber wie muss es denn sein, wenn ich den
internen pullup nicht aktiviert habe? gibts bestimmt situationen wo das
nicht geht, oder (interrupt, uart...)? wie muss ich den input dann
beschalten? meine zeichnung ist da sicherlich nicht ganz richtig, oder?
Angehängte Dateien:

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren