Форум » Для начинающих. » Помогите новичку запрограммировать PIC16F877 » Ответить

Помогите новичку запрограммировать PIC16F877

Pahanovna: На днях купил микроконтроллер PIC16F877A-I/P, пытаюсь научится его программировать. Но ничего не получается. Помогите. Я собрал вот эту схему программатора: http://www.pcports.ru/articles/pic4.php Взял вот эту программу (из http://www.pcports.ru/articles/picASM1.php) [more];================================================ ; Настройка и конфигурация микроконтроллера ;================================================ LIST p=16f877 __CONFIG H'3f72' ; тройка в конце, чтобы включить генератор RC ; Инициализация регистров специального назначения INTCON equ 0x0B ; регистр прерываний STATUS equ 0x03 ; флаги состояния АЛУ PORTB equ 0x06 TRISB equ 0x86 ; направление выводов порта В ; Инициализация констант RP0 equ 0x05 ; вообще-то тут прот А должен быть ; Начало программы ORG 0x00 goto Start ORG 0x05 Start: clrf INTCON ; запрещаем все прерывания ; Настраиваем линии порта PORTB на выход bsf STATUS, RP0 ; переходим в банк 1 movlw b'00000000' ;помещаем в аккумулятор число 0 movwf TRISB ;устанавливаем линии порта PortB на выход bcf STATUS, RP0 ;переходив в банк 0 ; Закончили настройку movlw .255 ; записываем в акк число 255 movwf PORTB ; перемещаем число из акка в регистр DelL Loop: nop ; ничего не делаем goto Loop ; переходим на луп End ;================================================ ; Конец программы ;================================================[/more] Схему откомпилировал в MPLABе, затем пытаюсь её прошить в МК с помощью PonyProg2000. Программа вроде прошивается, но в самом конце прошивки, уже после проверки, выдаёт ошибку "Write Failed". Как исправить эту ошибку? После такой неудачной прошивки всё-таки пытаюсь запустить МК. Собираю схему, как здесь: http://www.pcports.ru/articles/img/pic/pic6/7.gif только резонатора у меня нету, поэтому два конденсатора и резонатор выбрасываю, а вместо них на ножку 13 цепляю резистор 18кОм к +5В, и конденсатор 100 пФ на общий провод (выбирал от фонаря). На ножке 14 ничего. Итог: ожидаемого горения светодиодов я не получил. Но на ножке 13 есть пилообразное напряжение, а на ножке 14 - прямоугольное напряжение вдвое меньшей частоты, чем на ножке 13. Работает ведь генератор? Я так понимаю, микроконтроллер работает, но "без программы", на заводских установках, так? Вопросы: Как прошить МК без ошибок? Как проверить работоспособность самого МК? Не сгорел ли?

Ответов - 66, стр: 1 2 All

MAZ: Я никогда не пользовался пони. Даже представления не имею. Могу посоветовать воспользоваться ICprog. Во вторых, У Вас контроллер 877А, а в программе 877. Это далеко не одно и тоже.

Pahanovna: Ну я скачал новую версию пони - там есть 877А Ладно, пойду скачаю айсипрог.

MAZ: У Вас в шапке, что записано? LIST p=16f877 Конфигурацию лучше записать в другом виде, чтобы не путаться. Как в шаблоне MPLAB, текстовый вариант.


Pahanovna: Это сейчас важно? Какая разница, как писать - у меня не программируется ничего! А так неохота покупать дорогущий программатор. Вон на днях попробую новую схему собрать. Кто знает простую ПРОВЕРЕННУЮ схему программатора, подключаемого через СОМ-порт? А микроконтроллер PIC16F877A можно перепрограммировать много раз? Он не одноразовый? И вообще, как проверить рабочий микроконтроллер или нет? А то может я его спалил уже, а теперь грешу на программатор...

MAZ: Я думаю все важно. Особенно когда программируете другой контроллер. Можно и на двух транзисторах за программировать. Главное все сделать аккуратно и спокойно.

