Hallo ihr,
ich brauche Hilfe mit meinem ATMega8. Ich habe Taster an den PORT D
angeschlossen, jedoch zeigt sich keine Reaktion bei den LEDs an PORT B,
die nun teilweise ausgehen sollten. Pullup-Widerstände sind ein, dafür
habe ich bei den Tastern keine externen Widerstände dran gemacht. Könnt
ihr mir helfen?
1
#include<avr/io.h>
2
#ifndef F_CPU
3
#warning "F_CPU war noch nicht definiert, wird nun mit 3686400 definiert"
namenlos schrieb:> ich brauche Hilfe mit meinem ATMega8. Ich habe Taster an den PORT D> angeschlossen, jedoch zeigt sich keine Reaktion bei den LEDs an PORT B,> die nun teilweise ausgehen sollten.
Lass mal deine ganze Delays weg und sorg dafür, dass die LED auch dann
irgendwas machen, wenn der Taster nicht betätigt ist.
namenlos schrieb:> Ich habe leider kein Voltmeter. Ich habe aber die Vermutung, das man den> Prozessor mal irgendwie zurücksetzen müsste, oder so.
Der wird sowieso nach jedem Programmiervorgang 'zurückgesetzt'. Du bist
dir doch sicher, dass deine Programmänderungen es auch in den µC
geschafft haben?
(Wenn du kein Voltmeter hast, dann richte dir wenigstens eine einzelne
LED mit Vorwiderstand als 'Hilfs-Spannung_da-Spannung_nicht_da' Anzeiger
her)
namenlos schrieb:> Danke für den Tip. Habe das mal gemacht und der Strom fließt eigentlich> schon zum Pin.
Vergiss es. Da hab ich mich verrant.
Mit dem Pullup wirst du die LED nicht zum leuchten bringen.
Was ich vor hatte war eigentlich
die led kommt mit einem Ende an Masse und mit dem anderen tippst du den
Pin an. Wenn dort 5V anliegen, dann leuchtet die LED. (und so sollte das
ja auch sein). Drückst du den Taster, dann hört die LDE auf zu leuchten,
weil dann 0V am Pin anliegen.
Aber wie gesagt so funktioniert das nicht, weil der interen Pullup
Widerstand zu hoch ist.
Bleibt nur noch eins: Photo vom Aufbau machen.
Foto geht leider nicht, weil ich gerade keine Kamera dabei habe. Aber um
es nochmal klar zu stellen: Also am Programm liegt es nicht, oder? Und
der Aufbau mit Low Active ist doch prinzipiell auch richtig, nicht?
namenlos schrieb:> Foto geht leider nicht, weil ich gerade keine Kamera dabei habe. Aber um> es nochmal klar zu stellen: Also am Programm liegt es nicht, oder? Und> der Aufbau mit Low Active ist doch prinzipiell auch richtig, nicht?
ABer an irgendwas muss es liegen.
Wenn die Software in Ordnung ist und die Hardware in Ordnung ist, dann
funktioniert das auch. Das es nicht funktioniert, ist der Beweis, das
irgendwas faul ist. Dein Programm kennen wir bereits. Aber die Hardware
nicht.
Und erst mal geht man vom Naheliegenden aus: Da ist irgendwo ein Fehler.
erst wenn sich da nichts finden lässt, rückt die Hypothese dass der µC
defekt ist, in den Sichtbereich. Normalerweise ist er es nicht, sondern
irgendwas anderes ist faul. Das Problem sitzt in mehr als 95% immer vor
dem Monitor :-)
ok, dann werde ich die Hardware so gut beschreiben wie es geht:
An PortB sind die LEDs. An denen liegt es ganz sicher nicht.
An PortD sind die Taster. Auf der andere Seite der Taster läuft ein
Kabel zu GND und eines zu VCC.
Viel gibt's da, nicht mehr zu sagen, oder?
namenlos schrieb:> ok, dann werde ich die Hardware so gut beschreiben wie es geht:
Beschreiben hilft nichts.
Das du im Prinzip weißt, wie es aussehen soll, haben wir schon
mitgekriegt. Die Frage ist: hast du auch das verschaltet, was du glaubst
verschaltet zu haben? Das ist die entscheidende Frage.
> An PortD sind die Taster. Auf der andere Seite der Taster läuft ein> Kabel zu GND und eines zu VCC.
? WOzu Vcc.
VOn den Tastern gibt es keine Verbindung zu Vcc. Die Taster verbinden
den Pin mit GND, wenn der Taster gedrückt ist. Mehr nicht.
namenlos schrieb:> Ein Kabel muss doch Richtung VCC, dachte ich.> http://www.mikrocontroller.net/wikifiles/a/a2/Active_High.gif
Du hast aber active low.
Vcc kommt über den eingeschalteten Pullup Widerstand.
(und jetzt wundert mich auch nicht mehr, das da nichts geht :-)
Also: Umbau
Der Taster verbindet den Pin mit Masse. Nicht mehr.
namenlos schrieb:> Achso. Muss dann noch ein weiterer Widerstand zwischen VCC und Taster> angebracht werden?> Der Taster verbindet den Pin mit Masse. Nicht mehr.
Was verstehst du daran nicht?
namenlos schrieb:> Achso. Muss dann noch ein weiterer Widerstand zwischen VCC und Taster> angebracht werden?
Nein.
Genau deswegen macht man ja beim AVR Avctive-Low. Weil man ausser dem
Taster NICHTS zusätzlich braucht. Der Taster schaltet den Pin nach Masse
durch und mehr braucht man hardwaremässig nicht.
Ja ich meine wenn man sich nichtmal nen 5 Euro Multimeter fürs Basteln
leistet, was soll man da erwarten? Das ist das absolute Minimum. Ohne
Messgeräte sieht man eben auch wenig und lernt wenig.
gruß cyblord
Dann weiß ich wirklich nicht, was ich noch machen könnte. Kann auch
leider kein Foto machen. Ich fürchte, ich bekomme das heute nicht mehr
hin. Ich werde es morgen nochmal probieren. Auch, wenn ich noch nicht
weiter gekommen bin, vielen Dank, dass ihr mir einige Ratschläge gegeben
habt! :-)
Schlaft alle gut! :)
namenlos schrieb:> Dann weiß ich wirklich nicht, was ich noch machen könnte. Kann auch> leider kein Foto machen. Ich fürchte, ich bekomme das heute nicht mehr> hin.
Ah geh, das ist doch in 0 komma nix umgebaut!
Alternativ kann man natürlich noch das Programm an deine Schaltung
anpassen. Aber im Grunde ist das nicht sinnvoll, weil man normalerweise
Taster eben nicht so anschliesst wie du das gemacht hast.
Aber um dir ein Erfolgserlebnis zu verpassen:
namenlos schrieb:> Jetzt funktioniert es, ohne, dass ich einen Taster drücke. Seltsam.
Dann sind deine LEDs auch anders rum angeschlossen wie im Tutorial. Dann
drehst du halt eben beispielsweise die Abfrage um: