Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Программатор Extra Pic v2.0
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > Все остальные микроконтроллеры > PIC
gosenergo
Всем доброго дня, обращаюсь ко всем форумчанам за помощью. Написал программу для управления работой воздушного компрессора с однофазным двигателем (с пусковой обмоткой), все бы хорошо но никак не могу прошить PIC16F84А программатором Extra Pic v2.0 все время выскакивает ошибка

Вот такой вот программатор Нажмите для просмотра прикрепленного файла

Использую программу WinPic800.
Далее выкладываю все что должно Вам помочь в поиске моей ошибки.

Текст программы Нажмите для просмотра прикрепленного файла

Скрин ошибки Нажмите для просмотра прикрепленного файла

Убедительная просьба, если у кого-нибудь есть под рукой PIC16F84A попробуйте его прошить моими файлами, потому как может мой PIC неправильный, или программатор не работает, или программа тупит, или ... Вообщем задавайте вопросы буду отвечать. Это мой первый опыт в прошивке, и неудачный((( надеюсь на Вас.. Все заранее спасибо.
gosenergo
И еще, объясните пожалуйста - если даже в пик зальется программа без ошибок, как можно проверить залитое исходному тексту программы (имею ввиду до установки на плату устройства)?

А может быть что причина в напряжении питания? я подключаю программатор к аккумуляторной батарее напряжением 12,2 В. А на некоторых сайтах написано что напряжение питания должно быть от 14В и до ...? Может этого напряжения маловато?
Ruslan1
Цитата(gosenergo @ Apr 17 2011, 19:37) *
И еще, объясните пожалуйста - если даже в пик зальется программа без ошибок, как можно проверить залитое исходному тексту программы (имею ввиду до установки на плату устройства)?

старый добрый JDM... sm.gif
1.программатор точно работает и корректно связан с компьютером? Насколько я помню, WinPic имеет встроенные средства для диагностики и проверки программатора типа "включить линию 1" .... С их помощью можно в статике проверить доходят ли нужные сигналы до программатора. Это все делается при невставленном программируемом микроконтроллере!
2. питание подключили?
3. нужные лампочки в нужное время зажигаются на программаторе? PWR все время горит, а "VPP PROG" во время программирования?

Цитата(gosenergo @ Apr 17 2011, 19:37) *
И еще, объясните пожалуйста - если даже в пик зальется программа без ошибок, как можно проверить залитое исходному тексту программы (имею ввиду до установки на плату устройства)?

А может быть что причина в напряжении питания? я подключаю программатор к аккумуляторной батарее напряжением 12,2 В. А на некоторых сайтах написано что напряжение питания должно быть от 14В и до ...? Может этого напряжения маловато?

Классически как правило еще с однократок/ультрафиолеток 13 V на MCLR майкрочип рекомендовал, насколько я помню.

Даташит по программированию смотрели? это лучше, чем "некоторые сайты" sm.gif
все совпадает?
http://ww1.microchip.com/downloads/en/DeviceDoc/30277d.pdf
TABLE 5-1
VDDP Supply voltage during programming 4.5 5.0 5.5 V
VIHH High voltage on MCLR for Test mode entry 12 14.0 V
IDDP Supply current (from VDD) during program/verify 50 mA
gosenergo
Во общем проверил как вы говорили, действительно программа выдает ошибку связи с программатором при тесте ((( типа она его не видит. Программатор я подключаю через удлинитель COM-COM (паял сам, 100% правильно распаян), светодиод питания светится. Пробывал залить через программу PonyProg в итоге загорелся красный светодиод на 3-4 секунды и выдало ошибку по какому-то адресу. Как настроить программу WinPic800? есть ли описания ее на русском?
gosenergo
ПРоблема решена с помощью программы IC Prog ! Установил, выбрал контроллер и все ок. Админ - можно удалять тему.
atmicandr
Замена программной оболочки с WinPic800 на ICProg можно сказать уже давненько называется как "поменять часы на трусы", а посему вот Вам держите картинку для настройки на нужный Вам адаптер.
sargein
еще лучше попробовать программу picpgm, у меня под 7 виндой с ждм только она нормально заработала
atmicandr
Цитата(sargein @ Apr 19 2011, 11:25) *
еще лучше попробовать программу picpgm, у меня под 7 виндой с ждм только она нормально заработала

Да согласен с Вами. Но дело в том что она работает у кого как: на сайте VRTP замечаний ни у кого нет, а на сайте Радиокота довольно много замечаний о некорректной записи микросхем. Я же в свою очередь никаких дефектов в работе не обнаружил.
gosenergo
ВОт еще беда приключилась(( Прошить то прошил, но вот работать девайс как задумано и близко не хочет, в тексте программы видимых ошибок нет, а поведение контроллера на плате непонятно. По алгоритму программы задумано только в одном месте подача трехкратного сигнала (секунда сигнал, секунда пауза (и так три раза)), а у меня получается - подаю питание, слышен длительный сигнал сначала в тональности на 100% (зумер 5В), и потом без беззвучной паузы в половину тональности на 1-2 секунды, потом пауза, и так до бесконечности...

Может такое быть, что программа написана правильно, но PIC прошился некорректно?
Ruslan1
Цитата(gosenergo @ Apr 19 2011, 21:47) *
Может такое быть, что программа написана правильно, но PIC прошился некорректно?

Пожалуйста, возьмите за правило отталкиваться от постулата что виноваты ваши ручки. sm.gif
В данном случае скорее всего некорректно написана программа. На симуляторе в мплабе работает как задумано? если да, то тогда смотрите фьюзы, может вочдог неотключенный срабатывает или вообще задающий генератор некорректно задан.
Кстати, именно с фьюзами разные программаторы по-разному работают. некоторые вообще могут не читать их из программы (если вы их туда вообще поместили), а требовать онлайн ввод перед программированием.
А для того чтобы убедиться что прошилось то что хотели, в программаторе есть функция "Verify"
gosenergo
Цитата(Ruslan1 @ Apr 19 2011, 23:58) *
Кстати, именно с фьюзами разные программаторы по-разному работают. некоторые вообще могут не читать их из программы (если вы их туда вообще поместили), а требовать онлайн ввод перед программированием.


А что такое фьюзы ? laughing.gif
atmicandr
Цитата(gosenergo @ Apr 20 2011, 11:47) *
А что такое фьюзы ? laughing.gif

это галочки с помощью которых Вы устанавливаете конфигурацию микроконтроллера
sargein
Тут имеется ввиду правильно ли у вас задана конфигурация (вочдог отключен? правильно задан осциллятор и т.д.)

зы. И picpgm и icprog корректно считывают конфигурацию из текста программы
ззы. У меня ждм программатор почему то глючил, когда я писал программы на микрос, с хайтечем все ок
Ruslan1
Цитата(sargein @ Apr 20 2011, 09:14) *
Тут имеется ввиду правильно ли у вас задана конфигурация (вочдог отключен? правильно задан осциллятор и т.д.)

зы. И picpgm и icprog корректно считывают конфигурацию из текста программы
ззы. У меня ждм программатор почему то глючил, когда я писал программы на микрос, с хайтечем все ок

Собственно железяке все равно кто ей битики передает sm.gif
скорее глючил софт, подключенный к программатору. Опять же возможностей немного: либо некорректно считывались фьюзы из файла, либо вообще формат выходного файла компилятора(линкера) не соответствовал входному формату программы, к которой подключен программатор.
gosenergo
Начал поиск ошибки неработоспособности девайса с текста программы. И проверяя работу программы в симуляторе MPLAB 8.50 заметил такую вещь - в самом начале работы программы непонятно для меня почему, но значение аккумулятора WREG (SFR NAME) изменяется с 00, на FF, и так далее на уменьшение, хотя по тексту программы аккумулятор не используется. Посмотрите на скрины! ответе, это нормально? Скрины выкладываю в порядке исполнения команд.Нажмите для просмотра прикрепленного файла
Нажмите для просмотра прикрепленного файла
Нажмите для просмотра прикрепленного файла
Нажмите для просмотра прикрепленного файла
gosenergo
Народ!! на этом форуме есть толковые парни?? не молчите помогайте с проблемой! посмотрите в первом посте текст программы, я ошибок не нашел, а девайс не работает(( И еще ткните носом, где можно черпнуть информацию по тесту настроек программ программатора, я имею ввиду там где галочки в проге ставишь и смотришь на какую ножку в программаторе приходит сигнал (или что то там должно приходить)??
Ruslan1
Цитата(gosenergo @ Apr 23 2011, 01:21) *
Начал поиск ошибки неработоспособности девайса с текста программы. И проверяя работу программы в симуляторе MPLAB 8.50 заметил такую вещь - в самом начале работы программы непонятно для меня почему, но значение аккумулятора WREG (SFR NAME) изменяется с 00, на FF, и так далее на уменьшение, хотя по тексту программы аккумулятор не используется. Посмотрите на скрины! ответе, это нормально? Скрины выкладываю в порядке исполнения команд.

Неа, ненормально. бред какой-то. такое ощущение, что отладчик совсем что-то другое показывает. Поглядел ваш код в мплабе.

0. Первое правило(и на асме и на си): вы должны четко понимать, почему компилятор выдал предупреждение (warning). Норма- полное отсутствие варнингов на программе любой длины. В исключительных случаях они должны быть задокументированы (Типа "тут компилятор ругается на строку номер хх, но это нормально и вызваноо тем-то и тем-то")

1. варнинги такие, что их впору ошибками назвать:
Код
Warning[202] C:\MY_JOB\TEST\PIC\TURBO.ASM 73 : Argument out of range.  Least significant bits used.
Warning[202] C:\MY_JOB\TEST\PIC\TURBO.ASM 75 : Argument out of range.  Least significant bits used.
Warning[202] C:\MY_JOB\TEST\PIC\TURBO.ASM 89 : Argument out of range.  Least significant bits used.
Warning[202] C:\MY_JOB\TEST\PIC\TURBO.ASM 91 : Argument out of range.  Least significant bits used.
Warning[202] C:\MY_JOB\TEST\PIC\TURBO.ASM 108 : Argument out of range.  Least significant bits used.
Warning[202] C:\MY_JOB\TEST\PIC\TURBO.ASM 113 : Argument out of range.  Least significant bits used.
Warning[202] C:\MY_JOB\TEST\PIC\TURBO.ASM 115 : Argument out of range.  Least significant bits used.

Причина везде одинакова:
Код
zum0            movlw           255h          ;Записать константу 255 в аккумулятор (w).

если вы написали "h", то это 16-ричное число, а если хотите десятичное то советую .255 писать. А из записи 255h компилятор успешно загрузил 55h.
Точка перед числом укажет на ее десятичность. Кстати не советую на формат "по умолчанию" надеяться, лучше все-таки все держать под контролем.

2. советую смотреть отладку в окне View->Disassembly Listing. Там слева показано, во что именно ваш код был скомпилирован, подобные вышеприведенным ошибкам сразу видны становяться, например:
Код
   013    3054     MOVLW 0x54                     75:    zum1            movlw           254h          ;Записать константу 254 в аккумулятор (w).


пофиксил ваш код на эти ошибки, заодно и предположил что остальные константы тоже были в девичестве десятичными, из тож пофиксил.

3. Если применяете двоичную константу, то ее можно прямо в двоичном виде писать, вам удобнее а компилятору все равно. то есть строку
Код
        movlw           192h;Формирование на выводах RB5, RB6 логической 1.  Записать константу 192 (1100000) в аккумулятор (w).

предлагаю изменить на
Код
movlw           b'01100000'

4. У меня ничего похожего на ваше с аккумулятором не происходит. Ведет он себя как и должно хорошо воспитанному аккумулятору, меняется только согласно указаниям программы. Прикрепляю архив с проектом, может найдете где у вас что не так.(использовал MPLAB IDE 8.63)
Нажмите для просмотра прикрепленного файла
Конфиг у вас некорректный. Тут можно быстро посмотреть в мплабе: Configure-> Configuration bits.
Я вижу что "WDT disabled", а судя по тексту в коде вы его хотели включить.

Про конфиг можете в документации на контроллер посмотреть, в конце обычно есть посвященный этому раздел. Не найдете- спрашивайте.

P.S. Ну а может теперь работает? я дальше не смотрел..............
gosenergo
Цитата(Ruslan1 @ Apr 24 2011, 00:13) *
Конфиг у вас некорректный. Тут можно быстро посмотреть в мплабе: Configure-> Configuration bits.
Я вижу что "WDT disabled", а судя по тексту в коде вы его хотели включить.


Извините, а как Вы увидели что конфиг не корректный по тексту? У меня по задумке он должен быть отключен, и в Configuration bits в мплабе он тоже как отключенный значится.

За остальное, огромное спасибо..Ухожу осмысливать и менять значения на двоичные...

Кстати, что касается синтаксиса вот эти кавычки с двух сторон b'00100010' правильно набирать в английской раскладке одинарным нажатием?
Ruslan1
Цитата(gosenergo @ Apr 24 2011, 07:53) *
Извините, а как Вы увидели что конфиг не корректный по тексту? У меня по задумке он должен быть отключен, и в Configuration bits в мплабе он тоже как отключенный значится.

ну, у вас в комментариях в тексте программы написано:
Код
        __config        03ff1h         ;Установка битов конфигурации:
                    ;стандартный ХТ-генератор, WDT включен, бит защиты не установлен,
                    ;PWRT включен (1111 0101).

Я ж не телепат, у вас в тексте написано "WDT включен", или это комментарии для шпиенов, которые могут исходник украсть sm.gif
Цитата
За остальное, огромное спасибо..Ухожу осмысливать и менять значения на двоичные...

Огромное пожалуйста sm.gif Не меняйте все, используй те системы счисления, которые удобны именно вам именно в этом месте, компилятору все равно.
Цитата
Кстати, что касается синтаксиса вот эти кавычки с двух сторон b'00100010' правильно набирать в английской раскладке одинарным нажатием?

хм... не понял вопроса, наверное это может от редактора и настроек винды зависеть. Я нажимаю кнопку "э" в латинском регистре, получаю " ' "
Это просто текстовый файл, компилятору все равно как эти символы в файл попали.
gosenergo
Цитата(Ruslan1 @ Apr 24 2011, 13:56) *
Я ж не телепат, у вас в тексте написано "WDT включен", или это комментарии для шпиенов, которые могут исходник украсть sm.gif


да действительно было так написано((( но это ошибка в примечании.

Значит отчитываюсь: ранее я писал что зумер издавал двух тональный сигнал, так вот после замены всех значений в тексте программы на двоичные числа, этот баг пропал. Сейчас как задумано идут трехкратные одно тональные пик-пик-пик))) Как бы уже лучше, но теперь следующий возникает вопрос: при составление программы я подбирал временные интервалы по секундомеру встроенному в MPLAB, добился точного 3х секундного интервала, а вот на реальной плате эта выдержка составляет порядка 6-7 секунд, почему такой большой разброс получается?

Во общем можно подводить итоги, мои мучения закончились, все получилось все работает. Итак, на будущее, если вдруг кто-то задумает смастерить воздушный компрессор с однофазным конденсаторным двигателем и столкнется с проблемой автоматики работы, в части запуска двигателя, отключения и включения по давлению, обращайтесь. поделюсь схемой, печатной платой, текстом программы на PIC16F84A ну и т.д.

Всем большое спасибо кто не стоял в стороне и пытался помочь, особую благодарность выражаю форумчанину Ruslan1.

Админ, поправь пожалуйста всю ветку, убери что посчитаешь лишним...
Ruslan1
Цитата(gosenergo @ Apr 24 2011, 23:52) *
следующий возникает вопрос: при составление программы я подбирал временные интервалы по секундомеру встроенному в MPLAB, добился точного 3х секундного интервала, а вот на реальной плате эта выдержка составляет порядка 6-7 секунд, почему такой большой разброс получается?

в два раза-это серьезно. я так понимаю, кварц использовали, не RC-цепочку? тогда вообще нереально, на уровне микросекунд должно совпадать. Это ошибка или в тексте или в фьюзах или в отладке. Обязательно разберитесь где проблема.
в симуляторе для отладчика правильно частоту указывали (Debugger->settings)? 4 MHz?
фьюзы лучше на HS переключить, но это тонкости, должно работать и так.
Можете стать щупом осциллографа на 15-й вывод (если DIP-корпус) (OSC2/CLKOUT). Если задающий кварцевый генератор работает, то увидите синусоиду 4МГц наверное пару сотен милливольт. Вполне достаточно простого 20pF 1MOhm входа осциллографа, он эту частоту не задавит.

Если на все вопросы ответ "Да", то еще раз пройдитесь по тексту. Может, на втором-третьем-сотом проходе у вас что-то задумано изменять, вот оно и меняется.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.