|
Калибровка частоты в AVR, Как записать калибровочную ячейку в регистр OSCCAL. |
|
|
|
May 31 2012, 08:15
|
Частый гость
 
Группа: Участник
Сообщений: 147
Регистрация: 25-09-08
Пользователь №: 40 467

|
Спасибо за ответы. Почитал указанную документацию, в основном понятно. Только программу к AppNote "AVR053: Calibration of the internal RC oscillator" я не смог найти, подскажите...
Хочется разобраться в возможностях внутреннего RC генератора на частоте 8МГц. Задачи бывают разные, и требования к точности генератора тоже. Скажите, правильно ли я понял, что: 1. если ничего не записывать в калибровочный регистр OSCCAL, то гарантируемая изготовителем точность частоты будет +\- 10%, это в температурном диапазоне -40\+80С . 2. если записать заводское значение из калибровочной ячейки в калибровочный регистр OSCCAL, то точность частоты будет +\- 3%, это при 25С, а в температурном диапазоне -40\+80С надо добавить ещё примерно 2-2,5%, в зависимости от контроллера, итого будет +\-5%. 3. если производить калибровку по внешней образцовой частоте, то можно получить точность +\-1% в температурном диапазоне -40\+80С.
|
|
|
|
|
May 31 2012, 09:12
|

Гуру
     
Группа: Свой
Сообщений: 2 399
Регистрация: 10-05-06
Из: г. Новочеркасск
Пользователь №: 16 954

|
Цитата(Nikkolaj @ May 31 2012, 12:15)  Только программу к AppNote "AVR053: Calibration of the internal RC oscillator" я не смог найти, подскажите... ВотЦитата(Nikkolaj @ May 31 2012, 12:15)  Скажите, правильно ли я понял, что:... Подробно о этом написано в DS в подразделе 8.6 "Calibrated Internal RC Oscillator". Если программа в регистр OSCCAL ничего не заносит, то в него записываются "заводское значение" определенное для указанных в DS напряжении питания и температуре. Погрешность частоты при этих напряжении и температуре 3% или 10% (значение указано в DS, конкретно для mega8A - 3% при 5V и 25°C.). Можно дополнительно отколибровать генератор под эти же или нужные Вам напряжение и температуру, при этом можно достичь погрешности в 1% (или 2%, если исходная/заводская калибровка 10%). Зависимость частоты генератора от напряжения и температуры приведены в DS в подразделе 26.10 "Internal Oscillator Speed". Из этих данных можно установить, на сколько "уйдёт" частота при изменении температуры и напряжения питания... P.S. Еще обратите внимание, что зависимости частоты внутреннего генератора от напряжения питания и температуры приведены в разделе с названием "Типичные характеристики". Ваш, конкретный экземпляр МК может оказаться "нетипичным" как в лучшую, так и в худшую сторону...
|
|
|
|
|
May 31 2012, 11:55
|
Частый гость
 
Группа: Участник
Сообщений: 147
Регистрация: 25-09-08
Пользователь №: 40 467

|
Спасибо за ответ. Цитата Если программа в регистр OSCCAL ничего не заносит, то в него записываются "заводское значение" определенное для указанных в DS напряжении питания и температуре. Погрешность частоты при этих напряжении и температуре 3% или 10% (значение указано в DS, конкретно для mega8A - 3% при 5V и 25°C.). Насколько я понял, Если программа в регистр OSCCAL ничего не заносит, то в него по сбросу записывается "заводское значение" для частоты 1МГц, не зависимо от того, какую частоту мы зададим в конфигурационных ячейках. Это значение для другой частоты, например 8МГц, может совсем и не подходить. Заводское калибровочное значение для частоты, отличной от 1МГц, в регистр OSCCAL надо по сбросу записать в программе. Я правильно понял?
Сообщение отредактировал Nikkolaj - May 31 2012, 12:21
|
|
|
|
|
May 31 2012, 14:47
|
Частый гость
 
Группа: Участник
Сообщений: 147
Регистрация: 25-09-08
Пользователь №: 40 467

|
Цитата Я их считывал... Для всех четырёх частот в МК были одни и те же значения. Подозреваю, что в МК один генератор на 8МГц, а остальные частоты получают путем деления этой частоты... Ради интереса я тоже сейчас попробовал их прочитать. Под руками был ATmega128, значения оказались разными, от 0x9B до 0xA1. Сомнительно, что это один генератор и делитель. Есть ещё и такой аргумент, в типичных характеристиках процентное отклонение частоты для 1МГц как минимум в два раза меньше, чем для 8МГц. К моему удивлению оказалось что из AVR Studio калибровочные ячейки можно не только прочитать, но и сразу записать в любую ячейку как Flash, так и EEPROM. Всё оказалось очень просто. Я знаю в какую ячейку EEPROM я запишу нужное значение калибровки. В программе прочитать его конечно можно и по процедуре чтения EEPROM. Но можно ли сделать проще, указать компилятору разместить мою переменную, например Calibr8, именно по этому адресу EEPROM ? Тогда даже не надо будет задумываться над процедурой чтения EEPROM. Можно ли это сделать в Code Vision AVR ?
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|