Arduino и ATmega16

Тема в разделе "Arduino & Shields", создана пользователем Abbos, 14 июн 2019.

Метки:
  1. Abbos

    Abbos Нуб

    Всем привет у меня возникла проблема с задержкой!
    Когда запускаю скрипт на arduino uno все работает замечательно(задержка 1 сек), но если на ATmega16 то задержки становится 4 сек вместо 1сек, на атмегу я отправляю(прошиваю) скрипт через ардуино , мне кажется это из за Bootloader
     
  2. b707

    b707 Гуру

    скорее всего реальная частота тактирования вашего атмега16 в 4 раза ниже того, что вы указываете в программе
     
  3. ostrov

    ostrov Гуру

    Откуда тактуется МК?
     
  4. Abbos

    Abbos Нуб

    У атмеги16 стандартная частата 1мгрц , я в программе довал 1мгрц работал медленно, но когда я довал 8мгрц работало быстрее примерно 20% но все же это далеко от истины =(
     
  5. Abbos

    Abbos Нуб

    можете написать более подробнее
     
  6. b707

    b707 Гуру

    простите, вы вообще понимаете, как МК тактируется? мало поменять в программе 1 МГц на 8 - надо еще перепрошить фьюзы в контроллер, иначе несмотря на вашу программу. МК будет продолжать работать на прежней частоте.
    Для того, чтобы при указании в программе задержки 1 секунда это в реале действительно была секунда - нужно выполнить два условия.
    1. Настроить в программе правильную частоту такта
    2. Запустить реальное тактирование контроллера от той же частоты, как в программе
     
    Daniil нравится это.
  7. SergeiL

    SergeiL Оракул Модератор

    А что с fuse bit DIV8?
    По умолчанию он установлен.
    Это значит, что тактовая делится на восемь.
    Поэтому его нужно скинуть.
    Тоже каждый раз нарываюсь на эти грабли. ;)
     
  8. ostrov

    ostrov Гуру

    Разница в х4, дело не в этом. И тут прямым текстом пишут в чем причина, но поциент не видит.
     
    Последнее редактирование: 15 июн 2019
  9. SergeiL

    SergeiL Оракул Модератор

    И в чем же?
    Это про прямой текст. :)
    Частота меньше, ТС увеличивал тактовую.
    Что реально стоит во fuse Вы знаете? ;)
     
  10. parovoZZ

    parovoZZ Гуру

    По заводу атмега тактируется от внутреннего осциллятора через делитель тактов с коэффициентом 8. Частоту внутреннего осциллятора мы сменить не можем. Можем либо сменить коэффициент деления делителя, либо сменить осциллятор на внешний и установить кварц с необходимой частотой. Игра с осцилляторами происходит только с помощью программирования фьюзов, установить коэффициент деления делителя можно из программы.
     
  11. parovoZZ

    parovoZZ Гуру

    Задержки не выполняются в бутлоадере или в программе?
     
  12. parovoZZ

    parovoZZ Гуру

    Какой ещё нафик скрипт???
     
  13. ostrov

    ostrov Гуру

    Где он что увеличивал? Для него это все не слова, а заклинания. И вообще он пропал, ему надоело.