Форум » Программирование микроконтроллеров. » Проблема программирования pic12f629 » Ответить

Проблема программирования pic12f629

zver: после 2х раз программирования (ic-prog) мк не читается и не записываеться(но при этом он работает по последней прошивке). По поводу количества попыток перезаписи информации не встречал. В чем может быть проблема? калибровочные константы известны. Пробовал на 2х пиках(((

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

Deputat: А что за программатор, он точно в порядке?

dosikus: Попробуй просто стереть, когда в мплаб я стал прошивать с конфигурацией где выставлен внутренний генератор и MCLR отключен. Она ругнулась что могут быть проблемы на что я наплевал и прошил. После этого у мя не стало не читать не писать пик. Зато после полного стирания все востановилось....

zver: программатор из самоучителя


Deputat: Попробуйте его стереть с помощью программы F_Prog.

Deputat: Внимательно почитайте в этой ветке Тему "Неожиданная проблема".

Dmitry Dubrovenko: zver пишет: программатор из самоучителя А я советую почитать тему про ExtraPIC.

igor: Программатор из Самоучителя работает великолепно. Надо только напряжение +5 вольт, повысить до 5,2...5,5 вольта.

Ted: Столкнулся с проблемой программирования 12f629 - IC PROG показывал ошибку. Случайно нашел в Интернете программу WinPic800 (бесплатная), попробовал - нормально, рекомендую.

zver: Не могу настроить WinPic800 под данный программатор(( не читает и не пишет( настройка следующая

zver: в ic prog работает нормально со следующими настройками

Alberto: zver пишет: Не могу настроить WinPic800 попробуйте "поиграться настройками "Use Vpp2", "Use Vdd" и "Use Mclr". Именно так я заставил работать свой ProPIC2. А вообще-то для программаторов и сопутствующего софта есть отдельная ветка.

zver: переключился на com1 начал работать с pi16f628a, а с pic12f629 так и не хочет

Ted: Неделю назад порекомендовал Win Pic 800...с разбегу плюхнулся в ту же лужу: PIC12F629 - симптомы описаны в первом посте этой ветки. Поозирался, почитал, прикинул...ответа так и не нашел. Кто-нибудь знает что происходит в ПИКе при программировании?Точнее, что должно происходить? И что об этом говорит разработчик? Именно в режиме внутреннего генератора? ...четко с раскладом по времени. ...Я потому спрашиваю что в английском не силен( с 5-го класса в школе и 2 курса в институте. :) (Эт я к Алберто обращаюсь. :) ). Что заметил - в программе на GP0 стояло тупо bsf GPIO,0 ( ну захотелось мне так)...и что, это важно? А мож и важно, если генератор работает себе потихоньку...Пытался стереть...или не стирается или микруха умерла...Ребят, ну в самом деле,не паять же другой программатор?!! Важно, возможно, другое: после всех предустановок и clrf CPIO я не поленился и ввел паузу секунд на 5, то есть 5 секунд после включения питания она ва-а-а-аще! ничего не делает Можно успеть запрограммировать! Из 6-ти микрух 2 согласились вернуться в ту область где я что-то о них знаю.:)Видел фрагментарные объяснения...каждое частично правильно...нет полного ... кто?!! :))

Alberto: Ted пишет: к Алберто обращаюсь зайдите сюда: http://www.microchip.ru/phorum/read.php?f=2&i=17632&t=17632 там есть про доработку JDM-программатора и про то почему не шьет. не паять же другой программатор?!! у меня ProPIC2 в паре c WinPIC800 уже года четыре работают без проблем. Если железо "кривое", то что делать? P.S. А с английским у меня тоже не так гладко, читаю, а что делать (прямо как у Чернышевского)? Жизнь заставляет. Если хотите что-то новое узнать, приходится учить.

RW1ZK: Как-то странно... Вот простая программа, тоже с работой от внутреннего генератора: [pre];*********************************************************************************************** ; Led.asm Программа мигания светодиодом на GP4 ;*********************************************************************************************** list p=12F629 ; Используется PIC12F629 #include <P12f629.inc> ; Header files errorlevel -302 ; Отк. Message 302 __CONFIG _CP_OFF & _CPD_OFF & _BODEN_OFF & _MCLRE_OFF & _WDT_OFF & _PWRTE_ON & _INTRC_OSC_NOCLKOUT ;*********************************************************************************************** CBLOCK 20H ; Temp Temp1 Temp2 ENDC ;*********************************************************************************************** #define LED GPIO, 4 ; Debug LED ;*********************************************************************************************** ORG 0x000 ; Вектор сброса процессора, начальный адрес call 3FFH ; Считать калибровочную константу bsf STATUS, RP0 ; 1-й банк movwf OSCCAL ; Загрузить в OSCCAL bcf STATUS, RP0 ; 0-й банк ;*********************************************************************************************** INIT movlw .7 ; Компаратор movwf CMCON ; выключен bsf STATUS, RP0 ; 1-й банк clrf VRCON ; Отключить ИОН clrf TRISIO ; GP0,GP1,GP2,GP4,GP5 на выход bcf STATUS, RP0 ; 0-й банк clrf GPIO ; Очистили вых. защёлки GPIO ;*********************************************************************************************** NEW call PAUSE bsf LED call PAUSE bcf LED goto NEW ;*********************************************************************************************** PAUSE movlw .85 movwf Temp movlw .138 movwf Temp1 movlw .3 movwf Temp2 wr decfsz Temp, f goto wr decfsz Temp1, f goto wr decfsz Temp2, f goto wr nop nop return ;*********************************************************************************************** END[/pre] Никаких проблем с программированием, перепрограммированием нет. Прошиваю в IC-Prog с помощью программатора ExtraPic (EW3CS).

Alberto: RW1ZK пишет: Как-то странно... Alberto пишет: Если железо "кривое", то ничего странного нет. Но если у человека есть проблема, значит она есть. Он же не просто от нечего делать пишет. Вот я ему и посоветовал сходить на форум Микрочипа, где подобное обсуждалось именно к программатору JDM. Еще раз повторю: с хорошим зелезом и софтом - проблем нет.

RW1ZK: Alberto пишет: Он же не просто от нечего делать пишет. А я ведь и не говорил, что он постит от нечего делать. Проблема скорее всего в зелезе... Alberto пишет: хорошим зелезом Дмитрий Дубровенко уже рекомендовал почитать ветку. А я порекомендую собрать нормальный программатор и тогда не будет проблем.

Ted: В ссылке, данной Алберто, сказано, что должна быть задержка подачи +5в относительно +12-ти на несколько миллисекунд. "Несколько" - это сколько? 5? 50? 500? RW1ZK: "Вот простая программа..." - некорректно: GP4 не участвует в программировании. Плюс у Вас там стоит пауза перед запуском миганий. Попробуйте заставить помигать GP0 или GP1 и уберите паузу: если программатор "прямой" - должно , скажем, пять раз без проблем запрограммироваться . Если гут - померьте время задержки и откройте "страшную тайну" - сколько (в цифрах миллисекунд). Надеюсь, не затруднит? :) А потом я и те у кого те же проблемы просто добавим в схему программатора задержку, вместо того чтобы паять новый. :)

