реклама на сайте
подробности

 
 
2 страниц V   1 2 >  
Reply to this topicStart new topic
> Калибровка частоты в AVR, Как записать калибровочную ячейку в регистр OSCCAL.
Nikkolaj
сообщение May 29 2012, 12:11
Сообщение #1


Частый гость
**

Группа: Участник
Сообщений: 147
Регистрация: 25-09-08
Пользователь №: 40 467



Добрый день.
Хочу использовать в AVR контроллере внутренний генератор с частотой отличной от 1МГЦ.
Хочу произвести калибровку этой частоты.
Понимаю, что при программировании надо прочитать соответствующую калибровочную ячейку,
и записать её в определённый адрес ( например последний ) FLASH или EEPROM.
А в начале программы перезаписать его в калибровочный регистр OSCCAL.
Подскажите пожалуйста, как разместить переменную в конкретную ячейку FLASH памяти, или в EEPROM.
Go to the top of the page
 
+Quote Post
zombi
сообщение May 29 2012, 16:22
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 2 076
Регистрация: 10-09-08
Пользователь №: 40 106



Вы считаете что AVR контроллер в природе всего один и программируется единственным программатором?
И вопроса какой именно у Вас мк и программатор возникнуть не может?
Go to the top of the page
 
+Quote Post
Nikkolaj
сообщение May 30 2012, 06:38
Сообщение #3


Частый гость
**

Группа: Участник
Сообщений: 147
Регистрация: 25-09-08
Пользователь №: 40 467



Контроллер ATmega8A, программатор STK500
Go to the top of the page
 
+Quote Post
Nikkolaj
сообщение May 30 2012, 08:26
Сообщение #4


Частый гость
**

Группа: Участник
Сообщений: 147
Регистрация: 25-09-08
Пользователь №: 40 467



Компилятор Code Vision AVR
Go to the top of the page
 
+Quote Post
Палыч
сообщение May 30 2012, 09:20
Сообщение #5


Гуру
******

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



Цитата(Nikkolaj @ May 29 2012, 16:11) *
Хочу произвести калибровку этой частоты. ...Подскажите пожалуйста, как разместить переменную в конкретную ячейку FLASH памяти, или в EEPROM.


Непонятно: какие у Вас трудности?
Не знаете как прочитать/записать ячейку EEPROM? В DS в разделе 7 "AVR Memories" об этом написано и даже процедуры соответствующие приведены...
Вызывает затруднение калибровка на нужную частоту? У Atmel'а по этому поводу есть AppNote "AVR053: Calibration of the internal RC oscillator" и программа к ней. Программу необходимо немного поправить под нужную Вам частоту...
Go to the top of the page
 
+Quote Post
arttab
сообщение May 31 2012, 01:28
Сообщение #6


Профессионал
*****

Группа: Свой
Сообщений: 1 432
Регистрация: 7-12-04
Из: Новосибирск
Пользователь №: 1 371



если я правильно понял, Вы хотите использовать не стандартную частоту.
Проблема в том что есть стандартный набор частот и подстройка ограничена 0-255 регистра .

Вы можете использовать кварц близкий к нужной частоте и подобрать значение для нужной точности.

я делал калибратор для меги88 на меге88, но для стандартной частоты - 8МГц. меня заводской разброс в 10% не устроил. А с калибровкой вышло 1%.

нужен образцовый генератор или кварц и мк который будет "подбирать" нужное значение OSCCAL


--------------------
OrCAD, Altium,IAR, AVR....
Go to the top of the page
 
+Quote Post
Палыч
сообщение May 31 2012, 06:35
Сообщение #7


Гуру
******

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



Цитата(arttab @ May 31 2012, 05:28) *
я делал калибратор для меги88 на меге88... нужен образцовый генератор или кварц и мк который будет "подбирать" нужное значение OSCCAL

Источник образцовой частоты, несомненно, нужен. Но, второй МК - зачем? Чем не устроило решение из AVR053 ? Ведь МК, который подберет значение OSCCAL уже есть - это калибруемый МК !
Go to the top of the page
 
+Quote Post
Nikkolaj
сообщение May 31 2012, 08:15
Сообщение #8


Частый гость
**

Группа: Участник
Сообщений: 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С.
Go to the top of the page
 
+Quote Post
Палыч
сообщение May 31 2012, 09:12
Сообщение #9


Гуру
******