Вячеслав: Использую программатор EXTRA-PIC 3 года, безотказно с COM -портом (отключенным буфером у PC). СОВЕТ. Поставь симулятор Prontes на PC и поработай со связкой MPLAB - Proteus. Зажги программно первую лампочку, исправь первоначальные ошибки. ЗАТЕМ покупай (собирай) железо. Такой подход мне кажется короче и дешевле. И уверенность появляется. И варианты устройств начального периода освоения не связаны с суетой "монтировать - демонтировать".

Bigor: Вячеслав пишет: Кто знает простую ПРОВЕРЕННУЮ схему программатора, подключаемого через СОМ-порт? Сравните свою схему программатора со схемой из приложения к самоучителю (http://ikarab.narod.ru/Obsluga.rar). Эта схема проверена неоднократно и является, как любит говорить КЕА, "матью" для схемы программатора из Вашей ссылки. Pahanovna пишет: http://www.pcports.ru/articles/pic4.php MAZ пишет: У Вас в шапке, что записано? LIST p=16f877 Конфигурацию лучше записать в другом виде, чтобы не путаться. Как в шаблоне MPLAB, текстовый вариант. А а этом Александр (MAZ абсолютно прав. Тем более Вы изменили тип генератора с XT на RC. В прикидку и слово конфигурации должно быть иное, чем в исходной программе (скорее всего 3F7Bh - это не "текстовый вариант"). Проверьте его внимательно. MAZ пишет: Во вторых, У Вас контроллер 877А, а в программе 877. Это далеко не одно и тоже. Это тоже важно. Вашу программу надо адаптировать под 877А. Pahanovna пишет: А микроконтроллер PIC16F877A можно перепрограммировать много раз? Он не одноразовый? Не "одноразовый", а многократно программируемый (так называемый FLASH), о чем говорит буква F в маркировке.

Вячеслав: Не писал "кто знает ПРОВЕРЕННУЮ ....через COM- порт". Просто не удачно вставил цитату. Имею комплект программатор- отладчик под COM- порт, однако РС уже такого порта не имеет. Пришлось доращивать, благо "материнка" позволила. Надо переходить отладчиком на USB, но пока в домашних условиях изготовить такое устройство мне кажется не реальным. Два контроллера (PIC16 и PIC18 ) для отладчика - многовато мне кажется?

Вячеслав: Стоит познакомиться с командой- вставкой файла (#include p16f877a.inc). Да и сам файл p16f877a.inc найти, распечатать, рассмотреть и держать под рукой для сверки действий с указанным процессором.

MAZ: Вячеслав пишет: Надо переходить отладчиком на USB, но пока в домашних условиях изготовить такое устройство мне кажется не реальным. А самодельный пиккит2, вполне реально. В обмене есть.

Photographer: Вячеслав пишет: Стоит познакомиться с командой- вставкой файла (#include p16f877a.inc).После строчки LIST пишите строчку include: [pre2] LIST p=16F877A ; #INCLUDE <P16F877A.INC> ; [/pre2] Я файл копирую из папки C:\Program Files\Microchip\MPASM Suite\ в папку текущего проекта. По необходимости, заглядываю туда. Есть шаблоны в C:\Program Files\Microchip\MPASM Suite\Template\Code

Dmitry Dubrovenko: Bigor пишет: программу надо адаптировать под 877АКак-то, помню, проделывал данную операцию. "Операция" заключалась в принудительном отключении модуля компараторов, хотя "по умолчанию", он и так должен быть отключен. Pahanovna пишет: Кто знает простую ПРОВЕРЕННУЮ схему программатора, подключаемого через СОМ-порт?Здесь есть целый раздел "Программирование микроконтроллеров". Посмотрите там. Если речь про КОМ-порт, то рекомендую Extra-PIC+. А про глючность JDM'а уже столько раз везде написанно (на самом деле, не глючность, а особенность построения схемы "на грани фола").

igor: Pahanovna пишет: Схему откомпилировал в MPLABе, затем пытаюсь её прошить в МК с помощью PonyProg2000. Программа вроде прошивается, но в самом конце прошивки, уже после проверки, выдаёт ошибку "Write Failed". Как исправить эту ошибку? Проверкой программатора и правильной его настройкой. Зайдите сюда, скачайте по ссылке Приложения (2,5 Мб., формат PDF) архив. Там найдёте файл obsluga.pdf. В нём подробно расписано как настроить Ваш программатор. Первое впечатление такое - судя по тому, как Вы без всяких вопросов, самостоятельно перешли на RC-генератор, что для абсолютного новичка является очень трудным делом - Вы не новичок. Отличаются PIC16F87xA от PIC16F87x в основном словом конфигурации и наличием компаратора у "А", который по умолчанию отключен.

Bigor: igor, я написал практически тоже в посте N: 574 .

igor: Да действительно. Как говорится - повторение мать учения.

Sergey Roslik: Pahanovna пишет: Это сейчас важно? Какая разница, как писать - у меня не программируется ничего! Да, ВАЖНО, Вы за советом пришли или какая разница? Кофеварка тоже не программируется, поставьте литер А, будет программироваться

Pahanovna: О! Спасибо за множество ответов! Сейчас попробую что-то сделать. Итак, первое, что я сейчас сделаю, это добавлю в строчку LIST p=16F877 буковку A и ещё допишу строчку #include, чтобы получилось как сказал Photographer: LIST p=16F877A ; #INCLUDE <P16F877A.INC> ; igor пишет:Первое впечатление такое - судя по тому, как Вы без всяких вопросов, самостоятельно перешли на RC-генератор, что для абсолютного новичка является очень трудным делом - Вы не новичок. Нет, я как раз новичок. Да, на прошлом курсе нам преподавали курс программирования микроконтроллеров. Но только в теории. В результате - в голове куча непонятных команд и абсолютно никакого представления, как это реализуется на практике. А вообще, не так это и сложно переключиться на RC-генератор. А всё было так: увидел я схему готового устройства и ужаснулся: я ведь не купил кварц! Что делать? Звонок другу - и он рассказал, что в МК есть внутренний генератор. Дальше - полчаса листания взад-вперёд даташита, и вот оно! Найдено некое мифическое слово конфигурации по несуществующему адресу 2007, в котором прописываются установки этого самого генератора. Ну и (кокой облом!) выяснилось, что внутреннего генератора нету, а надо вешать RC-цепочку. Итак, возвращаться на три года назад, в 2007 год, очень не хотелось, поэтому я полез искать слово конфигурации в примере программы, для которого эта схема и делалась. Радовало то, что генератор уже менялся в программе с RC (по умолчанию) на кварцевый. Так что, после нескольких десятков минут тупого созерцания программы, было замечено слово __CONFIG H'3F73'. Ну а дальше не составило особого труда догадаться, что это шестнадцатиричное число, разложить его тупым виндовским калькулятором на двоичное и поменять нужный бит. Кстати, недавно где-то видел прогу для винды - самодельный калькулятор с тремя полями, который переводит числа между двоичной, десятиричной и 16ричной системами. Пожалуйста, помогите найти!!!

Pahanovna: Мда... Результат, естественно, нулевой. Значит надо проверять схему программатора. Ну или переделать её совсем. Но я не успею этого сейчас сделать. А начинать чтобы не закончить очень не хочется. Эх... До встречи в следующий раз :)

Pahanovna: У меня всё заработало!!! Хотя всё - это громко сказано... Что я для этого сделал? Да всего лишь пошел на радиорынок и купил новый микроконтроллер PIC12F675. Схему программатора я не переделывал, а только вынул предыдущий МК на 40 ножек, и вставил новый на 8 ножек. Ну и провода подвёл к соответствующим ножкам. Правда ПониПрог не захотел программировать новый МК. У него в списке такого не было. Пришлось разбираться с АйСиПрог'ом. Но ничего, разобрался и сделал. Вот, сумел зажечь светодиод на одной из ножек. Теперь передо мной открывается огромный мир микроконтроллеров :D И калькулятор я тот нашел. Правда он недоделанный оказался - не работает с NumPad-клавишами (ну цифры, которые справа на клавиатуре). Но спасибо автору и на этом уже. Но теперь один важный вопрос: а что же мне делать с той сороконожкой, за которую я сорок гривен отдал? Я имею в виду PIC16F877A. Почему он не программируется? Его можно как-то проверить, рабочий он или нет? Может он сдох? И желательно без варианта "пойти купить ещё один такой же и попытаться прошить его". До этого я и сам как-нибудь додумаюсь. Вот только не один продавец не продаст мне его так, чтобы можно было потом вернуть, ели не заработают. Все скажут: а это у тебя руки кривые, а не МК дохлый!

wws63: Если МК не программируется, то проверить его можно только на другом программаторе, который этот тип МК шьёт без проблем. Ищите в своём городе радиолюбителей и просите их проверить МК [img src=/gif/smk/sm12.gif]

DerSpiwak: Pahanovna пишет: а что же мне делать с той сороконожкой, за которую я сорок гривен отдал? Можно поставить прогу Winpic800 этот прошивальщик определяет какой МК подключен, если не увидит 877A, то, вероятно он дохлый.

wws63: DerSpiwak пишет: если не увидит 877A, то, вероятно он дохлый. Бывает так, что вылетает автомат программирования, а тип МК определяется.

Evgeny Korabelnikov: А может быть дело в том, что 877-й имеет 2 вывода Vdd и 2 вывода Vss ?

Pahanovna: А я и подключал питание к четырём ножкам. И в схеме сразу было указано, что подвести плюс к двум ножкам, и минус тоже к двум. Хотя, если подключить +5В только к одной ноге, то на второй тоже будет +5В. Ну тогда попробую у однокурсника на покупном программаторе прошить.

AleksScrewdriver: Pahanovna, запрограммировать тебе поможет это программатор. Проверено, работает надежно!

Pahanovna: AleksScrewdriver пишет:Pahanovna, запрограммировать тебе поможет это программатор. Проверено, работает надежно! Это вы о чём? Да поможет тебе Великий Программатор! Да запрограммируются все микросхемы твои! В общем, я ничего не понял, что вы хотели сказать. :)

ОКТОГЕН: блин вот все всегда думают, что сломан пик или любая другая вещь но только не ошибка самого изобретателя. более чательно просмотрите схему. чаще всего 97% неудач это какойнть косячёк про который и не подумаешь даже. кстате не знаю как в пони, а вот в ICPROG105D для прошивки PIC16F877A нужно выставить в настройках галочку включить запись блоками.( хотя у работает и с галочкой и без) а вообще прошейте пик а потом считайте и сравните прошивку она одинаковая или нет. если она не совподает то ищите косяк в программаторе пик трудно сжечь даже не правильным втыканием его в панельку итд.

Pahanovna: ОКТОГЕН пишет: блин вот все всегда думают, что сломан пик или любая другая вещь но только не ошибка самого изобретателя просто пойти и купить новый пик гораздо проще, чем сидеть и в двадцать первый раз пересматривать схему, даже не зная где искать ошибку. И вот у меня опять всё подохло! Я навешал на выходы пика светодиоды и после этого больше не могу его запрограммировать. Вылазит то ошибка программирования кода по адресу 0000h, то ошибка чтения кода по адресу 0000h. А если просто считывать микросхему, то считываются одни только FFFF везде. Вот что это может быть? Схему я проверил. Да и не менял я её. Может такое быть, что исчерпался ресурс записи во флеш-память микросхемы? Слышал, что она от частой записи дохнет. Хотя флешка у меня подохла за четыре-пять лет использования. А пик этот я прошивал ну раз двадцать от силы.

Pahanovna: "навешал светодиоды" - имеется в виду, что раньше у меня только один светодиод был подключён к пятой ножке (PIC12F675), и я его более-менее успешно программировал. Ну были там всякие бока... не мог заставить его мигать. Получалось только или включить его или выключить. Ну а потом я решил расширить поле деятельности и нацепил ещё один светодиод к ножке семь. Запрограммировалось без проблем, хотя программа заработала неправильно. А дальше этого я подключил ещё один светодиод к шестой ножке. И после этого уже не могу записать прогу в МК, хотя светодиоды давно уже выкинул.

Evgeny Korabelnikov: У PIC12F675, 6-я и 7-я ноги используются при "прошивке". Те "симптомы", о которых Вы говорите, возможны тогда, когда GP0 и/или GP1 "спалены" превышением предельно допустимого тока (он не должен быть более 25 ма). Например, светодиоды подключались без гасящих резисторов (ом эдак на 470). Если это так, то ПИК можно выбрасывать и покупать новый.

ОКТОГЕН: 0000h эта ошибка караз из за программатора чтото неконтачит или нетак, но так как PIC12F675 нормально программируется, а алгаритм их програмирования пачти одинаковый, то тут если дорожки подходят к соответствуемым выводам то скарей всего это пик 16ф877 умер. я свой пик 876А прошивал 1000 раз а то и более и всё хорошоо с ним.

AleksScrewdriver: Pahanovna, прошу прощения! Почему-то инет глючит. Вот ссылка на программтор http://www.pirpk.narod.ru/ddssite/dshglw.htm О нем уже упоминал Дмитрий Дубровенко. Я сам собирал по схеме автора программатор - работает превосходно!

NE51S: Приобрел PICkit 2 и забыл о глюках при прошивках. До этого много всяких программаторов перепробовал, лучше всего работал "Программатор на базе Extra-PIC" из Радио №8 за 2007г. А вот PICkit 2 даже AVR научили шить.

Алексей: NE51S пишет: А вот PICkit 2 даже AVR научили шить. Когда это??? Поподробнее можно?

Dmitry Dubrovenko: Алексей пишет: Когда это??? Поподробнее можно?Да, Лёха, есть такое. На форуме Майкрочипа читал. Там что-то не всё так просто, какие-то "танцы с бубном". Поэтому и не вникал особо, ибо мой прекрасно программирует без всяких "бубнов". NE51S пишет: "Программатор на базе Extra-PIC" из Радио №8 за 2007гТам только первая часть, с в/у ссылки.

Pahanovna: Ладно, господа, всем спасибо, все свободны :-) Я плюнул на всё и купил себе PICkit 2. Теперь всё программируется без проблем. И даже смог вылечить те два контроллера, которые самодельным программатором запорол. Вот только сороконожку PIC16F877A ещё не пробовал прошивать. Но, скорее всего, и с ним проблем не будет. Но вот какая беда: в дебаггере MPLAB SIM в окне Watch невозможно добавлять свои переменные. Точнее добавить-то их можно, но только путём прописывания адреса. А название туда вписать никак не получается. Хотя у друга всё работает. Как это вылечить? ПыСы: вот скриншот: http://radikal.ua/data/upload/ba193/49112/2757051f00.jpg

Evgeny Korabelnikov: Самый простой вариант: скопируйте настройки у своего друга.

MAZ: Pahanovna пишет: Ладно, господа, всем спасибо, все свободны : Так свободны или нет? Определитесь, пожалуйста.

Ewgen: Оригинально Вы проект назвали.

Sergey Roslik: Pahanovna пишет: Но вот какая беда: в дебаггере MPLAB SIM в окне Watch невозможно добавлять свои переменные. Точнее добавить-то их можно, но только путём прописывания адреса. А название туда вписать никак не получается. Хотя у друга всё работает. Как это вылечить? ПыСы: вот скриншот: http://radikal.ua/data/upload/ba193/49112/2757051f00.jpg А компиляция проекта хоть один раз проходила успешно?



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