При программировании не забывайте про константу(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 # 1
 
 
pic12F675 - 3438 или 3440

pic12F629 - 3488 или 343C



   
Дрич # 2
 
 
а я купил мк а там все нули,это чего его в магазине уже прошили?


   
Nikolai4 # 3
 
 
если вы купили новый МК, НОВЫЙ ! то при считывании данных все значения будут 3FFF (кроме последней ячейки с константой) см. первый рис.


   
Intenso # 4
 
 
у меня и последний 3FFF Мк PIC16F628A наугад теперь ставить а то выдаёт ошибку при программировании "Ошибка программирования Кода по адресу 000h"


   
Nikolai4 # 5
 
 
по поводу ошибки выше в статье есть, во общем пробуйте его в схеме, должен заработать, пробуйте и отпишите


   
Дрич # 6
 
 
я купил новый , нажимаю читать всё и у меня вылезают все 0 или все 3fff константы нигде не видно. пробовал pic 16f628 и pic 16F84a. прогромматор самодельный, не факт что правильно работает,наверное это из за прогромматора, да? wacko

программатор нерабочий



   
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(например) и ХР - используют разные библиотеки управления портами. В общем в работе разница незаметна, но иногда сказывается.... cry


   
Rodjer # 15
 
 
а разве при стирании контроллера константа не восстанавливается? Если честно первый раз про такую проблему слышу… просто не сталкивался… eye


   
Nikolai4 # 16
 
 
не восстанавливается!!! все зависит от программы…но лучше перестраховатся и записать ее на листик бумаги wink


   
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 раза дороже.В чём у них раздница?


   
Nikolai4 # 26
 
 


   
megavolt85 # 27
 
 
Nikolai4 респект и уважуха +1000000. Шил впервые микроконтролёр и естественно затёр OSCAL. pic12f675 ,значение 3438 решило мою проблему smile smile smile


   
Дрич # 28
 
 
Что такое ОСЦИЛЛЯТОР?


   
Дрич # 30
 
 
ясно


Обновления

Сообщения ФорумаОтветов
3D Модели для Авто0
Бакометр 2335
Touch Start-Stop Engine.587
Кодграберр17
Исправляем AVR фьюзы при помощ …109
Бакометр - измеритель остатка…4
IR конструктор на PIC12F62977
Универсальное зарядное устройство103
бaкoмeтр1974
Двунаправленный автомобильный…2
Программатор GENIUS G8401
Светодиодный тахометр34
Индикаторы ГРИ ИН1 - ИН141
Multiprog1
Управляющая программа LED CUB959
Универсальное зарядное устройство9
Изготовлю печатные платы29
Простой автоматический выключа…25