При программировании не забывайте про константу(osccal), которая записана в последней ячейке данных пика.
Оsccal - представляет собой 16-ти ричное значение калибровки внутреннего генератора МК, с помощью которого МК отчитывает время при выполнении своих программ…
При покупке микроконтроллера (МК) считайте с него данные и запишите константу на листочек или на микроконтроллер!
Это очень важно т.к. если удалите константу при следующем программировании, pic работать не будет либо будет, но не так как должен.
В МК старшего семейства константы нету, так, что не удивляйтесь.
На рисунке ниже показано место расположения этой константы:
Константа может не пригодится когда используется внешний кварц.
В процессе прошивки (когда нажали уже на кнопку "прошить") может (а может и не спросить) вылезти следущее сообщение (см. рис.ниже ), надо нажимать НЕТ. При использовании Icprog 1.06C (я ее использую) всегда спрашивает, заменить либо нет.
Когда вы загружаете прошивку в программу то в последней ячейке памяти выставляется "3FFF" т.к. в прошивке значение вашей константы не указано (она у каждого МК своя)!
Вот программа и спрашивает будете использовать константу "3FFF" или "3424".
Видео - как прошить PIC от начала до конца!
В микроконтроллерах PIC16F628, PIC16F628A, PIC16F630 константы нету, проверено на практике.
В PIC16F676 константа есть!
Видео о прошивке PIC16F676. В видео продемонстрирован бит защиты, прошивка с ним и без него.
При использовании внешнего кварца (или RC) константа ненужна, можно в таких схемах использовать pic в которых была утеряна константа!
Биты конфигурации:
WDT - сторожевой таймер
PWRT - задержка для стабилизации генератора при вкючении питания
MCLR - использовать вход внешнего сброса микроконтроллера (reset)
BODEN - задейств-ть сброс при снижении напр. питания
CP - защитить код программы от считывания
CPD - защитить содержимое EEPROM от считывания
При написании программы для МК, программист, прежде всего, выставляет бит защиты, далее программа (исходник) компилируется (обычно в расширение .HEX) и зашивается в МК, следовательно в отличии от AVR, выставлять биты конфигурации при прошивке pic-ов НЕ НАДО! В PIC предусмотрен бит защиты:
При прошивке микроконтроллера, если установить (включить) бит защиты , то при считывании данных (после прошивке) выдаст программа ошибку! В этом и заключается смысл бита защиты - невозможно передрать прошивку с микроконтроллера. Эта функция очень удобна для программистов. Добустим Вы написали прошивку и решили другим продавать ее, но если Вы продатите просто прошивку HEX то на следующий день она облетит весь интернет и Ваши авторские права будут нарушены, но а если Вы зашьете в ПИК прошивку и поставите бит защиты, то больше никто не сможет скопировать прошивку!
На рисунке ниже показан бит защиты и ошибка которая выскакивает после прошивки:
Если после прошивки, с использованием бита защиты, считать данные с МК то вот, что получится:
Код Защиты
Особенности для модификаций с буквой "А" pic16F84A (статья дописывается)
Если утеряна константа, что делать?
Способ первый: пробывать поставить от другого МК константу или наугад :) , мы знаем, что все константы начинаются на 34 далее две цифры xx которые надо угадать.
Способ второй: порадует владельцев программатора PICKit 2, появилось приложение для восстановления калибровочной константы для PIC16F630/676, читать тут.
Способ третий: Восстановление OSSCAL для 12F629 & 12F675 (проверенный и простой )
С целью оказания помощи тем, кто потерял константу и хочет ее восстановить, оставляйте в комментариях тип МК и константу.
Для прошивки можно использовать бесплатную программу, наверное самая популярная - icprog, версия последняя 1,6В.
Скачать icprog106B + описание русс + драйвер для ХР (вообще и без него работает, но могут быть нюансы…)
Настраивается программа индивидуально к каждому программатору в отдельности!
а я купил мк а там все нули,это чего его в магазине уже прошили?
Nikolai4
# 3
если вы купили новый МК, НОВЫЙ ! то при считывании данных все значения будут 3FFF (кроме последней ячейки с константой) см. первый рис.
Intenso
# 4
у меня и последний 3FFF Мк PIC16F628A наугад теперь ставить а то выдаёт ошибку при программировании "Ошибка программирования Кода по адресу 000h"
Nikolai4
# 5
по поводу ошибки выше в статье есть, во общем пробуйте его в схеме, должен заработать, пробуйте и отпишите
Дрич
# 6
я купил новый , нажимаю читать всё и у меня вылезают все 0 или все 3fff константы нигде не видно. пробовал pic 16f628 и pic 16F84a. прогромматор самодельный, не факт что правильно работает,наверное это из за прогромматора, да?
программатор нерабочий
Nikolai4
# 7
если все 0 при первом (новый-чистый) считывании то программатор не рабочий или неправильно настроен.
при первом считывании должны все быть 3FFF
в 16f628 константы нету, про 16F84a не знаю.
Дрич
# 8
спасибо, а то я уже 2 программатора собрал и разворотил из за константы в 628-мом
Дрич
# 9
А что такое ОШИБКА ПРОГРАММИРОВАНИЯ КОДА по адресу 0000h ?
Nikolai4
# 10
ошибка программирования - не сталкивался
ошибка проверки - после прошивки программа проверяет как она прошила микроконтроллер…результат выдает,иногда даже после этой ошибки все работает
Дрич
# 11
А на что влияет задержка ввода вывода?
Nikolai4
# 12
на качественное программирование МК…
Rodjer
# 13
Сами проги расчитаны даже на самые "тормозные компы"… а задержка ввода - это грубо говоря подгон под Ваш комп. Сначало ставите МАКС. Если МК пишеться с ошибками понемногу уменьшаете… пока не будет нормально записываться.
"ОШИБКА ПРОГРАММИРОВАНИЯ КОДА по адресу 0000h ?" - причины такого сообщения:
-программатор не видит программу
-контроллер не может "связаться" программатором
-каюк контроллеру(сам с таким встречался,особенно с "простыми программаторами").
Я сам пользуюсь программой icprog, а программатор EXTRA-PIC. Кому надо могу выслать документацию.
Rodjer
# 14
кстати…без "драйвера для ХР" - не сказать, что будет всё работать… покрайней мере большинство контроллеров пишуться с ошибками. Хотя программатор этого не "видит" при проверке кода… Win98(например) и ХР - используют разные библиотеки управления портами. В общем в работе разница незаметна, но иногда сказывается....
Rodjer
# 15
а разве при стирании контроллера константа не восстанавливается? Если честно первый раз про такую проблему слышу… просто не сталкивался…
Nikolai4
# 16
не восстанавливается!!! все зависит от программы…но лучше перестраховатся и записать ее на листик бумаги
Sivik
# 17
контроллер pic16f628a прошитый с битом защиты CP, его возможно перепрошить другой прошивкой?
Nikolai4
# 18
CP - защищает pic от чтения данных, перепрошивать после такой защиты можно!
Sivik
# 19
Пытался собрать часы-термометр http://shemopay.do.am/publ/33-1-0-174 в прошивке есть бит защиты, после прошивки в пони читаю все 0000. Схема не работает. Контроллер перепрошить не получается. Сначала думал неисправная микросхема, в результате четыре одинаково не дышащих контроллера. Програматор исправен, прошил уже пару 628 с другими прошивками. Как вы думаете что-то можно сделать?
Nikolai4
# 20
Такая лажа - там стоит "Код защиты" см. рис в статье (добавил)
Nikolai4
# 21
Код защиты в этой прошивке и выставлен су....
Sivik
# 22
Так PIC прошитый с CP можно выбросить?
Sivik
# 23
Пытаюсь перепрошить PIC - программа IC-Prog 1.05D. Загружаю прошивку, процесс прошивки все как обычно, при проверке ошибка 0000F. Затем пытаюсь прочитать - все 3FFFF.
Nikolai4
# 24
про CP я уже говорил -все ок, перепрошивать можно, а вот "Защитный код" фото есть в статье там еще выделено красным квадратом и статью в которой упоминалось про "Защитный код" я тебе писал в личку. С "Защитный код" сам еще доконца не понял…
Я всегда при прошивке отключаю все защиты, чего и вам рекомендую!
Ошибка 0000F выплывает обычно при включенном СР
Дрич
# 25
купил Pic 16f628a-l/p за 68 рублей, потом нащёл другой ,на нём написанно Pic 16f628a-20/р, стоил он в 2 раза дороже.В чём у них раздница?