
Zitat von
Sternthaler
Für wie lange sind denn die einzelnen Bits in PIND gesetzt?
Kann es sein, dass deine Schleife so schnell ist, dass du den pwm-Val-Wert innerhalb kürzester Zeit mehrfach hochzählt und somit den Wertebereich wie von SprinterSB schon angekündigt überschreitest?
Das kann nicht nur so sein, das ist auf jeden Fall so.
Du wirst den Taster niemals so kurz betätigen können, dass die if-Abfrage nur einmal ausgeführt wird.
Zur Lösung des Problems könntest Du in der if-Abfrage solange warten, bis der Taster wieder losgelassen wurde:
Code:
if(PIND & (1<<2)) {
pwm_val+=10;
OCR1A = pwm_val;
while (PIND & (1 << 2))
; //do nothing
}
Lesezeichen