Почему скорость AT328P на 8 Мгц ниже, чем на 1 МГц?(Решено)

Тема в разделе "Микроконтроллеры AVR", создана пользователем cofessor, 21 фев 2019.

Статус темы:
Закрыта.
  1. cofessor

    cofessor Нерд

    Не могу настроить плату на чипе AT328P на работу от 8 МГц в среде Arduino IDE. Поддержку AVR брал здесь:
    https://raw.githubusercontent.com/sleemanj/optiboot/master/dists/package...
    Прошиваю с помощью usbasp. На скорости 1 МГц всё соответствует, на 8 МГц же работает раз в 10 медленней, а на 16-ти - ещё раза в 2 медленнее.
    2019-02-21_12-25-53.jpg
     
  2. У вас на плате какой генератор частоты стоит? В этом пункте нужно выставить то, что у вас физически стоит на плате, а не что попало.
     
    Последнее редактирование: 21 фев 2019
  3. cofessor

    cofessor Нерд

    Я пробовал и с кварцем и без.
    При загрузке платы на которой стоит кварц на 16 МГц выбирал соответствующую частоту в меню "Инструменты" - 16 MHz Crystal/Resonator, она заработала, но страшно медленно.
    В других 2-х платах использую внутренние осцилляторы. Пробовал их загружать выбирая в Arduino IDE 1 MHz и 8 MHz. После прошивки на частоте 1 MHz светодиод с задержками delay (1000) мигал с соответствующей скоростью, а при прошивке на 8 MHz - раз в 10 медленней.

    Пробовал считывать фьюз-байты после прошивки на частоте 1 и 8 мгц:

    C:\Program Files\Arduino\hardware\tools\avr\bin>avrdude -C avrdude.conf -c usbasp -p m328p -P com1 -b 9600 -U lfuse:r:-:h
    avrdude: warning: cannot set sck period. please check for usbasp firmware update.
    avrdude: AVR device initialized and ready to accept instructions
    Reading | ################################################## | 100% 0.03s
    avrdude: Device signature = 0x1e950f (probably m328p)
    avrdude: reading lfuse memory:
    Reading | ################################################## | 100% 0.02s
    avrdude: writing output file "<stdout>"
    0x62
    avrdude: safemode: Fuses OK (E:FF, H:D9, L:62)
    avrdude done. Thank you.

    В общем, Fuses после прошивки что на 1 мгц, что на 8, не отличаются, однако реальная скорость изменяется.
    Я полагал, скорость изменяет бит CKDIV8, включая/выключая делитель на 8, однако бит как был, так и остаётся в нуле, а реальная скорость изменяется.
     
  4. Значит вам надо самому ставить фьюзы. Эта опция меню корректирует функции, вроде miliis, которые отталкиваются от генератора частоты, чтобы высчитать реальное время. Соответственно, если вы выставили неправильно, то всё, где завязаны задержки в реальном времени, работает неправильно.
     
    cofessor нравится это.
  5. Airbus

    Airbus Радиохулиган Модератор

    Конечно ниже в 8 раз медленее.Кварц же на 1 мгц.Если делитель на 8 фьюзами поставить ЕМНИП CKDIV тоеще медленнее будет работать ясен пень
     
  6. parovoZZ

    parovoZZ Гуру

    к чему весь этот ананизм с фьюзами? Скорость работы МК задается делителем частоты. Делитель прекрасно настраивается из программы для любого источника тактирования
    http://forum.amperka.ru/threads/Суперэкономичный-беспроводной-монитор-Т-и-rh.17221/#post-199713
     
    cofessor нравится это.
  7. Ariadna-on-Line

    Ariadna-on-Line Гуру

    От той частоты проца, что задали в скетче, Ардуино IDE расчитывает коэффициенты пропорциональности (те делители тактовой частоты) для временнЫх функций. Больше Числитель (Частота проца) - больше знаменатель (коэффициент). Если физическая частота проца постоянна, то "знаменатели" ессно тормозят вашу прогу тем сильней, чем больше была задана скорость проца в исходнике. Изменить физическую частоту процессора Ардуино ИДЕ не может.
    ПС. То что кварц стоит на плате, не значит, что проц ОТ НЕГО работает. Проверить элементарно. Прикоснитесь к выводам кварца (внимание - статика ! Я предупредил.). Он должен остановиться. Если плата продолжит работу, значит она тактируется не от него.
    ППС. Если бит CKDIV8=0, - делитель частоты F/8 включен.
     
    Последнее редактирование: 21 фев 2019
    cofessor и Airbus нравится это.
  8. cofessor

    cofessor Нерд

    Да, я это проверил. Временные задержки наверное повсюду (в библиотеках), поэтому расстроится всё - на экране будет ералаш.
    Задавал команду записи бита CKDIV8 после прошивки платы на частоте 1 МГц. Считал - бит прописался, на экране всё замелькало. Затем выбрал в Arduino IDE частоту 8 Мгц и записал скетч снова - на экране стало всё чётко и временные интервалы стали правильными.
    Но это не снимает вопроса, почему фьюзы для платформы AVR не меняются из меню, а в родных платах прошиваются нормально? Для родных плат нужные настройки содержатся в файле boards.txt, а вот где находится соответствующий файл для добавочной платформы AVR...? Вроде он есть, видел раньше, а вот где и почему эти настройки не срабатывают?
     
  9. parovoZZ

    parovoZZ Гуру

    абдурина для таких тонкостей не предназначена. Да и те, кто пользуется услугами абдурины, так глубоко не роют.
     
  10. Airbus

    Airbus Радиохулиган Модератор

    Так а в чем вопрос?Как сэкономить на кварце?
     
  11. parovoZZ

    parovoZZ Гуру

    а зачем он, если есть 8 МГц на борту?
     
  12. Airbus

    Airbus Радиохулиган Модератор

    А точность его?В моем случае при использовании UART?Дыхнул на микру и полезли кракозяблы вместо букаф.Стоит ли экономия?Да и библиотеки без которых не могут жить Ардуинщики на 8 мГц преподносят сюрпризы.
    Я даже голые Мк с кварцем юзаю с любым какой нашел.Без кварца только поблинкать можно.
     
    Ariadna-on-Line нравится это.
  13. Airbus

    Airbus Радиохулиган Модератор

    И не надо их трогать.Иначе придется HVпрограмматор покупать.Я вообще не понимаю нахрена они нужны?К примеру вот SPIEN?
     
  14. parovoZZ

    parovoZZ Гуру

    МК создаются не для любителей.

    Да, здесь надо оговориться - если используете асинхронный интерфейс, то нужен кварц. Либо же совсем низкие скорости.

    поэтому абсолютно все промышленные датчики вместе с данными шлют сумму CRC.
     
  15. DetSimen

    DetSimen Guest

    Осспадя. Кварецы достаточно приличного качества (не керамика) у китаесов стОят 100р за жменю, всяких разных. Зачем иканомить?
     
    Airbus нравится это.
  16. Ariadna-on-Line

    Ariadna-on-Line Гуру

    Это как из меню ? Бутлоадером по УСБ-УАРТ ? Не расчитан процессор на это. Его по мелочам через ICP, а по крупняку по HV программят (конфигурят).
     
    Последнее редактирование: 21 фев 2019
  17. parovoZZ

    parovoZZ Гуру

    В последних двух проектах под кварц тупо нет ног...

    без разницы, но под HV программатором можно не бояться залочить МК.
     
  18. DetSimen

    DetSimen Guest

    Купи себе TL866 и жызнь твоя станет лехка и безоблачна.
     
  19. parovoZZ

    parovoZZ Гуру

    у меня все МК в SOIC/
     
  20. DetSimen

    DetSimen Guest

    Я ТС-у. Ты то понятна, эликтронный извращенец, а он то - нет. Да и переходники к нему есть, какие угодно.
     
    Последнее редактирование модератором: 21 фев 2019
Статус темы:
Закрыта.