Форум » Программирование микроконтроллеров. » PICKit2: PKWarn0006 » Ответить

PICKit2: PKWarn0006

cerega: Всем Здравстыуйте! У меня такая проблема: Написал программу мультивибратора [more];************************************************************************************************* ; Файл генератора меандра с полупериодом 0,25 сек. ; ************************************************************************************************ LIST p=16F876 ; Установка типа микроконтроллера. __CONFIG 3731H ; Бит защиты выключен, WDT выключен, Debug - on, ; стандартный XT - генератор. ;************************************************************************************************* ; прописание имен регистров специального назаначкения. ;************************************************************************************************* Status equ 03h ; Регистр выбора банка. Intcon equ 0Bh ; Регистр прерываний. Pie1 equ 8Ch ; Регистр разрешения прерываний от периферийных модулей. Pie2 equ 8Dh ; Регистр разрешения прерываний от периферийных модулей. TrisA equ 05h ; Регистр выбора направления работы выводов порта A. PortA equ 05h ; Регистр управления защелками порта A. TrisB equ 06h ; Регистр выбора направления работы выводов порта В. PortB equ 06h ; Регистр управления защелками порта В. TrisC equ 07h ; Регистр выбора направления работы выводов порта C. PortC equ 07h ; Регистр управления защелками порта C. Adcon0 equ 1Fh ; Регистр модуля АЦП. ;************************************************************************************************* ; прописание имен регистров обшего назначения. ;************************************************************************************************* Reg_1 equ 7Dh ; \ Reg_2 equ 7Eh ; - Регистры констант для формирования задержки. Reg_3 equ 7Fh ; / ;************************************************************************************************* ; Определение битов регистров. ;************************************************************************************************* C equ 0 ; Флаг переноса-заема. F equ 1 ; Результат направить в регистр. PB5 equ 5 ; Пятый бит регистра PortB Z equ 2 ; Флаг нулевого результата. RP0 equ 5 ; Бит выбора банка. ;************************************************************************************************* ; Начало выполнения прграммы. ;************************************************************************************************* org 0 ; Начать выполнение программы с адреса 0 PC. goto START ; Переход в ПП Start. START movlw B'00000000' ; Записать константу 0 в аккумулятор (W). movwf Adcon0 ; Скопировать 0 из W в регистр Adcon0. Выкл. модуля АЦП. bsf Status,RP0 ; Переход в первый банк. movlw B'00000000' ; Записать константу 0 в аккумулятор (W). movwf TrisA ; Скопировать 0 из W в регистр TrisB. PortA - OUT movlw B'00000000' ; Записать константу 0 в аккумулятор (W). movwf TrisB ; Скопировать 0 из W в регистр TrisB. PortB - OUT movlw B'11111111' ; Записать константу 255 в аккумулятор (W). movwf TrisC ; Скопировать 0 из W в регистр TrisC. PortC - IN movlw B'00000000' ; Записать константу 0 в аккумулятор (W). movwf Intcon ; Скопировать 0 из W в регистр Intcon. Запрет всех прерываний. bcf Status,RP0 ; Переход в нулевой банк. ;************************************************************************************************** ; Формирование отрицательного полупериода. ;************************************************************************************************** Pause bcf PortB,PB5 ; Уснановка низкого уровня на выходе 5 бита PortB. movlw .93 movwf Reg_1 movlw .38 movwf Reg_2 movlw .11 movwf Reg_3 wr0 decfsz Reg_1, F goto wr0 decfsz Reg_2, F goto wr0 decfsz Reg_3, F goto wr0 nop nop ;************************************************************************************************** ; Формирование положительного полупериода. ;************************************************************************************************** bsf PortB,PB5 ; Установка высокого уровня на выходе 5 бита PortB. movlw .93 movwf Reg_1 movlw .38 movwf Reg_2 movlw .11 movwf Reg_3 wr1 decfsz Reg_1, F goto wr1 decfsz Reg_2, F goto wr1 decfsz Reg_3, F goto wr1 nop nop goto Pause ;****************************************************************************************************************** END[/more] Она в железе не работает. Но когда вхожу в debug mode после такого сообщения PKWarn0006: The local copy of program memory has been changed since the last program operation. Should PICkit 2 program the target (fix) before proceeding? Жму "ДА", Все работает. Потом Выхожу из debug mode, выключаю питание, включаю питание - не работает. Что не так? PS. программатор и отрадчик фирменный PICKit2. Плату использую из набора 28 pin demo board.

Ответов - 4

Алексей: cerega пишет: The local copy of program memory has been changed since the last program operation Это предупреждение сообщает, что текущие изменения программы не были зашиты в контроллер. А не работает похоже потому, что Вам нужно зашивать программу не отладчиком, а программатором. Т.е. в меню Debug поставить None а в меню Programmer поставить PicKit2. А если зашивать отладчиком, то и программу возможно запустить исключительно с помощью отладчика.

cerega: Пробовал зашивать прогой обслуживающей PICkit, без участия MPLab, сразу после прошивки, работает. Выключаю питание, включаю питание (через РК2) не работает. Жму кнопку READ или VERIFY, говорит что все ОК и сразу после окончания комманды начинает работать. Смотрел осцилографом тактовый генератор работает. Похоже что прога почему-то или/и где-то подвисает.

Алексей: Может она просто удерживает контроллер в состоянии сброса? Проверьте лог. уровень на MCLR. Если 0 то в состоянии сброса. Лично я пробовал только сразу после прошивки, сразу начинает работать. Выключать и включать питание не пробовал.


cerega: Чето какие то непонятки творятся, сейчас все работает. Походу проблема действительно была в не подтянутом MCLR. еще можно почитать здесьздесь



полная версия страницы