RW1ZK: Ted пишет: В ссылке, данной Алберто, сказано, что должна быть задержка подачи +5в относительно +12-ти на несколько миллисекунд. "Несколько" - это сколько? 5? 50? 500? Попробуйте опытным путём. Ted пишет: некорректно: GP4 не участвует в программировании. Плюс у Вас там стоит пауза перед запуском миганий. Попробуйте заставить помигать GP0 или GP1 и уберите паузу Попробую, результат сообщу.

Алексей: Ted не могу точно сказать, т.к. не понимаю бит MCLRE_OFF, никогда так не пишу, но именно такая проблема возникает при установке битов от внутреннего генератора и с внутренним MCLR, т.е. когда этот вывод работает как цифровой порт ввода вывода. У меня может программироваться в такой конфигурации, а может и нет. Шью при помощи EXTRA PIC и ICD2. Во втором случае мплаб честно предупреждает о возможных проблемах и описывает причину, это сочетание битов конфигурации. А вот программы для JDM программаторов молчат в тряпочку... По всей видимости в этом случае программатор после зашивки не может уже удерживать контроллер в состоянии сброса, да и подача повышенного напряжения на цифровой порт ввода вывода не безопасна... Если это так, то попробуйте назначить этот вывод как MCLR, все должно заработать. Так же нельзя сбрасывать со счете кривое железо...

