Используя 0, 1, 0
для WGM02, WGM01, WGM00
, вы включили CT C (Сброс таймера в режиме сравнения совпадений) - регистр TCNT0
будет очищен после достижения значения OCR0A
, так что значение OCR0B
никогда не будет достигнуто, если оно выше OCR0A
.
Обновлено, чтобы ответить на вопросы в комментарии:
Да, возможно отключить очистку TCNT0. Просто установите биты WGM0x на 0. См. Таблицу Описание режима генерации сигнала Бит в конце описания TCCR0A.
Нет, верхнее значение для регистра TCNT0 - OCR0A или фиксированный 0xFF, см. ту же таблицу.
Из вашего вопроса не ясно, что вы хотите сделать. Возможно, можно поместить большее значение в OCR0A, а меньшее - в OCR0B и установить флаг, который говорит, какое прерывание должно изменить бит порта.
Если вы хотите создать две независимые частоты, установите таймер в автономный режим. режим (все биты WGM равны 0) и попробуйте
ISR (TIMER0_COMPB_vect)
{
PORTB ^= (1 << PORTB2);
OCR0A += 125;
}
ISR (TIMER0_COMPA_vect)
{
PORTB ^= (1 << PORTB1);
OCR0B += 250;
}