Hallo! Ich habe das AVR-Starterboard aus dem Shop. (LED an C5, Button an D2). Bei Versuch das Avr-Tutorial auf dieser Seite nachzuvollziehen habe ich ein Problem: Die vorgestellten Codes zum Thema Button gehen bei mir gar nicht (keine Veränderung). Hier mein Versuch: .include "m8def.inc" ldi r16, 0xFF ; C wird Ausgang out DDRC, r16 ldi r16, 0x00 ; D wird Eingang out DDRD, r16 ldi r16, 0xFF ;Pullup-Widerstand für D out PORTD, r16 ende: NOP NOP in r16, PIND ; D lesen ldi r17, 0x00 cp r16,r17 ;D==0? brne notpressed ldi r16,0xFF ;Nein: LED aus rjmp schalten notpressed: ldi r16,0x00 ;Ja: Lampe an rjmp schalten schalten: out PORTC, r16 ;Wert setzen rjmp ende Die LED leuchtet immer, soll ausgehen wenn Knopf gedrückt wird. Das klappt gaaaanz selten mal. Entprellen sollte hier ja keine Rolle spielen da es um Knopf gedrückt halten geht?! Hat jemand ne Idee was ich falsch machen? Danke im Voraus!
Wenn du an PortD alle Pins auf Eingang hast und alle internen Pullups an: Welches ist dein Ruhezustand, also der Wert beim Einlesen von PIND? 0xFF Und wenn du einen Pin per Taster auf 0 ziehst z.B. PD0? Wie sieht dann PIND aus? 0xFE. Und wpmit vergleichst du den eingelesenen Wert? > ldi r17, 0x00 > cp r16,r17 ;D==0? > brne notpressed Mit 0x00, d.h. dem Fall wenn alle Pins an PortD gegen 0 getastet sind. Du musst dich auf den einen Pin konzentrieren an dem dein Taster hängt! Wie das geht steht im Artikel http://www.mikrocontroller.net/articles/AVR-Tutorial:_IO-Grundlagen#Zugriff_auf_einzelne_Bits
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.