Константа на калибриране
Проблема е следния. Използвам PIC с вътрешен осцилатор. Когато го заших сам, не знаех нищо за тази константа за калибриране. След това отне голям брой флаш контролери и поръчах фърмуера от компания, която ги продава, тъй като струва стотинка. Изпратих им hex, поискаха, пристигнаха, купиха го. Реших да го проверя за всеки случай. Намерих разлики в последната клетка. В моя фърмуер няма нищо т.е FFh, но в този който са правили пише някаква цифра. Обадих им се, те казаха, че това е константата за калибриране на вътрешния генератор, която е зададена фабрично. Оказва се, че при самостоятелен фърмуер презаписвам тази константа и генераторът ми не извежда честота с точността, която може да има? И след като го изтрия, го губя завинаги? Оттук и въпросът как да внедря фърмуера, така че тази константа да работи?
Според мен тази константа трябва да се намира в специална област, която не е достъпна за програмната памет.
И аз си мислех, че всичко това трябва да работи автоматично, но тогава какво пише в тази последна клетка, за която писах по-горе? Освен това във всеки зашит MK тези числа са различни.
Посочете конкретния тип MK.
picmaniac:Посочете типа MK.PIC16F630
клауза 2.2.2.7, клауза 9.2.5 от листа с данни
Благодаря ви, че прочетохте. Истината не е съвсем разбрана.
bsf STATUS, RP0 ;Банка 1 извикване 3FFh ;Получаване на кал стойност ;Какво е подпрограма 3FFh? Къде трябва да е тя? Къде трябва да се напише RETLW XX? И тогава, откъде да взема XX? Или всичко това се подразбира и е достатъчно да напиша call 3FFh и след това да не си разбивам главата? movwf OSCCAL ;Calibrate bcf STATUS, RP0 ;Bank 0
Къде трябва да поставя тези редове? В инициализацията или някъде другаде? И тогава аз съм нищоНе съм писал това, аз само дадох hex на компанията, аз не дадох asm. Как тогава биха могли да мигат тази константа? И за какво?! Не попитах и поради незнание не знаех нищо за нея.
Изтриването на устройството също ще изтрие предварително програмираната стойност за вътрешно калибриране за вътрешния осцилатор. Стойността на калибриране трябва да бъде запазена преди изтриване на част, както е посочено в спецификацията за програмиране на PIC16F630/676.
Разбирам, че ако презапиша константа, тя не може да бъде възстановена? И трябва ли първо да се запази? Къде можете да го прочетете? И каква е програмната спецификация? Това отделен документ ли е? Търсите микрочип? Ще погледна, ще прочета.
АНТОХА ме изпревари.
bsf STATUS, RP0 ;Bank 1 повикване 3FFh ;Получаване на кал стойност movwf OSCCAL ;Калибриране bcf STATUS, RP0 ;Bank 0
Сглобявам, зареждам hex в icprog. Получавам ли калибриран генератор (константата записана ли е в OSCCAL?) или не? Какво ще стане с вторичното мигане? Изглежда вече е загубено, нали?
bsf СТАТУС, RP0 movlw XX movwf OSCCAL bcf СТАТУС, RP0
Форум за радиото - сайт, посветен на обсъждане на електроника, компютри и свързани с тях теми.