PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Attiny13 Anfängerproblem



Mad_Maxx
22.12.2010, 22:31
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


#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;
}

Slein
22.12.2010, 22:48
Mahlzeit!

Weiß nicht:
PORTB|= 0xFE;
Besser:
PORTB = 0xFE;

Wie hast du den Taster beschaltet?
Gegen VCC oder GND?

Viel Glück! :)

Mad_Maxx
22.12.2010, 23:15
Der Taster zieht auf GND runter.

XBert
23.12.2010, 22:49
Ich glaub deine if-Abfrage ist falsch.
Es sollte heißen: if(!(PORTB&(1<<PB1)))

LG

Mad_Maxx
24.12.2010, 10:52
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.

Hubert.G
24.12.2010, 12:09
Ich weiß nicht womit du programmierst, aber im AVR-STudio kannst du auch simulieren. Von da her würde dein Programm passen.

shedepe
24.12.2010, 12:13
So sollte es klappen



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
}


Bei einem Taster solltest du aber auch noch Mechanismen zum Entprellen einbauen.