Примечание: Программатор Microchip PICKit2 с версией программного обеспечения V2.61 вычислит и повторно занесет в память стертую константу OSCCAL за одну операцию. Поэтому настоятельно рекомендуется использовать программатор PICkit, благодаря которому вам больше не придется беспокоиться о случайно стертой константе OSCCAL.
Контроллеры PIC 12F629 и 12F675 имеют заводскую установочную калибровочную константу, которая записана в последнюю ячейку памяти программ во время процесса изготовления. При программировании контроллера программное обеспечение должно считать данную константу, сохранить вместе с данными основной программы, которые записаны в PIC контроллере, и затем повторно перезаписать в свою ячейку.
Поскольку данная калибровочная константа находится в обычной области памяти программ PIC контроллера, то ее можно легко затереть. Если вы случайно стерли эту константу, тогда будет нелегко определить, какая константа была на самом деле. Без этой константы внутренний тактовый генератор на 4МГц не будет правильно работать на заданной частоте. Хуже всего, что код прикладной программы, которому нужна данная калибровочная константа, в большинстве случаев будет приводить к общему сбою выполнения программы.
Поэтому важно знать правильное значение данной константы для калибровочных настроек тактового генератора. Ниже указана процедура сохранения правильной калибровочной константы тактового генератора, благодаря которой вы сможете восстановить и повторно записать случайно стертую константу.
- Возьмите новую микросхему контроллера PIC 12F629 или 12F675, вставьте в программатор и СЧИТАЙТЕ данные памяти программ.
- Найдите последнюю ячейку памяти программ по адресу 0x3FF.
- Запишите шестнадцатеричное значение по данному адресу. Оно должно быть в виде 34xx, как обведено красным кружочком на рисунке ниже.
- 34 – это инструкция RETLW (возврат из подпрограммы с установленной константой), бит, который нас интересует, является калибровочной константой. На рисунке выше – это шестнадцатеричный код 8C. Однако это значение не одинаковое для различных контроллеров. Поэтому важно знать фактическое значение калибровочной константы для каждого PIC контроллера.
- Запишите значение этой калибровочной константы и конвертируйте в двоичное число. В нашем примере 8C – это двоичное число 10001100.
- Очень удобно, что данные PIC контроллеры имеют 8 выводов, а двоичное число, которые мы в результате получили, имеет 8 бит.
- Возьмите маркер и далее по часовой стрелке вокруг выводов контроллера пометьте каждый вывод, где в значении калибровочной константы встречается логическая единица «1».
Теперь если вы когда-либо сотрете калибровочную константу, вам всего лишь потребуется посмотреть на помеченные выводы контроллера, определить значение константы и с префиксом 34 повторно записать в последнюю ячейку памяти программ по адресу 0x3FF – Проще не бывает!