Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Чтение калибровочных байтов AVR программно?
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > AVR
shevek
Возможно как то прочитать калибровочные байты программно? В датащите такая возможность вроде не упоминается, но к сожалению мой программатор AS2 (точнее софт для него ) не поддерживает возможность автоматической прошивки в необходимый адресс флеш калибровочного байта(типа как этио умеет AVReAl).

Редактировать исходник, и перекомпилировать для каждого кристалла? Или существует другой более удобный вариант?

Спасибо.
arttab
Если ни чего нового АВР не сделала, то только снаружи можно байт считать.
Как удобней? Берете, скажем, понипрог и указывете куда (адрес) ему положить калибровачный байт (указываете адрес во флеш), а в своей проге при запуске заносите этот байт в калибровочный регистр.
Если использовать Аврил, то все в командной строке можно указать. Для производства так и делал
shevek
Если ни чего нового АВР не сделала, то только снаружи можно байт считать.

Понятно. Еще раз спасибо.
dRaider
Программно увы ни как
defunct
Гм.. калибруйте напрямую регистром OSCCAL.
dRaider
Цитата
Гм.. калибруйте напрямую регистром OSCCAL.


В смысле?

Насколько я понял вопрос в том чтобы считать калибровочный быйт из программы.
SpyBot
Цитата(shevek @ Jun 29 2006, 01:39) *
Возможно как то прочитать калибровочные байты программно? В датащите такая возможность вроде не упоминается, но к сожалению мой программатор AS2 (точнее софт для него ) не поддерживает возможность автоматической прошивки в необходимый адресс флеш калибровочного байта(типа как этио умеет AVReAl).

Редактировать исходник, и перекомпилировать для каждого кристалла? Или существует другой более удобный вариант?

Спасибо.

Почему AS2 не поддерживает? В окне с hex файлом можно кликнуть на любой байт и отредактировать его. Так же и с EEPROM.
defunct
Цитата(dRaider @ Jun 29 2006, 14:05) *
Цитата
Гм.. калибруйте напрямую регистром OSCCAL.
В смысле?
Насколько я понял вопрос в том чтобы считать калибровочный быйт из программы.
Ну дык калибровочный байт при старте прошивки помещается в OSCCAL
shevek
Ну дык калибровочный байт при старте прошивки помещается в OSCCAL

Да при процедуре reset в osccal автоматически помещается калибровочный байт но только для встроенного RC генератора на 1 МГц, а я использую встроенный RC генератор на 8 Мгц.

Цитата
During Reset, the 1 MHz value is automatically
loaded into the OSCCAL Register. If other frequencies are used, the
calibration value has to be loaded manually, see ”Oscillator Calibration Register – OSCCAL”
on page 28 for details.


Или вы имели ввиду что то другое?
Shurmas
короче смотрите соответствующий апноут по калибровке:

http://www.atmel.com/dyn/products/app_note...p?family_id=607
defunct
Цитата(shevek @ Jun 29 2006, 14:44) *
Ну дык калибровочный байт при старте прошивки помещается в OSCCAL
Да при процедуре reset в osccal автоматически помещается калибровочный байт но только для встроенного RC генератора на 1 МГц, а я использую встроенный RC генератор на 8 Мгц.

При RC генераторе на 8Mhz, в OSCCAL загружается 4-й байт калибровки (тот что для 8-ми Mhz).
(в даташите рассматривается конкретный случай, для заводских настроек).
А "If other frequencies are used" надо трактовать, как частоты отличные от базовых (1, 2, 4, 8Mhz) настроек RC, т.е. к примеру 7.3Mhz или 9.2Mhz и т.п.
shevek
defunct

Странно. Вот еще одно интересное утверждение из аппнота AVR053, страница 2. Кажется это уже трактовать как то по другому нельзя.

Цитата
The default RC oscillator calibration byte is in most devices automatically loaded from the Signature Row and copied into the OSCCAL register at start-up. For example, the default ATmega8 clock setting is the internal 1MHz RC oscillator; for this device the calibration byte corresponding to the 1MHz RC oscillator is automatically loaded at start-up. If the fuses are altered so that the 4MHz oscillator is used instead of the default setting, the calibration byte must be loaded into the OSCCAL register manually. A programming tool can be used to read the 4MHz calibration byte from the Signature Row and hence store it in a Flash or EEPROM location, which is read by the main program and copied into OSCCAL at run-time.


Или я что то неправильно понимаю.



Shurmas

Да спасибо, как понял придется менять программатор, иначе прошивка ста устройств станет несколько геморной.

SpyBot

