В настоящее время я пытаюсь выяснить, каковы правильные настройки предохранителей для моего ATmega8, когда я хочу использовать внешний кварцевый генератор с частотой более 8 МГц.
Я нашел следующую таблицу в техническом описании Atmel ATmega8 (стр. 27):
CKOPT должен быть запрограммирован (установлен на 0). А как же CKSEL3..1?
Для генератора 16 МГц я бы, вероятно, установил их на 111, потому что это максимально возможное значение (по сравнению с 8 МГц, если CKOPT не запрограммирован (установлен на 1)).
Как бы вы выбрали CKSEL3..1, например, генератор на 10 МГц, 12 МГц или 14 МГц?
Простое сравнение с диапазонами, показанными для CKOPT = 1, кажется странным. (мой расчет: например: (0,4/8*16) МГц = 0,8 МГц и т. д.):
Я всегда выбираю 111? Если да, то в каком случае другие подходили бы больше?
На основании таблицы - если CKOPT равен 0, в следующем столбце CKSEL3..1 перечисляет все 3 значения (101, 110 и 111), что предполагает их эквивалентность и используется для частот более 1 МГц (и до 16 МГц, как насколько я вижу, это максимально поддерживается).
Согласно DataSheet для CKSEL = 0 генератор имеет больший выходной размах, поэтому поддерживает более высокую частоту. CKSEL = 1 предлагает меньший диапазон частот, но значительно снижает энергопотребление, и, вероятно, поэтому у вас есть поддержка 0,9-3 МГц, чтобы иметь еще меньшее потребление.
Итак, моя интерпретация этого была бы: CKOPT = 1 и CKSEL3..1 = 111 для частот 3-8 МГц, если вы можете помочь (из-за энергопотребления), и CKOPT = 0 и CKSEL3..1 = 111 для частот 8+. МГц - 16 МГц
Бит CKOPT включает режим повышенной мощности для усилителя генератора. Я думаю, что это в основном полезно, если вы хотите управлять вторым микроконтроллером с того же кристалла.
Этот старый пост от avrfreaks говорит вам, что доступные диапазоны для> 8 МГц, по-видимому, предназначены только для определения характеристик запуска (время, необходимое AVR для выполнения первой инструкции после включения питания) ... Он также говорит вам, где искать в таблице данных в случай, когда я неправильно истолковываю этот ответ.
Кстати: в зависимости от того, какую среду программирования + программатор вы используете, он может выбрать для вас фьюз-биты, просто выбрав тип кристалла, который вы используете. Вы должны изучить это, потому что это намного упрощает работу =)
ПетПаулсен