Archiv verlassen und diese Seite im Standarddesign anzeigen : Attiny13 Anfängerproblem
Mad_Maxx
22.12.2010, 23: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;
}
Mahlzeit!
Weiß nicht:
PORTB|= 0xFE;
Besser:
PORTB = 0xFE;
Wie hast du den Taster beschaltet?
Gegen VCC oder GND?
Viel Glück! :)
Mad_Maxx
23.12.2010, 00:15
Der Taster zieht auf GND runter.
Ich glaub deine if-Abfrage ist falsch.
Es sollte heißen: if(!(PORTB&(1<<PB1)))
LG
Mad_Maxx
24.12.2010, 11: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, 13:09
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
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.
Powered by vBulletin® Version 4.2.5 Copyright ©2024 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.