Калібрувальна константа

Проблема у наступному. Використовую PIC із внутрішнім генератором. Коли прошивав сам, про цю калібрувальну константу і знати нічого не знав. Потім знадобилася велика кількість прошитих контролерів, і я замовив прошивку у фірмі, яка займається їх продажем, благо це коштує копійки. Переслав їм hex, вони прошили, приїхав, купив. Вирішив перевірити про всяк випадок. Виявив відмінності в останньому осередку. У моїй прошивці там нічого немає, тобто FFh, а в тій, що зробили вони, записано якесь число. Подзвонив їм, сказали, що це калібрувальна константа внутрішнього генератора, яка закладається ще на заводі. Виходить справа при самостійній прошивці я затираю цю константу і мій генератор видає частоту не з тією точністю, яку можна було б мати? І одного разу затерши її, я втрачаю її назавжди? Звідси питання, як здійснювати прошивку, щоб ця константа працювала?

Ця константа повинна розташовуватися в спеціальній області, не доступній, для пам'яті програм.

Я теж так думав, що все це автоматично має працювати, а що ж тоді записано в цьому самому останньому осередку, про що я написав вище? Причому в кожному прошитому МК ці цифри різні.

Вкажіть саме тип МК.

picmaniac:Вкажіть конкретно тип МК.PIC16F630

п.2.2.2.7, п.9.2.5 даташита

Дякую, прочитав. Щоправда, не зовсім зрозумів.

bsf STATUS, RP0 ;Bank 1 call 3FFh ;Get the cal value ;Що таке підпрограма 3FFh? Де вона має бути? Де потрібно записувати RETLW XX? А потім звідки я візьму ХХ? Або все це мається на увазі, і мені достатньо написати call 3FFh, і далі "голову не ламати"? movwf OSCCAL; Calibrate

Куди ці рядки вставляти? В ініціалізацію чи ще куди? А потім, я ж нічоготакого не писав, я у фірму давав тільки hex, asm не давав. Як вони змогли прошити тоді цю константу? І навіщо?! Я ж не просив і з незнання нічого не відав про неї.

Erasing the device will also erase the preprogrammed internal calibration value for internal oscillator. Calibration value must be saved prior to erasing part as specified in the PIC16F630/676 Programming specification.

Я так зрозумів, що якщо я затер константу, то її не відновити? І її треба заздалегідь зберегти? А де її прочитати? І що це за Programming specification? Це окремий документ такий? На мікрочіпі шукати? Шукаю, почитаю.

АНТОХА мене випередив.

bsf STATUS, RP0 ;Bank 1 call 3FFh ;Get the cal value movwf OSCCAL ;Calibrate bcf STATUS, RP0 ;Bank 0

Асемблюю, завантажую hex в icprog. Отримую калібрований генератор (константа в OSCCAL прописується?) чи ні? Що буде за вторинної перепрошивки? Мабуть, уже загубиться, так?

bsf STATUS, RP0 movlw XX movwf OSCCAL bcf STATUS, RP0

Форум про радіо — сайт, присвячений обговоренню електроніки, комп'ютерів та суміжних тем.