RW1ZK: Всё ясно, как ясный перец! Описываю: После смены порта GPIO, 4 на порт GPIO, 0 и зашивки программы в PIC, он работает нормально и проблем с прошивкой/стиранием нет. Дальше убрал паузу... Вот тут уже трабл. Проверка после прошивки даёт ошибку по адресу 0000h. Всё дело в том, что при подаче питания +5 вольт программа в PICe начинает работать (MCLR - внутренний) и в данном случае не имеет роли порядок подачи питание/напряжение программирования. Неоднократное стирание/прошивка другим хексом не исправляет положение. Выход прост: 1. Снимите галочку в IC-Prog c MCLR и сотрите данные в PICe. 2. В программе в CONFIG установите MCLRE_ON и оттранслируйте программу. 3. Зашейте хекс в PIC. PIC должен вернуться в рабочее состояние. P.S. Алексей, вывод GP3 в PIC12F629/675 может работать только на вход.

Alberto: В программе Ивана сменил порта GPIO,4 на порт GPIO,0 и убрал паузу... стирает/пишет/читает без проблем. Ребята, выкиньте кривое железо и будет вам счастье . Программатор отсюда: http://pic16f84.narod.ru/progr.htm настройку WinPIC800 можно посмотреть на данном форуме в разделе по программаторам.

Alberto: Ted пишет: "Несколько" - это сколько? Вы просто невнимательно прочитали данную ссылку. Для переделки описанной там, время не нужно ни подбирать, ни искать. Взятая Вами фраза относится к тому, что написано в даташите по программированию, а не к самой переделке. Плюс посмотрите это (специально оставил больше что бы было видно как называется документ): и все вопросы отпадут.

Alberto: А вот про порядок подачи напряжений на МК 12F629 при программировании: т.е. выводы DATA и CLOCK удерживаются в нуле, потом подается напряжение программирования и только после этого напряжение питания. Так что никаких проблем с подачей повышенного напряжения на цифровой порт ввода нет. Он на это и рассчитан.

Алексей: RW1ZK пишет: Алексей, вывод GP3 в PIC12F629/675 может работать только на вход. Написал на чистом автомате...

Пётр: Alberto пишет: Программатор отсюда: http://pic16f84.narod.ru/progr.htm Я его тоже использую, работает без нареканий. Только вот подумываю сделать под него собственый софт.

Alberto: Пётр пишет: подумываю сделать под него собственый софт. довольно сложная задача, там под каждый тип МК своя последовательность подачи управляющих сигналов (т.е. временные задержки, разные прследовательности для режима верификации и т.д.). Если не соблюсти всё это - будут грабли. У меня есть pdf'ок 40-50 на разные типы МК. Можно начать под самые распространённые. Зачем это нужно не спрашиваю.

Пётр: Alberto пишет: довольно сложная задача, там под каждый тип МК своя последовательность подачи управляющих сигналов Знаю, поэтому и написал что Только вот подумываю а не собираюсь делать... Пока особой надобности в этом нет, просто хочу это сделать. Знаешь, некоторые лезут на Эверест (показывают по Discovery, непонимаю я их, заплатить 50000$ чтобы там погибнуть!), а я хочу программатор сделать, причём не ставлю перед собой цель, сразу все контроллеры осилить. Для начала достаточно 84 и 628, а там видно будет.

Alberto: Пётр пишет: непонимаю я их Я сам когда-то альпинизмом занимался, так что я их прекрасно понимаю. Это сложно передать, но это здорово. Для начала достаточно 84 и 628 Есть немного инфы по программированию 84-го и 628-го ПИКов. Если хочешь, скину.

Пётр: Alberto пишет: Если хочешь, скину Неоткажусь.

Alberto: Ok, вечером скину на почтовик, там три-четыре файла по 400-500К.

Ted: Алберто спасибо за точные ответы на заданные вопросы: ну вот, теперь о минимум 5 мкс разговор идет вместо "нескольких миллисекунд", уже "теплее". Знать бы еще время (на моем компе) от подачи Vpp до начала подачи тактирующих импульсов,чтоб в эту "вилку" попасть, да запоминающего осциллографа под рукой нету. Зачем? Да чтоб раз навсегда разобраться досконально с конкретными цифрами "на руках": сами же видите - у одного работает, у другого тот же программатор - нет. RW1ZK: трабл-то появился, значит не все в порядке с задержками? - ошибки просто не должно было быть, как у Алберто.

Ted: Алберто:"Для переделки описанной там, время не нужно ни подбирать, ни искать. Взятая Вами фраза относится к тому, что написано в даташите по программированию, а не к самой переделке. " - если уж переделывать, то с "открытыми глазами", а не тупо впаять а потом в очередной раз удивляться почему "не идет". Сорри за флуд.

