sitelogo

By

Простейший программатор JDM для PIC на пассивных компонентах

За основу предлагаемого программатора взята публикация из журнала «Радио» №2, 2004г, «Программирование современных PIC16, PIC12 на PonyProg». Это мой первый программатор, который я использовал для прошивки PIC микросхем дома. Программатор представляет собой упрощенный вариант JDM программатора, оригинальная схема имеет преобразователь RS-232 на TTL в виде микросхемы MAX232, она более универсальна, но ее «на коленке» уже не соберешь. Данная схема не имеет вообще ни одного активного компонента, не содержит дефицитных деталей и очень проста, может быть собрана без применения печатной платы.

easypicprog

Рис. 1: Принципиальная схема программатора.

Описание работы схемы
Схема программатора представлена на рис. 1. Резисторы по цепям CLK (тактирование), DATA (информационный), Upp (напряжение программирования) служат для ограничения протекающего тока. PIC контроллеры защищены от пробоя встроенными стабилитронами, поэтому получается некоторая совместимость TTL и RS-232 логики. В представленной схеме присутствуют диоды VD1, VD2, которые «отбирают» плюсовое напряжение от COM порта относительно 5 контакта и передают его на питание контроллера, благодаря чему в некоторых случаях удается избавиться от дополнительного источника питания.

Налаживание
На практике не всегда случается, что данный программатор заработает без налаживания, с 1-го раза, т.к. работа данной схемы сильно зависит от параметров COM порта. Однако у меня, на двух материнских платах Gigabyte 8IPE1000 и WinFast под XP все заработало сразу. Если Вам лень разбираться с неработающей, более сложной схемой программатора, то стоит попробовать собрать эту. Вот некоторые вещи, которые могут повлиять:

Чем новее мат. плата, тем разработчики уделяют этим портам меньше внимания, потому что эти порты давно стали морально устаревшими. Избавиться от этого можно, купив переходник USB-COM, правда опять же купленное устройство может не подойти. Нужные параметры таковы: изменяемое напряжение должно меняться не менее -10В до +10В (лог. 0 и 1) относительно 5-го контакта разъема. Отдааваемый ток должен быть хотя бы таким, чтобы при подключеннии резистора 2,7 кОм между 5-м контактом и исследуемым контактом напряжение не падало ниже 10В (сам таких плат не встречал). Также порт должен правильно определять напряжения, поступающие от контроллера, при уровне напряжения близкого к 0В, но не больше 2В определяется нуль, и соответственно при выше 2В определяется единица.

Также проблемы могут возникнуть из за программного обеспечения.
Особенно это касается ОС LINUX, т.к. из за наличия эмуляторов типа wine, VirtualBox порты могут работать неправильно, а возможностей от них требуется много. Этих проблем я коснусь подробнее в другой статье.

Зная эти особенности, приступим к налаживанию.
Для этого очень желательно иметь программу ICProg 1.05D.
В меню программы нужно во первых выбрать в настройках соотв. порт (COM1. COM2), выбрать JDM программатор. Затем открыть окно «Hardware Check», в меню «Settings». В этом меню нужно по очереди ставить галочки и вольтметром измерять напряжение на контактах подключенного разъема. Если параметры напряжения не соответствуют норме, то к сожалению, это может быть причиной неработоспособности, тогда придется собирать схему с преобразователем RS-232 TTL. Отметив все галочки, нужно убедиться, что на стабилитроне образуется напряжение питания около 5В. Если напряжения в норме и отсутствуют ошибки монтажа, то все должно сработать. Ставим контроллер в панельку, открываем прошивку, программируем. Галочки типа «Invert data out» включать не надо (все сняты). Также не нужно забывать, что некоторые партии контроллеров могут иметь не совсем стандартные параметры, и их прошить не получается, в таких случаях с данным программатором можно попробовать только снизить напряжение питания с 5В до 3-4В, подключив соотв. стабилитрон, посмотреть контроллер на предмет ошибочного включения режима LVP (низковольтное программирование), как предотвратить, можно прочитать в Интернете для конкретного типа контроллера. Повысить напряжение программирования проблеммного контроллера можно, наверное, только усложнив схему введением усилительного каскада с общим эмиттером, запитанного от дополнительного источника питания.

