Hallo, habe die Fehler beseitigt und jetzt geht alles wie gewollt, ich bin davon ausgegangen das OCR0A dann automatisch zu "b" wird da der wert "10" ist, habe dem ganzen wohl zuviel Logisches denken zugemutet und den absatz im AVR Buch vollkommen falsch interpretiert ...![]()
Auf dem Ozi kann ich auch schön sehen wie sich das PWM Signal ändert....
Danke für die Tipps
Code:#include <avr/io.h> #define F_CPU 1200000UL // 1,2 MHz #include <util/delay.h> int main (void) { DDRB =(1<<PB0); // Ausgang PB0 TCCR0A=(1<<COM0A1) | (1<<WGM00) | (1<<WGM01); // PWM Phase Korrigieren, OCR0A an TOP setzen TCCR0B=_BV(CS01) ; // Prescaler 8 int a=5; // Min Wert für Lichtstärke int b=255 // Max Wert für Lichtstärke while (1) { OCR0A = a; // Startpunkt mit Min Lichtstärke if (PINB & (1<<PB3)) // Prüfe auf High Signal an PB3 { if (a <255) a++; // Wenn Wahr dann erhöhe in 5s auf den Wert "b" _delay_ms(5); } else // (!(PINB & (1<<PB3))) // Prüfe ob PB3 Low wenn Wahr zurück zu "a" { if (a >10) a--; // Wenn solange der Wert Max gößer als Min dann a-- _delay_ms(5); } } return 0; }







Zitieren

Lesezeichen