Alberto: Ted пишет: сами же видите - у одного работает, у другого тот же программатор - нет. разные компьютеры. Вы же сами видите как рекомендуют настраивать JDM программаторы, то буфер отключи, то приоритеты задай, то с бубенцом попрыгай. Соберите нормальный программатор, это займет пол-дня и не будет проблем. Могу скинуть некоторую инфу по спецификациям на программирование ПИКов.

Ted: "Соберите новый программатор" - это, так сказать, "экстенсивный путь развития" . Мне показалось куда более полезным разобраться почему мой программатор, работающий во всех остальных случаях, сбивается именно в этом: информации из документации DS33023A и DS41191D с www.microchip.com оказалось достаточно.

Ted: ...а уж как этого добиться - дело пятое. Хочешь - паяй новый программатор, хочешь - ставь контроллер управления подачей питания, хочешь - впаяй транзистор в цепь +5в. Вольному - воля!

Alberto: Ted пишет: работающий во всех остальных случаях, сбивается именно в этом лежит у меня USB-программатор, купил сдуру (товарищ купил, мне понравилось). При программировании 16F628A не прописывает EEPROM память, т.е. он её пишет, но первые несколько байт нормально, потом сдвигает на несколько позиций следующие, потом повторяются первые... Каша полная. Проверил на 16F676, 16F677, 12F629, 16F84A и 16F630, EEPROM память пишет без проблем, но доверия у меня к нему больше нет. Лежит без дела, а я пользуюсь проверенным ProPIC'ом 2. Хотя спорить не буду, у многих имеющих JDM программатор есть похожие проблемы, разберетесь, многие спасибо скажут .

Алексей: Alberto пишет: разберетесь В том то и дело, что вряд ли здесь что то поможет. Ком порт никогда был не предназначен для формирования точных временных задержек. Он предназначен только для передачи данных. В этом то вся и проблема. Для ее решения необходимо менять железо компьютера, но такого не сущесвует в природе. Самый простой и дешевый вариант раз и навсегда забыть об этих проблемах, собрать допустим ICD2, для него даже прошивка в мплабе есть. Здесь управляющий контроллер с ком порта получает данные, т.е. порт работает в своем стандартном режиме, а уж потом контроллер программатора зашивает программируемый контроллер... Хотя проблема с внутренним генератором и MCLR остается. Хотя вродебы КЕА предлагал или не он? не помню точно, сначала шить с любым другим генератором, только не внутренним, а потом перепрошить с нужными битами конфигурации...

Alberto: Алексей, и я об этом. Почему и предлагают то буффер отключить, то еще что-то сделать, т.к. нет однозначного решения данной проблемы. Каждый компьютер в данном случае индивидуален. Разные материнки, разные процессоры и т.д. Это все влияет. Вот я и предложил самый простой вариант ProPIC2, одна м/с 155ЛН3 (я его не рекламирую, просто я с ним работаю, никаких глюков нет, кабель от принтера 2,5 метра (сравните с ICD2), одним словом мне нравится). Вариант ICD2 уже подороже (нужем МК). А прошивка сначала с внутренним генератором и последующей перепрошивкой с нужным битом конфигурации не спасет с случае когда такой МК нужно будет стереть, он перестанет стираться, читаться и т.д. Да и как-то несерьезно это. Но каждый волен выбирать то, что ему нравится .

nik_nik: Alberto "Есть немного инфы по программированию 84-го и 628-го ПИКов. Если хочешь, скину. Могу скинуть некоторую инфу по спецификациям на программирование ПИКов." Если можно, то сбрось и мне начинающему, poddor@inbox.ru Спасибо

nik_nik: Alberto. Дай ссылку на схему PROPIC2 программатор, с какой программой она работает?

Alberto: nik_nik пишет: Если можно по независящим от меня причинам, на данный момент этой информации у меня нет. Обратитесь к Петру, я ему выслал, он должен был ее получить. Пётр, можешь переслать те несколько файлов что я выслал тебе на poddor@inbox.ru? Заранее спасибо.

Alberto: nik_nik пишет: Дай ссылку http://pic16f84.narod.ru/progr.htm я работаю с WinPIC800. Настройки и где ее взять можете посмотреть здесь: http://pic.fastbb.ru/?1-4-0-00000009-000-0-0-1190296358 если будут трудности с настройкой, вышлю еще раз.

nik_nik: Спасибо, скачал, схема знакомая, не остановился я на ней в свое время, а теперь вот неустойчивость работы по COM порту на моем компе подводит к решению проблемы, видимо попробую.

