Свежие обсуждения
Микроконтроллеры

Как программно уменьшить частоту в 10 или 12 раз?

1 2

А у вас не получается, я думаю, по простой причине. После 255 всегда следует 0. А как известно, 0 на что не дели, будет 0 и 0 в остатке. Т. е. выполняется ваше условие if, и бит инвертируется не там, где вы этого ждете.
Если вы делите на 10, то после целого деления 250/10 без остатка, следует 251...252...253...254...255, а потом снова остаток 0 по вышеописанной причине. Т. е вместо 10 пропущенных прерываний у вас получается только 5. Вот импульс и укорачивается.
Digital: Попробовал, если t%10, ограничивать t от 0 до 250 - помогает, но для 12 уже - нет. Вот ерунда-то.
Да не ерунда! Так и должно быть! Вот только не 250 - ю надо ограничивать, а 249.
В общем случае надо ограничивать t таким числом N, при котором (N+1) делится без остатка на тот коэффициент деления, который вы хотите иметь.

Это все чисто теоретически, конечно. Выполнять деление на АВРках или ПИКах - та еще экономия! chav1961, как всегда прав.