Mahlzeit!
Weiß nicht:
PORTB|= 0xFE;
Besser:
PORTB = 0xFE;
Wie hast du den Taster beschaltet?
Gegen VCC oder GND?
Viel Glück!![]()
Ich bin gerade dabei mein erstes Programm für den Attiny13 in C zu schreiben und habe schon beim einfachen Eingang=Ausgang Programm ein Problem. Die Lampe Leuchtet dauerhaft, es bringt nix den Taster zu drücken. Kann mir jemand sagen was ich falsch gemacht hab ??
Danke schonmal im vorraus
PB0 = LED
PB1 = Taster
Code:#include <avr/io.h> int main (void) { DDRB = 0x01; PORTB|= 0xFE; while(1) { if(!(PINB&(1<<PB1))) { PORTB|=(1<<PB0); } else { PORTB&=~(1<<PB0); } } return 0; }
Mahlzeit!
Weiß nicht:
PORTB|= 0xFE;
Besser:
PORTB = 0xFE;
Wie hast du den Taster beschaltet?
Gegen VCC oder GND?
Viel Glück!![]()
Der Taster zieht auf GND runter.
Ich glaub deine if-Abfrage ist falsch.
Es sollte heißen: if(!(PORTB&(1<<PB1)))
LG
Nothing is impossible, the impossible just takes longer!
Also soweit ich weis werden die zustände immer mit PINx abgefragt. So hab ich es zumindest aus dem Datenblatt und einem Tutorial raus gelesen. Mit der Portabfrage würde ich dann ja nur abfragen ob der Pull-Up eingeschaltet ist.
Ich weiß nicht womit du programmierst, aber im AVR-STudio kannst du auch simulieren. Von da her würde dein Programm passen.
So sollte es klappen
Bei einem Taster solltest du aber auch noch Mechanismen zum Entprellen einbauen.Code:DDRC &= ~(1<<PC3); //Auf Eingang setzen PORTC |= (1<<PC3); //Pullup einschalten if(PINC & (1<<PINC3)) //Abfrage ob PINC3 High ist { } else { //Wird ausgeführt wenn der Taster gedrückt wird }
Lesezeichen