Группа: Свой
Сообщений: 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. Еще обратите внимание, что зависимости частоты внутреннего генератора от напряжения питания и температуры приведены в разделе с названием "Типичные характеристики". Ваш, конкретный экземпляр МК может оказаться "нетипичным" как в лучшую, так и в худшую сторону...
Go to the top of the page
 
+Quote Post
Nikkolaj
сообщение May 31 2012, 11:55
Сообщение #10


Частый гость
**

Группа: Участник
Сообщений: 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
Go to the top of the page
 
+Quote Post
Палыч
сообщение May 31 2012, 12:40
Сообщение #11


Гуру
******

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



Цитата(Nikkolaj @ May 31 2012, 15:55) *
Я правильно понял?

Поняли правильно.
Заводские калибровочные значения для разных частот можно прочитать из МК программатором. Для этого есть специальная команда "Read Signature Bytes and Calibration byte". Я их считывал... Для всех четырёх частот в МК были одни и те же значения. Подозреваю, что в МК один генератор на 8МГц, а остальные частоты получают путем деления этой частоты...

Go to the top of the page
 
+Quote Post
Nikkolaj
сообщение May 31 2012, 14:47
Сообщение #12


Частый гость
**

Группа: Участник
Сообщений: 147
Регистрация: 25-09-08
Пользователь №: 40 467



Цитата
Я их считывал... Для всех четырёх частот в МК были одни и те же значения. Подозреваю, что в МК один генератор на 8МГц, а остальные частоты получают путем деления этой частоты...


Ради интереса я тоже сейчас попробовал их прочитать.
Под руками был ATmega128, значения оказались разными, от 0x9B до 0xA1.
Сомнительно, что это один генератор и делитель.
Есть ещё и такой аргумент,
в типичных характеристиках процентное отклонение частоты для 1МГц как минимум в два раза меньше, чем для 8МГц.

К моему удивлению оказалось что из AVR Studio калибровочные ячейки можно не только прочитать,
но и сразу записать в любую ячейку как Flash, так и EEPROM.
Всё оказалось очень просто.
Я знаю в какую ячейку EEPROM я запишу нужное значение калибровки.
В программе прочитать его конечно можно и по процедуре чтения EEPROM.
Но можно ли сделать проще,
указать компилятору разместить мою переменную, например Calibr8, именно по этому адресу EEPROM ?
Тогда даже не надо будет задумываться над процедурой чтения EEPROM.
Можно ли это сделать в Code Vision AVR ?
Go to the top of the page
 
+Quote Post
_Артём_
сообщение May 31 2012, 15:08
Сообщение #13


Гуру
******

Группа: Свой
Сообщений: 2 128
Регистрация: 21-05-06
Пользователь №: 17 322



Цитата(Nikkolaj @ May 31 2012, 17:47) *
Но можно ли сделать проще,
указать компилятору разместить мою переменную, например Calibr8, именно по этому адресу EEPROM ?
Тогда даже не надо будет задумываться над процедурой чтения EEPROM.
Можно ли это сделать в Code Vision AVR ?


Код
eeprom unsigned char Calibr8 @0x10;// расположение байта по адресу 0x10

Go to the top of the page
 
+Quote Post
Nikkolaj
сообщение May 31 2012, 17:11
Сообщение #14


Частый гость
**

Группа: Участник
Сообщений: 147
Регистрация: 25-09-08
Пользователь №: 40 467



Спасибо, Артём !!
Попробовал, Code Vision AVR всё нормально принял.
Интересно, а для ОЗУ, FLASH тоже можно поступать аналогично?

Сообщение отредактировал Nikkolaj - May 31 2012, 17:25
Go to the top of the page
 
+Quote Post
_Артём_
сообщение May 31 2012, 18:00
Сообщение #15


Гуру
******

Группа: Свой
Сообщений: 2 128
Регистрация: 21-05-06
Пользователь №: 17 322



Цитата(Nikkolaj @ May 31 2012, 20:11) *
Интересно, а для ОЗУ, FLASH тоже можно поступать аналогично?


Должна быть такая возможность.
Посмотрите в Help-е где есть пункт Placing variables (примерно так называется).
Go to the top of the page
 
+Quote Post

2 страниц V   1 2 >
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 21st July 2025 - 23:44
Рейтинг@Mail.ru


Страница сгенерированна за 0.01504 секунд с 7
ELECTRONIX ©2004-2016