Всем привет у меня возникла проблема с задержкой! Когда запускаю скрипт на arduino uno все работает замечательно(задержка 1 сек), но если на ATmega16 то задержки становится 4 сек вместо 1сек, на атмегу я отправляю(прошиваю) скрипт через ардуино , мне кажется это из за Bootloader
скорее всего реальная частота тактирования вашего атмега16 в 4 раза ниже того, что вы указываете в программе
У атмеги16 стандартная частата 1мгрц , я в программе довал 1мгрц работал медленно, но когда я довал 8мгрц работало быстрее примерно 20% но все же это далеко от истины =(
простите, вы вообще понимаете, как МК тактируется? мало поменять в программе 1 МГц на 8 - надо еще перепрошить фьюзы в контроллер, иначе несмотря на вашу программу. МК будет продолжать работать на прежней частоте. Для того, чтобы при указании в программе задержки 1 секунда это в реале действительно была секунда - нужно выполнить два условия. 1. Настроить в программе правильную частоту такта 2. Запустить реальное тактирование контроллера от той же частоты, как в программе
А что с fuse bit DIV8? По умолчанию он установлен. Это значит, что тактовая делится на восемь. Поэтому его нужно скинуть. Тоже каждый раз нарываюсь на эти грабли.
И в чем же? Это про прямой текст. Частота меньше, ТС увеличивал тактовую. Что реально стоит во fuse Вы знаете?
По заводу атмега тактируется от внутреннего осциллятора через делитель тактов с коэффициентом 8. Частоту внутреннего осциллятора мы сменить не можем. Можем либо сменить коэффициент деления делителя, либо сменить осциллятор на внешний и установить кварц с необходимой частотой. Игра с осцилляторами происходит только с помощью программирования фьюзов, установить коэффициент деления делителя можно из программы.