Gast
#236172
Hallo ich habe gerade erst angefangen mit der AVR programmierung. das board was ich mir gebaut habe funktioniert. die leds gehen und die taster auch. habe ich mit nem Assemblerprogramm getestet. Aber in WinAvr bekomme ich das Tasterproblem nicht in den griff. die wollen einfach nicht gehen. hier zum anfang erstmal das c-programm: #include <avr/io.h> #include <stdio.h> #include <inttypes.h> int main(void) { DDRD = 0xff; //Port wird als ausgang definiert PORTD = 0xff; //Port wird auf High gelegt, leds leuchten nicht DDRC = 0x00; //Port wird eingang PORTC = 0x00; //Port wird low gesetzt und die internen pull ups sind aus if ( (PINC & (1<<PINC2)) ) // Tasterport C , wenn pin 0 auf low geht dann führe was aus { PORTD = 0x00; //lege port d auf low und damit leuchten die leds } return(0); } und hier das assemblerprogramm was einigermassen funktioniert: .include "m8def.inc" ldi r16, 0xFF out DDRD, r16 ;Port B durch Ausgabe von 0xFF ins ;Richtungsregister DDRB als Ausgang konfigurieren ldi r16, 0x00 out DDRC, r16 ;Port D durch Ausgabe von 0x00 ins ;Richtungsregister DDRD als Eingang konfigurieren loop: in r16, PINC ;an Port D anliegende Werte (Taster) nach r16 einlesen out PORTD, r16 ;Inhalt von r16 an Port B ausgeben rjmp loop ;Sprung zu "loop:" -> Endlosschleife Meine Taster sind low aktiv, also wenn ich den drücke geht daer port auf low?? sehe ich das so richtig? Kann mir jemand bitte ein richtiges beispiel programm schicken oder sagen wo mein fehler ist. ach einen habe ich noch: habe auch ein problem mit der delay zeit. wollte mal ne blink led programmieren, aber trotz _delay_(1000) blinkte die led sehr schnell. woran kann das liegen? thx arno