Почему ATmega328P не запускается от кварца?
Обновлено Редакция GAW
У ATmega328P источник тактов выбирают фьюзы CKSEL — по табл. 9-1 даташита это калиброванный RC-генератор 8 МГц, RC-генератор 128 кГц, генератор для кварца в двух вариантах, генератор для часового кварца или внешний сигнал. Кварц на плате сам по себе ничего не включает.
Причины по порядку
| Признак | Причина | Что сделать |
|---|---|---|
| Работает, но в 16 раз медленнее | новый кристалл: RC 8 МГц и CKDIV8 — 1 МГц | записать фьюзы под кварц |
| Не запускается и не прошивается | фьюзы выбрали кварц, а он не генерирует | проверить кварц, конденсаторы, разводку |
| Работает через раз, сбоит от касания | Low Power и помехи | режим Full Swing |
| Нестабилен на 16 МГц при 3,3 В | частота выше допустимой для напряжения | 8 МГц или 5 В |
Фьюзы CKSEL
По табл. 9-1 и 9-3 даташита генератор Low Power Crystal занимает коды 1111–1000, и три старших бита задают диапазон частот:
| CKSEL3…1 | Режим | Частота | C1 = C2 |
|---|---|---|---|
| 101 | Low Power | 0,9–3 МГц | 12–22 пФ |
| 110 | Low Power | 3–8 МГц | 12–22 пФ |
| 111 | Low Power | 8–16 МГц | 12–22 пФ |
| 011 | Full Swing | 0,4–20 МГц | 12–22 пФ |
У Arduino Uno младший байт фьюзов — 0xFF: Low Power на 8–16 МГц. Расшифровать и собрать свой байт поможет калькулятор фьюзов AVR.
Low Power и Full Swing
Microchip прямо пишет, что Low Power даёт уменьшенный размах на XTAL2 и может быть чувствительнее к помехам, а его выход нельзя подать на другие тактовые входы. Full Swing выдаёт полный размах, работает до 20 МГц, но только при VCC 2,7–5,5 В и потребляет больше. Если генератор капризничает — первым делом пробуют его.
Конденсаторы и разводка
C1 и C2 должны быть одинаковыми; даташит даёт ориентир 12–22 пФ, а точнее их считают по нагрузочной ёмкости кварца — это делает калькулятор конденсаторов для кварца. Кварц ставят вплотную к XTAL1 и XTAL2, а конденсаторы — на общий провод рядом с выводом GND. Как работает схема Пирса и почему важен запас по усилению, объясняет статья «Генераторы».
Старт кварца по табл. 9-4 — 16 тысяч тактов, а при выборе «медленно нарастающего питания» ещё 65 мс задержки после сброса. Остальные характеристики кристалла — на странице ATmega328P.
Похожие вопросы
Какие фьюзы нужны для кварца 16 МГц?
Как у Arduino Uno: младший байт 0xFF — CKSEL3…0 = 1111, Low Power Crystal на 8–16 МГц, самый долгий старт, и CKDIV8 не запрограммирован. Если плата работает в помехах или кварц должен тактировать ещё что-то, берут Full Swing — CKSEL3…1 = 011 (наш вывод из табл. 9-1 и 9-5).
Перестал прошиваться после смены фьюзов на кварц — что делать?
Для программирования по ISP кристаллу нужен такт, который выбран фьюзами. Если кварца на плате нет или он не запускается, кристалл не отвечает. Временно подключают кварц с конденсаторами или подают меандр на XTAL1, прошивают правильные фьюзы и проверяют генератор (наш вывод).
Можно ли поставить керамический резонатор вместо кварца?
Можно: оба генератора ATmega328P рассчитаны и на кварц, и на керамический резонатор, но для резонатора даташит советует ёмкости от производителя резонатора и предусматривает свои варианты времени запуска в табл. 9-4. Точность резонатора хуже кварца, поэтому для UART и часов предпочтителен кварц.
Источники
- Microchip. ATmega48A/PA/88A/PA/168A/PA/328/P Data Sheet (DS40002061B) — табл. 9-1 — CKSEL3…0: 1111–1000 Low Power Crystal, 0111–0110 Full Swing, 0010 внутренний RC, 0000 внешний сигнал; 9.3, табл. 9-3 — Low Power: 0,9–3 МГц — 101, 3–8 МГц — 110, 8–16 МГц — 111, C1 = C2 = 12–22 пФ, меньше размах на XTAL2, чувствительнее к помехам, не может тактировать другие входы; табл. 9-4 — кварц: 16K CK плюс 4,1 или 65 мс; 9.4, табл. 9-5 — Full Swing 0,4–20 МГц, 011, только при VCC 2,7–5,5 В; 28.8 — для программирования по ISP нужен такт, выбранный фьюзами
- Arduino. ArduinoCore-avr, boards.txt (коммит 11b9130) — uno.bootloader.low_fuses=0xFF, uno.build.f_cpu=16000000L
Нашли ошибку?
Смотрите также
- Фьюзы AVRБиты фьюзов, заводские значения и avrdude
- Конденсаторы для кварцаC1 и C2 по CL, запас генерации, уход частоты
- ГенераторыУсловие Баркгаузена, мост Вина, фазосдвигающий RC, LC-контур, кварц и схема Пирса, NE555, точность в ppm
- ATmega328PРаспиновка, фьюзы, Optiboot, периферия, питание, схема и код на C