Hallo,
ich weiß absolut nicht mehr weiter.
Seit gestern Versuche ich über einen Mega32 eine LED einzuschalten mithilfe eines Tasters.
Belegung:
Masse -> Taster -> PA1
Masse -> Vorwiderstand -> LED -> PA0
Dazu folgendes Programm:
Die LED leuchtet immer, egal ob ich dne Taster betätigt habe oder nicht. Eigentlich müsste sie doch erstmal aus sein oder?Code:#ifndef MCU // Welcher AVR genutzt wird, wird i.A. im Makefile definiert #define MCU atmega32 #endif #ifndef F_CPU // kann auch im Makefile definiert sein #define F_CPU 16000000UL // Takt als LONG definieren, da zu groß für Integer #endif #include <avr/io.h> // Namen der IO Register #include <util/delay.h> // Funktionen zum warten // Achtung, damit delay richtig funktioniert muß mit Optimierung compiliert werden int main(void){ DDRA |= 0b00000001; //PA0 als Ausgang definieren PORTA &= ~(1<<PA0); //PA0 auf Low schalten (LED aus) PORTA &= ~(1<<PA1); //PA1 auf High setzen while(1){ if(PINA&(1<<PIN1)){ //Wenn Taste gedrückt... PORTA |= (1<<PA0); //... schalte LED ein } } while(1); return 0; }
Hab schon google befragt aber nichts gefunden was mein Problem löst.
MfG
Ezalo
Edit:
Quellcode geändert:
Erklärung was jetzt passiert:Code:int main(void){ DDRA |= 0b00000001; //PA0 als Ausgang definieren PORTA &= ~(1<<PA0); //PA0 auf Low schalten (LED aus) PORTA &= ~(1<<PA1); //PA1 auf High setzen while(1){ if(PINA&(1<<PIN1)){ //Wenn Taste gedrückt... PORTA |= (1<<PA0); //... schalte LED ein } else{ PORTA &= ~(1<<PA0); } } while(1); return 0; }
- LED an
- Wenn Taster mit GND verbundne LED aus > egal ob Taster gedrückt oder nicht... < versteh ich nicht wieso...
- Wenn GND wieder entfernt von Taster und Taster betätigt geht die LED wieder an
- GND von Taster wieder angeschlossen -> LED aus







Zitieren

Lesezeichen