Alberto: У меня когда-то тоже был JDM-программатор. Я под него специально Р166ММХ взял, т.к. на Р4 он не работал, а потом собрал ProPIC2 и до сих пор прекрасно работает, ни о каких задержках я и не задумываюсь.

Пётр: Alberto пишет: можешь переслать те несколько файлов что я выслал тебе nik_nik, Alberto проверьте личку.

Alberto: Спасибо, Пётр.

Пётр: Пётр пишет: Только вот подумываю сделать под него собственый софт. Есть небольшёй сдвиг в этой области. Удалось прошить всю память программ (1024 ячейки) 84 ПИКа через Extra-PIC совместимый программатор. При этом не использовал внешний драйвер (как например, IC-Prog). Прога будет работать в любой Винде, включая XP Время прошивки примерно 20 секунд. Если интересно, можно обсудить в другой теме.

Dmitry Dubrovenko: Пётр пишет: При этом не использовал внешний драйвер (как например, IC-Prog).Вроде, последняя версия тоже не использует внешний драйвер. Впрочем, я слабо разбираюсь в программировании Винды.

Пётр: Dmitry Dubrovenko пишет: последняя версия тоже не использует внешний драйвер Ну так IC-Prog крутые спецы писали и то в предыдущих версиях драйвер был. Мне ещё далеко до них... Кроме того я разработал рабочий (читает и пишет) алгоритм за пару часов, причём его скорость после "шлифовки" не будет уступать тому что в IC-Prog'е. Нужно ещё отметить что я почти не знаю как ПИКи прораммируются (опыта вообще нет), а испрользовал только инфу из темы "Коллективные проекты". Dmitry Dubrovenko пишет: слабо разбираюсь в программировании Винды Поверте, написание проги для Винды не сложеее чем для ПИКа.

MAZ: Понадобилось запрограммировать 12F629. Насчет калибровочной константы RC генератора. Где то у КЕА помню есть, но забыл где. Если правильно понял. Перед прошивкой надо прочитать память, по адресу 3FFF будет константа, которую надо переписать, на бумагу например. Потом внести текст hex файла и по адресу 3FFF вписать константу. Или есть другие варианты. Эти константы под каждый контроллер одинаковы, или разные?

igor: В практикуме по программно-аппаратному анализу. Pr_An_3_13 Приложение 3a: Особенности работы с 8-выводными м/контроллерами PIC12F629/675 в режиме внутреннего RC генератора. Малогабаритный терморегулятор на PIC12F629/675 с датчиком DS18S20/DS1820.

RW1ZK: MAZ пишет: Перед прошивкой надо прочитать память, по адресу 3FFF будет константа, которую надо переписать, на бумагу например. Потом внести текст hex файла и по адресу 3FFF вписать константу. Или есть другие варианты. Эти константы под каждый контроллер одинаковы, или разные? Александр, если будешь прошивать контроллер в WinPIC800 или PICkit2, то ничего делать не надо. Всё пройдёт в автомате. Не забудь в тексте инициализации контроллера прописать: [pre2] ORG 0x000 ; Вектор сброса процессора, начальный адрес call 3FFH ; Считать калибровочную константу bsf STATUS, RP0 ; 1-й банк movwf OSCCAL ; Загрузить в OSCCAL bcf STATUS, RP0 ; 0-й банк[/pre2] Константы в контроллерах, разумеется разные. Редкий случай, когда они совпадают. Как-то с Альберто сравнивали несколько PIC12F629...

MAZ: Прошил в ICprog и extrapic. Все нормально. Спасибо. При чем для интереса, делал 6 раз, сбоев не было.

RW1ZK: MAZ пишет: Прошил в ICprog и extrapic. Все нормально. Ну вот и хорошо. Что-то я припоминаю: как бы ICprog не запрашивал "добро" на замену калибровочной константы...

MAZ: Запрашивает.

Dmitry Dubrovenko: Про калибровочную константу говорили тут.

MAZ: Подведу итог своих наблюдений. PIC12F629 с встроенным RC генератором в конфигурации хорошо программируется в связке ICprog+EXTRAPIC. Перед программированием, при подачи напряжения, контроллер выполняет записанную в него до этого программу. После команды "Программировать" начинается считывания контроллера. программа не работает. Если константа калибровочная изменена, то ICprog просит подтверждения о замене константы, потом программирование и все без проблем. Прогнал раз 20, все идеально. 628 не пробывал, но думаю, скорее всего тоже самое.



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