Странно, что вы не нашли всю информацию в даташите.
для того чтобы настроить ваш контроллер на требуемую частоту (6МГц), сначала нужно установить фьюзы для тактирования от 4,8 МГц.
О том как выставить рабочую частоту 4,8 или 9,6 MHZ с помощью фьюзов я прекрасно знаю...
Вопрос состоит в том как правильно организовать алгоритм записи значений в регистр OSCCAL чтобы увеличить
рабочую частоту 4,8 MHZ на 25% и получить тем самым 6 MHZ и не превысить лимит перехода 2% от одной частоты к другой???
Главные открытые вопросы которые остаётся до сих пор открыты:
1) Как понимать нижеприведённую таблицу????
2) В datasheet указано (перевод брал из книги A.В.Белова "Самоучитель разработчика устройвств на микроконтроллерах AVR"):
a) Изменение частоты более чем на 2% от одного цикла генератора до следующего может привести к непредсказуемому поведению микросхемы. Вопрос: Как задать это число в OSCCAL чтобы значение приращение было меньше 2% иначе контролер может зависнуть???
b) Изменение регистра OSCCAL не должно превышать 32 (0x20) за один шаг калибровки. Мне кажется здесь противоречие, так как 0x20 явно больше 2%???
Теперь мои предположения:
1) Если я правильно понял при записи во фьюзы CKSEL1..0 значения 01 частота внутреннего RC генератора выбирается 4,8 MHZ
и это является эквивалентным тому что в регистр OSCCAL записывается значение (если смотреть по графику) приблизительно 84 (0x54).
2) Чтобы получить частоту 6 MHZ мне нужно изменить значение OSCCAL от 84 (0x54) до 105 (0x69)
3) Изменение OSCCAL от 84 до 105 в данном случае соответствует 25%.
4) 105-84 = 21; изменение OSCCAL на 21 (0x15) меньше максимально допустимого значения изменения 32 (0x20) OSCCAL
5) 25% / 21=1.2%. Получается что при изменении OSCCAL на 1 значение частоты будет увеличиваться на 1,2% от предыдущего.
Что является меньше максимально допустимых 2%.
6) Вот пример моего программного кода:
Код: Выделить всё
for (Cnt = 84; Cnt<106; Cnt++ ) {OSCCAL = Cnt; }
[/size]
Код: Выделить всё
ldi r17,105
ldi r16,84
start: inc r16
out OSCCAL,r16
cpse r16,r17
rjamp start
[/size]
ПОПРАВЬТЕ ЕСЛИ Я НЕ ПРАВ!!! Так как описание ррегистра OSСCAL брал из книги A.В.Белова "Самоучитель разработчика устройвств на микроконтроллерах AVR" - может неправильный по смыслу перевод и не даёт понять мне самой сути...
"Разум, единожды раздвинувший свои границы, никогда не вернется в границы прежние"
Альбе́рт Эйнште́йн
“Так что же такое электричество? Уже на протяжении всей жизни я задаю себе этот вопрос.”
Никола Тесла