Свежие обсуждения
Микроконтроллеры

Ошибка при записи МК.

1 6

Собрал программатор для LPT-порта. Пробую записать в память программ микроконтроллер PIC16F84A. Чтение нового МК идет нормально (3FFF везде), но запись из внешнего файла не производится. Взял, прочитал этот МК и опять же в него записал эти же нули. Прочитал (0000 везде). Пробовал записать любую другую готовую программу из HEX-файла под этот МК, но при записи в память программ выскакивает такая ошибка:
"В ячейку с адресом 0000 должно было быть записано число 2801. Проверка показала, что после записи в этой ячейке находится число 0000. Запись прервана."
То есть не пишет из файла. Ни память программ, ни буфер. Спотыкается на нулевом адресе почему-то. Собрал простенький программатор через COM-порт. Та же ошибка при записи. Что посоветуете, чтобы можно было записывать МК? Или в чем причина может быть?

 

какой софт для программатора используешь? моя рекомендация для пика используй ICProg: http://ddrservice.info/download/Software/programmators/icprog105E.zip.html либо WinPic800: http://ddrservice.info/download/Software/programmators/winpic800.zip.html, второй рабатает даже пошустрее. Теперь по поводу железа: о простеньких программаторах на COM забудь, либо лепи с преобразователем уровня на MAX232, иначе работоспособность сильно зависит от приемо-передатчика на материнской плате компа, особенно это касаемся ноутов. Проверь свою схему для LPT-порта в ICProge, там в настройках железа есть закладка - тест программатора, вероятней всего на какой то из сигнальных линий идет инверсия сигнала.

 

vicselc: Что посоветуете, чтобы можно было записывать МК?

Проверить соответствие уровней напряжения (Uпит. и Uпрог.), а также сигналов Clock и Data непосредственно при записи на ножках м/к при помощи осциллографа.

 

А может все проще? Вы перед записью МК стирали?
Правда 84А у меня писался "поверх" старой прошивки, а вот 628А нужно было обязательно вначале стирать, перед началом записи.

 

vicselc: записи в этой ячейке находится число 0000. Бит защиты при прошивке случайно не установился? Может мк зашит но т.к. стоит защита от чтения памяти программ поэтому верификация не проходит?

Сергей К: а вот 628А нужно было обязательно вначале стирать Не всегда, у меня в 95% (попыток) шьется поверх старой прошивки, иногда только взбрыкивает

 

В новом Пике были при чтении адреса 3FFF. Программой ICProg стер вначале все (Команды-Стереть микросхему). Проврка стираняя показала, что стерто (Команды-Проверка стирания). Тест из ICProg (Настройки-Тест программатора) тоже проходит (схема такая, что по светодиодам видно прохождение сигналов, доработанная схема программатора взята з http://www.pic16f84.narod.ru/pechat6.htm). В тесте при вкл\выкл опций светодиоды тоже вкл\выкл. Процесс записи из файла также виден по миганию светодиодов, но в конце все равно выскакивает "Ошибка проверки по адресу 000h!" и ничего не записывается.
Осциллографа для отслеживания прохождения сигналов нет. Может что мультиметром можно померять?

 

а Вы другой МК пробовали???

 

vicselc: но в конце все равно выскакивает "Ошибка проверки по адресу 000h!" и ничего не записывается.

Это говорит о том, что именно ничего не записывается.

vicselc: Может что мультиметром можно померять?

Можно и мультиметром. Uпит и Uпрог это обычные уровни +5В и +12В(не менее для Uпрог., это условие должно выполняться обязательно), строб и данные покажут какие-либо уровни в пределах менее 5 Вольт, которые должны меняться при подаче команды "запись".

Сергей К: нужно было обязательно вначале стирать, перед началом записи.

Это необходимо обязательно делать перед каждой операцией записи, иначе потом можно долго думать, почему программа глючит.

 

У меня была такая-же ситуация. ( Pbrenner ) Прежде чем загружать коды в микоконтроллер программа выпльняет полное стирание памяти в пике. Это процедура называется BULK ERASE. Несмотря на то, что запись может произходить в пределах 2.5В до 6, 7 В, булк ирез требует напряжение питания от 4.5 до 5.5 В. Источник питание может быть не точно 5В. Из этого вычитается падение напряжение на переключающим элементе, скажем транзистора.
Решение: измерить 5В на цоколе микроконтроллера. Эсли наприжение менше чем 4.5В следует поднять напряжение источника питания на необходимуюу величину.
Например можно поставить диод в цепь заземлении стабилизатора. Однако напряжение принтер интерфейса не дольжен превышать 5.2 В
Йозеф

 

vicselc
выложи скриншот ICProg- Настройки-Программатор или тупо стань тестером непосредственно на ноги контроллера и в режиме тест программатора проконтролируй наличие высокого уровня при наличии галочки в соотв графе. светодиоды лишь индицируют наличие напряжения +5В, напряжения программирования и напряжения питания +5В на контроллере, но этого мало - необходимо соответствие линий CLK,DATA IN, DATA OUT.