PullUp auf PortB?
Hallo. Ich versuche zur Zeit meine ersten Versuche der C Programmierung. Ich nutze die Programmiersoftware AVR Studio5 und das Testboard von AVR (STK500). Per Software PWM habe ich es bereits geschafft eine LED zu dimmen. Nun möchte ich über einen Taster die Helligkeit auf einen bestimmten Wert einstellen. Das funktioniert leider nicht. Es funktioniert soweit alles außer die Tasterabfrage (die erste "if Schleife"). Kann mir bitte Jemand sagen wo das Problem liegt? Danke Gruß Daniel
#include <avr/io.h>
#define F_CPU 16000000UL // Systemtakt in Hz
int main( void )
{
uint8_t pwm_soll=70; //Dort stelle ich die Helligkeit der LED ein
uint8_t pwm_phase=0;
DDRA=0b11111111; //PortA Ausgänge
DDRB=0b00000000; //PORTB Eingänge
if (PINB==0b11111110) //Wenn der Taster am PINB0 gedrückt wird, ändere ich PWM soll auf 50
{
pwm_soll=50;
}
while (1)
{
if(pwm_soll==pwm_phase)
{
PORTA|= (1<<PB0);
PORTA|= (1<<PB1);
}
pwm_phase++;
if (pwm_phase==100)
{
pwm_phase=0;
PORTA&=~(1<<PB0);
PORTA&=~(1<<PB1);
}
}
return 0;
}
PullUp auf PortB?
Tastenabfrage nicht in der while()-Schleife?
Kein Code-Tag verwendet?
Gruß
mic
Bild hier
Atmel’s products are not intended, authorized, or warranted for use
as components in applications intended to support or sustain life!
Hab ich auch gerade gedacht. Würde die Abfrage eher so formulieren :
Des WeiterenCode:if ( PINB & (1<<PBX ) ) { was machen }
ist zwar funktional richtig, aber formal nicht sauber. Besser so schreiben :Code:PORTA|= (1<<PB0); PORTA|= (1<<PB1);
Code:PORTA|= (1<<PA0); PORTA|= (1<<PA1);
Grüße,
Daniel
Super Danke. Jetzt funktioniert es
Lesezeichen