Hi,
Ich hab mir deinen Code nicht genauer angesehen, aber Probiers mal mit .include "m8def.inc" statt .include "4433def.inc"
MfG Alex
Hallo, schon wieder mal ein problem ;-(
Ich hab an meinem atmega8 folgendes angeschlossen:
an portB 3 und portb 4 sind leds angeschlossen.
an portD 3 ist ein taster direkt auf Gnd.
dann hab ich folgenden code auf den chip geladen:
jetzt müsste doch wenn ich den taseter drücke die led an portB 3 ausgehen.Code:.include "4433def.inc" ;bzw. 2333def.inc ldi r16, 0xFF out DDRB, r16 ;Port B durch Ausgabe von 0xFF ins ;Richtungsregister DDRB als Ausgang konfigurieren ldi r16, 0x00 out DDRD, r16 ;Port D durch Ausgabe von 0x00 ins ;Richtungsregister DDRD als Eingang konfigurieren loop: in r16, PIND ;an Port D anliegende Werte (Taster) nach r16 ;einlesen out PORTB, r16 ;Inhalt von r16 an Port B ausgeben rjmp loop ;Sprung zu "loop:" -
aber wenn ich sie drücke gehen beide aus, wieso ?
Hi,
Ich hab mir deinen Code nicht genauer angesehen, aber Probiers mal mit .include "m8def.inc" statt .include "4433def.inc"
MfG Alex
ich hab mir eben alles versucht damit das oben genannte doch funktioniert... hat aber wie beschrieben nicht geklappt...
grad, nachdem ich jetzt ne stunde lang die finger davon gelassen hab drück ich den schalter und es geht nur ein licht aus ?!?
dann warte ich wieder nen paar sekunden, hab den taster nen paar mal gedrückt, und dann gehen plötzlich wieder beide aus... versteh ich nicht...
Füge hinter
ldi r16, 0x00
out DDRD, r16 ;Port D durch Ausgabe von 0x00 ins
;Richtungsregister DDRD als Eingang
einmal diese Zeilen ein:
ldi r16, 0xFF
OUT PortD, r16 ; interne Pull-Up-Widerständ einschalten
Was passiert dann?
Gruß, olfi
hallo, habe das ausprobiert,
wie beschriebn funktionierte das auch schon vorher, der unterschied der mir aufgefallen ist:
wenn ich das programm teste dauert es ziemlich lange wenn ich den schalter drücke bis die led ausgeht (ca. 0,5sek) w
wenn ich das ISP kabel abziehe funktioniert is direkt.
wenn ich jetzt deinen code mit einfüge, gibt es garkeine verzögerung mehr, auch wenn das kabel vom ISP angeschlossen ist.
könntest du mir vielleicht erklären wieso das so ist ?
Die Eingänge des Controllers sind hochhohmig, ohne die internen Pull-Up-Widerstände fängst Du dir alle möglichen Störungen ein.
Damit besitzen deine Eingänge dann einen eher zufälligen logischen Pegel.
Ich werde noch nicht ganz schlau aus deinem Text. Jetzt ist alles wie erwartet?
Gruß, olfi
ja, jetzt funktioniert alles wie erwartet. Danke nochmal.
sehe ich das richtig, das ich dadurch ,das ich die als eingänge definierten pins von portb auf high setze, die internen pullup wiederstände aktiviere ?
dadurch habe ich dann einen störungsfreieren portb, und deshalb behebe ich eine eventuell durch störungen bedingte fehlfunktion ?
So ist es.
Gruß, olfi
Lesezeichen