Hallo! Ich verwende einen AT90S2313 und habe an alle PortB's LED's und an PortD3 einen Taster angeschlossen. Dann habe ich den Folgenden Quelltext in den AVR geladen. .include "2313def.inc" ldi r16 , 0xFF out DDRB, r16 ldi r16 , 0x00 out DDRD, r16 ldi r16, 0b11111111 out PORTB, r16 schleife: in r16 , PIND out PORTB , r16 rjmp schleife Leider leuchten alle LED's beim Start, obwohl der Taster noch nicht gedrückt war, dabei sollte er die LED anschalten! Woran kann das liegen? Danke, MFG, ################ Florian Wolling# ################
ldi r16, 0b11111111 ;r16 mit 0xFF geladen out PORTB, r16 ; Auf PortB 0xFF ausgeben schleife: in r16 , PIND out PORTB , r16 rjmp schleife siehst du den fehler? ;)
du lädst r16 mit 0b11111111 (0xFF) und gibst es auf PORTB wieder aus, direkt, vor der schleife
wenn du auf PORT B 0b11111111 ausgibst dann sind alle Ports auf Hi Pegel also leuchten alle LED's. du müsstest auf PORT B 0x00 also 0b00000000 ausgeben damit alle Ports auf null sind. Auserdem ist beim AVR glaub wenn du einen Pin als Input deklarierst automatisch der Pullup aktiviert d.h. der Pin ist logisch 1. Dein Taster müsste jetzt also den Pin auf masse zihen damit der Pinzustand 0 wird. Marc
Leuchten deine Led's bei 1 oder bei 0 ich nehme jetzt mal an bei 1. ldi r16, 0b11111111 out PORTB, r16 schleife: in r16 , PIND out PORTB , r16 rjmp schleife Ganz einfach bevor deine schleife anfängt gibst du 11111111 an Port B aus somit leuchten deine leds alle beim start. Die Leds dürften aber sofort wieder ausgehen. Hast du deine Led's so angeschlossen, dass sie bei 0 Leuchten, und deinen Taster so dass wenn er grdrückt ist eine 1 leifert ist es klar, da der Avr immer folgendes programm durchläuft. schleife: Pin D in register 16 laden Register 16 nach Port B ausgeben. Sprung zu "schleife" Du lädst 00000000 in register 16 und gibst es sofort wieder aus, da die led's 0 Aktiv sind leuchten sie. Wenn du deinen Taster dann drückst müsste die Led an B.3 ausgehen. Jochen
Das funktioniert leider trotzdem nicht! Ich habe ldi r16, 0b11111111 out PORTB, r16 in ldi r16, 0b00000000 out PORTB, r16 umgeändert. Wenn ich den Taster betätige, werden die LED's alle etwas dunkler, mehr nicht! MFG, ################ Florian Wolling# ################
wie hast du denn deinen Taster und die LEDs angeschlossen? und ist PortD als input definiert ? das klingt so als würdest du wenn du auf den Taster drückst strom ziehen. Marc
Die LED's sind gegen + geschaltet. Die Taster sind gegen GND geschaltet. Der Quelltext sieht so aus: .include "2313def.inc" ldi r16 , 0xFF out DDRB, r16 ldi r16 , 0x00 out DDRD, r16 ldi r16, 0b00000000 out PORTB, r16 schleife: in r16 , PIND out PORTB , r16 rjmp schleife MFG, ################ Florian Wolling# ################
eigentlich müsste das gehen. wenn die LEDs gegen + gehen dann ist doch 0b11111111 richtig. schwingt dein oszillator ? schon mal anderen AVR probiert? Marc
Ich ahbe jetzt den Fehler gefunden! g Ich habe eine Lötbrücke zwischen GND und den LED's gemacht! g Danke für Eure Hilfe! MFG, ################ Florian Wolling# ################
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.