FreshMan писал(а):vitalik_1984, это фантастика....., но ваш код РАБОТАЕТ......, обясните пожалуйста по подробней почему заработал ваш код ?
Сам не знаю почему ваш не работал, наверно потому что менялось значение сравнения до того как переполнение или еще что.
Еще у меня там какой то другой режим ШИМ не тот что у вас, но скорее из-за первого проблема была.
В даташите написано, что если менять регистр сравнения рядом со старым значением, то прерывание может быть упущено.
FreshMan писал(а):мне нужно реализовать плавную смену цифр...., на газоразрядный индикатор вывожу цифры от 0 до 9,
секунды что ли выводим?
FreshMan писал(а): как правильно построить алгоритм для решения сей задачи ? использую атмега8
у вас ведь есть уже шим на таймере делим секунду на сто,можно и на двести
организуем прерывание на 100Гц.
делим значения таймера на 100.
получается 50 шагов туда и 50 обратно
разность яркости 250 минимум на 5ке
в каждом прерывании прибавляем к 1 счетчику сотых секунд.
отнимаем 5 от значения сравнения если меньше 50 счетчик долей секунд.
если счетчик долей секунд 50 больше то прибавляем 5 к сравнению.
когда счетчик долей секунд 100 прибавляем секунду, если нужно.
Для двухсотенного деления секунды примерно такой же алгоритм.
Все просто и без головной боли.
, алгоритм уже есть или опять мне за вас сделать?