Hallo,
ich wollte mit meinem Mega32 eine LED mit der Pulsweitenmodulation dimmen. Dazu habe ich folgenden Code verwendet:
Dies funktionierte auch einwandfrei.Code:int main(void) { uint16_t hell = 500; PORTD = 0x00; //PORTD alle Pins low DDRD = 0x30; //PORTD Pin 4 und 5 als Ausgang TCCR1A = (1<<WGM10) | (1<<WGM11) |(1<<COM1A1); //10 Bit Phase Correct PWM, max Wert 0x03FF TCCR1B = (1<<CS10) | (1<<CS11); //Takt = CPU-Takt/8 OCR1A = hell; //Vergleichswert }
Nur will ich den Helligkeitswert per Taster verändern. Dazu habe ich den Code um folgendes erweitert:
Das Problem ist nur, dass ich zwar den Wert ändern kann, jedoch die PWM an sich nicht mehr funktioniert.Code:while(1){ DDRB = 0x00; //Port B alle Pins Eingang if ((PINB & (0x10))==0) //Wenn Taster 1 gedrück (Pin 2 auf low) { if (hell < 0x03F6) { hell = hell +10; //Erhöhe Helligkeit um 10 _delay_ms(1); //Verzögerung } } if ((PINB & (0x20))==0) //Wenn Taster 2 gedrück (Pin 3 auf low) { if (hell > 0x0009) { hell= hell -10; //Verringere Helligkeit um 10 _delay_ms(1); //Verzögerung } } //PWM-Code }
Mache ich irgendetwas falsch?
Chris







Zitieren


Lesezeichen