Как МК (atmega) отмеряет временные промежутки?

И как они зависят от тактовой частоты? Если в скетче указана пауза в 1 сек (1000 мс) , то как угадать какой она будет по факту? Это от частоты программатора зависит, типа если я пишу через USBasp с кварцем на 12 МГц, а сам МК работать будет на 1 МГц, то все временные задержки увеличатся в 12 раз, или как? В настройке самой проги лазил, там об этом ни слова (программирую через среду arduino, голубую такую, хз как она называется, с символом (+) (-)
7 года назад от Китайский Куриц

1 ответ



0 голосов
у ардуины конкретный кварц (8 мгц) , величина которого известна загрузчику и фузы CKDIV, которые определяют коэффициент деления. Зная это, нетрудно вычислить длительность такта (машинного цикла) . Например, чтоб получить секунду, он пропустит 8 000 000 тактов. Как-то так.
Кроме этого, у микроконтроллера есть аппаратные таймеры, с помощью которых можно производить счет времени, не прерывая выполнения программы. О том что "время вышло", таймер собщит установкой сответствующего флага, или вызовет прерывание.

Программатор МК Atmega не устанавливает свою частоту, он работает на частоте контроллера. Например, нахимичив с фузами, можно получить тактовую частоту 16 кГц, при которой программирование через ISP станет невозможно.
7 года назад от Данил Анкудинов

Связанные вопросы

2 ответов
1 год назад от Алина Нургалиева
1 ответ