Насколько точен внутренний генератор ATmega328P?
Обновлено Редакция GAW
У ATmega328P есть встроенный RC-генератор на 8 МГц: с ним микроконтроллер работает без кварца, и именно на нём стартует новый кристалл. Его частота зависит от напряжения питания и температуры, поэтому точность в даташите дана для двух случаев.
| Калибровка | Условия | Точность |
|---|---|---|
| Заводская | 8,0 МГц, 3 В, 25 °C | ±10 % |
| Пользовательская (OSCCAL) | 7,3–8,1 МГц, 1,8–5,5 В, −40…+85 °C | ±1 % |
При сбросе в регистр OSCCAL загружается заводское значение. Точнее можно настроить вручную, записав в OSCCAL своё число, — тогда и получается ±1 %. Но это точность в точке калибровки: графики раздела 31 даташита показывают, что частота калиброванного генератора меняется с напряжением и температурой. Поэтому калибруют в рабочих условиях.
Хватит ли для UART
По даташиту ATmega328P приёмник UART при 8 битах данных допускает ошибку скорости около ±2 % в обычном режиме и ±1,5 % в режиме U2X — при условии, что передатчик ошибается не больше. Сравнение с генератором:
- ±10 % с завода — в 5 раз больше допуска, и связь может не работать вовсе;
- ±1 % после калибровки — укладывается, если питание и температура близки к тем, при которых калибровали, а делитель скорости подобран без своей ошибки.
Ошибку делителя для нужной скорости и частоты покажет калькулятор скорости UART.
Хватит ли для часов
Нет. Ошибка 1 % — это около 14 минут в сутки. Для часов берут кварцевый резонатор: часовой кварц 32 768 Гц на асинхронном таймере или кварц 16 МГц как основной генератор.
Как перевести ATmega328P на кварц или снять делитель CKDIV8, показывает калькулятор фьюзов AVR, а остальные характеристики микроконтроллера собраны на странице ATmega328P.
Похожие вопросы
Как откалибровать внутренний генератор ATmega328P?
Записать в регистр OSCCAL такое значение, при котором частота ближе всего к нужной: её измеряют частотомером на выводе CLKO, запрограммировав фьюз CKOUT, или сравнивают с точным внешним сигналом. После сброса в OSCCAL снова загружается заводское значение, поэтому найденное число программа записывает при каждом запуске.
Почему новый ATmega328P работает на 1 МГц, а не на 8 МГц?
С завода запрограммирован фьюз CKDIV8: он делит частоту внутреннего генератора 8 МГц на 8, и системная частота получается 1 МГц. Чтобы получить 8 МГц, фьюз CKDIV8 снимают.
Зависит ли частота внутреннего генератора от питания?
Да: Microchip прямо пишет, что частота RC-генератора зависит от напряжения и температуры. Заводская точность ±10 % дана только для 3 В и 25 °C, а ±1 % достигается калибровкой в конкретной точке диапазона 1,8–5,5 В и −40…+85 °C: стоит измениться питанию или температуре, и частота снова уходит.
Источники
- Microchip. ATmega48A/PA/88A/PA/168A/PA/328/P Data Sheet (DS40002061B), 2020 — 9.6 — калиброванный внутренний RC-генератор около 8,0 МГц, при сбросе в OSCCAL загружается заводское значение, ручная запись OSCCAL даёт более точную калибровку; 9.9 — вывод тактовой частоты на CLKO включает фьюз CKOUT; кристалл поставляется с запрограммированным фьюзом CKDIV8 — системная частота 1,0 МГц; табл. 29-9 — заводская калибровка 8,0 МГц при 3 В и 25 °C ±10 %, пользовательская 7,3–8,1 МГц при 1,8–5,5 В и −40…+85 °C ±1 % — точность, которой можно добиться калибровкой в выбранной точке диапазона; разд. 31, рис. 31-369 — частота калиброванного генератора ATmega328P меняется с температурой; табл. 20-2 и 20-3 — рекомендуемая ошибка скорости приёмника для 8 бит данных ±2,0 % (U2X = 0) и ±1,5 % (U2X = 1)
- Microchip. AN2648: Selecting and Testing 32.768 kHz Crystal Oscillators for AVR Microcontrollers (DS00002648D) — выбор и проверка часового кварца 32,768 кГц для AVR, подключаемого к выводам TOSC1 и TOSC2 асинхронного таймера; разводка платы и проверка запаса генерации
Нашли ошибку?