Теперь подробнее о проблеме с питанием устройства. Программатор тестировался с программами ICProg и консольным picprog под Linux, должен работать с любым, который поддерживает JDM, если подключить дополнительный источник питания (он подключается через резистор 1кОм к стабилитрону, диоды с резисторами в этом случае можно вообще исключить). Дело в том, что алгоритмы управления программаторов у отдельного софта разные, программа ICProg, является самой неприхотливой. Замечено, что в ОС Windows эта программа на неиспользуемом контакте 2 поднимала нужное напряжение питания, эта же программа под эмулятором в Linux на другой мат. плате уже не смогла этого сделать, однако выход был найден, отбирая питание из напряжения программирования. В общем, с ICProg, думаю, можно применять этот программатор без дополнительного питания. С другим софтом это гарантировать врядли получится, например, «родной» из репозиториев Ubuntu picprog без питания просто не определяет программатор, выдавая сообщение «JDM hardware not found». Вероятно, он либо принимает какие-то данные, не подавая напряжение программирования, либо делает это слишком быстро, таким образом что фильтрующий конденсатор еще не успевает зарядиться.



9 Responses to Простейший программатор JDM для PIC на пассивных компонентах

  1. ikeksh пишет:

    А какая карта напряжений? у меня на Upp и CLK по 9 вольт.

    • viron пишет:

      Напряжение программирования Upp, вроде, 9-12 вольт, надо уточнять по даташиту на контроллер. Питание контроллера должно быть 5 вольт, уровни лог. 1 соответственно до 5 вольт. Если вы не подключите контроллер, то на CLK будет 9 вольт, т.к. нет гасящего стабилитрона. Если контроллер подключен, а там по прежнему 9 вольт, то скорее всего контроллер не рабочий.

      • ikeksh пишет:

        У меня PIC16F876A, при считывании выдает все «0», при записи выдает ошибку проверки записи по адресу 0000Н. Читал, что эта ошибка возникает если программатор не «видит» контроллер. Микруха пока одна, поэтому проверить ее работоспособность к сожелению нет возможности, простой прозвонкой можно определить неисправность?

        • viron пишет:

          Простите за большие задержки модерации. Можно определить, но не наверняка, воспользовавшись вольтметром и утилитой проверки программатора в ICProg (где галочками поднимаются\убираются напряжения). Сравните эти напряжения с теми, что требуются по даташиту. Программатор может либо работать, либо не работать вообще, вам нужно подбирать параметры до тех пор, пока контроллер не станет читаться.

      • ikeksh пишет:

        Все заработало, проверил монтаж, оказалось стабилитрон не так впаял, не было питающего напряжения. Прошивал PIC16F876A.

  2. ikeksh пишет:

    Подскажите такой момент, когда тестирую программатор при включенном «Вкл. Выход Данных» галка «Выход Данных» адекватно себя ведет и на граунд реагирует, а когда включаю «Вкл. VCC» пропадает галка «Выход Данных» и на граунт никак не реагирует, так же меняется напряжение на DATA с +5В на -5В.
    До недавнего времени программатор работал исправно, а теперь даже считывание контроллера стирает его, не говоря о том, что ни считать ни зашит не получается.

    • viron пишет:

      Скорее всего, где-то замыкание между контактами разъема или на печатной плате. Раз глючить начинает, когда подаете VCC, проверяйте именно эту цепь.

  3. Евгений пишет:

    Решил перейти к сложному и начать работать с микроконтроллерами. Собрал адаптер http://ampexpert.ru/programmator-svoimi-rukami-jdm-adapter/ В своем первом проекте необходимо использовать PIC16f676, но проблемма в том, что в даташите пика и в схеме адаптера разные обозначения выводов, если кто знает, как мне подключать для прошивки?

  4. SPSS пишет:

    Уровни сигналов не те будут, которые нужны для JDM-программатора. У меня он не на всех настоящих сом-портах работал.

Добавить комментарий

Ваш e-mail не будет опубликован.