|
@@ -11,19 +11,11 @@
|
|
|
|
|
|
uint8_t timer02_pwm0 = 0;
|
|
|
|
|
|
+
|
|
|
void timer02_set_pwm0(uint8_t pwm0)
|
|
|
{
|
|
|
- if (timer02_pwm0 == pwm0) return;
|
|
|
- if (pwm0)
|
|
|
- {
|
|
|
- TCCR0A |= (2 << COM0B0);
|
|
|
- OCR0B = pwm0 - 1;
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
- TCCR0A &= ~(2 << COM0B0);
|
|
|
- OCR0B = 0;
|
|
|
- }
|
|
|
+ TCCR0A |= (2 << COM0B0);
|
|
|
+ OCR0B = (uint16_t)OCR0A * pwm0 / 255;
|
|
|
timer02_pwm0 = pwm0;
|
|
|
}
|
|
|
|
|
@@ -39,13 +31,12 @@ void timer02_init(void)
|
|
|
TIMSK0 &= ~(1<<OCIE0B);
|
|
|
|
|
|
TCCR0A = 0x00;
|
|
|
- TCCR0B = (1 << CS00);
|
|
|
-
|
|
|
- TCCR0A |= (3 << WGM00);
|
|
|
-
|
|
|
- OCR0B = 0;
|
|
|
-
|
|
|
- TCCR0A &= ~(2 << COM0B0);
|
|
|
+ OCR0A = 200;
|
|
|
+ OCR0B = 0;
|
|
|
+
|
|
|
+ TCCR0A |= (1 << WGM00);
|
|
|
+ TCCR0B = (1 << CS00) | (1 << WGM02);
|
|
|
+ TCCR0A |= (2 << COM0B0);
|
|
|
|
|
|
TCCR2A = 0x00;
|
|
|
TCCR2B = (4 << CS20);
|