В общем пока так и поступлю на тестовой партии, потом это станет не очень удобным. ИМХО AS2 вполне неплохая вешь, но следующим моим программатором будет что то совместимое с STK500, а отнюдь не AS4.
defunct
Цитата(shevek @ Jun 29 2006, 18:01) *
Странно. Вот еще одно интересное утверждение из аппнота AVR053, страница 2. Кажется это уже трактовать как то по другому нельзя.
Действительно странно. Возможно ошибка в описании, а может и я что-то не так запомнил. В свое время плотно исследовал калибровку внутреннего RC. И у меня, вопреки приведенной Вами цитате, насколько помню получился следующий результат -
калибровочные байты загружаются при сбросе в OSCCAL таким образом:

RC 1Mhz - первый калибровочный байт;
RC 2Mhz - второй калибровочный байт;
RC 4Mhz - третий калибровочный байт;
RC 8Mhz - четвертый.

Проверял на железе - M16/M162/M32.
Если следовать приведенному в цитате, то получается просто какая-то дурь. Какой смысл вводить 4 калибровочных байта, если загружается постоянно только один.

PS: в программе (в RunTime) никак нельзя получить доступ к программируемым из-вне fuses и калибровочным байтам. Ну и на крайний случай можете записать значение интересующего Вас калибровочного байта в первый калибровочный байт, т.о. в OSCCAL гарантировано загрузится то, что вам нужно и в коде не потребуется ничего загружать вручную.
shevek
defunct

Цитата
Если следовать приведенному в цитате, то получается просто какая-то дурь. Какой смысл вводить 4 калибровочных байта, если загружается постоянно только один.


Смысл то есть, не приходится самому производить калибровку каждого кристалла, хотя понятно было бы лучше чтобы соответствующий калибровочный байт копировался в osccal автоматически.

Цитата
Проверял на железе - M16/M162/M32.


Может в этом все и дело , я имею дело с ATtiny26. Завтра всеже попробую посмотреть как там это делается.

С другой стороны есть смысл и дать читать калибровочные байт программно в рантайме, но это не реализовано, так что ИМХО все возможно у атмелов. smile.gif

Цитата
Ну и на крайний случай можете записать значение интересующего Вас калибровочного байта в первый калибровочный байт, т.о. в OSCCAL гарантировано загрузится то, что вам нужно и в коде не потребуется ничего загружать вручную.


Как? Подскажите где про это посмотреть вроде в датащите про это нет ни слова.
defunct
Цитата(shevek @ Jun 29 2006, 22:22) *
Как? Подскажите где про это посмотреть вроде в датащите про это нет ни слова.

Извиняюсь за дезинформацию. Их можно только читать.
AVRISP позволяет читать калибровочные байты и записывать их в ячейки eeprom или flash.
arttab
к нам приежали Аргуссовтовци и програматор привозили. Я по их программатору вопросы задавал. Подключили его к плате м тиней26 и мне показали 4 алибровочные байта. Может их совт положить нужный байт по указанному адрему - точно не помню.
Посмотрите свою прогу на програматор и/или обновление
shevek
Цитата
к нам приежали Аргуссовтовци и програматор привозили. Я по их программатору вопросы задавал. Подключили его к плате м тиней26 и мне показали 4 алибровочные байта. Может их совт положить нужный байт по указанному адрему - точно не помню.
Посмотрите свою прогу на програматор и/или обновление


Да может то может но не автоматически, свежий софт от них уже не поддерживает мой программатор AS2(2005 году куплен, и снят с производства у аргус) ? во всяком случае свежая версия ПО коннектиться с ним отказывется.

Как не странно в программе есть даже возможность автоинкремента(для серийных номеров как я понимаю), а вот про калибровочные только возможность увидеть их в MessageBox.
Petka
defunct, Вы вводите людей в заблуждение! Как бы ни стояли Фузы CKSEL, в регистр OSCCAL при старте кристала ВСЕГДА грузится ПЕРВЫЙ калибровочный байт. Только что проверил свои слова на tiny2313. Почему так сделала Atmel непонятно, но оно именно так! Кстати этот вопрос стоит БЯЗАТЕЛЬНО внести в "GetStarted with AVR". Если интересно как я автоматизирую калибровку кристала на внутренем RC, то могу рассказать.
defunct
Цитата(Petka @ Jun 30 2006, 10:07) *
defunct, Вы вводите людей в заблуждение! Как бы ни стояли Фузы CKSEL, в регистр OSCCAL при старте кристала ВСЕГДА грузится ПЕРВЫЙ калибровочный байт. Только что проверил свои слова на tiny2313. Почему так сделала Atmel непонятно, но оно именно так! Кстати этот вопрос стоит ОБЯЗАТЕЛЬНО внести в "GetStarted with AVR".

Ок, Вы абсолютно правы.
Извиняюсь если кого ввел в заблуждение.
Вспомнил откуда ростут ноги - у меня в кристалах все четыре байта были равны.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2024 Invision Power Services, Inc.