Автор статьи
GetChiper

Делаем LPT программатор для AVR микроконтроллеров.  

Print Friendly

Титул LPT программатораОдним из самых простых программаторов AVR является программатор для LPT порта. Это обусловлено тем, что уровни сигналов LPT порта совместимы с уровнями сигналов необходимыми для программирования АВР. Поэтому сигналы с LPT порта можно напрямую подать на микроконтроллер (резисторы нужны лиш для защиты порта от случайных замыканий). Такой программатор можно собрать из подручных материалов буквально за 5 минут!


Как Вы видите схема LPT программатора для AVR предельно проста:

Схема LPT программатора для AVR

Для изготовления LPT программатора нам понадобится:

детали для LPT программатора

Резисторы можно использовать любые, какие найдете в пределах от 100 до 150 Ом. Можно программатор собрать вообще без резисторов, но тогда спалить порт станет еще легче. В качестве шлейфа можно заюзать IDE шлейф. При подключении шлейфа, для более устойчивой работы программатора, каждый «сигнальный» провод должен чередоваться с «земляным» проводом. Это позволит уменьшить уровень помех наводимых в линиях и за счет этого увеличить длину программирующего провода. Длина шлейфа должна быть в пределах 50 см. Еще нужен разъем для подключения к программируемому устройству.
Для внутрисхемного программирования Atmel рекомендует стандартные разъемы:


Если Вы планируете серьезно заняться микроконтроллерами, сделайте разъемы стандартными. Для разового программирования устройства я рекомендую использовать разъемы BLS «мамы» на программаторе (такими разъемами к материнской плате подключаются кнопки и светодиоды корпуса компьютера) и штырьки PLS «папы» на плате. Это позволяет максимально упростить разводку платы устройства, так как штырьки для программатора устанавливаются в непосредственной близости возле ножек микроконтроллера. Ножки MOSI, MISO, SCK у микроконтроллеров AVR всегда расположены вместе, поэтому для них можно применить строенный разъем. Отдельно делаем подключение для «земли»-GND и «сброса»-Reset.


Сборка LPT программатора за 5 шагов:

Как сделать LPT программатор для AVR

Перемычки между ножками разъема 2-12 и 3-11 нужны для того, чтобы наш программатор был виден для программ как программатор STK200/300 (STK200/300 своего рода стандарт и поэтому наш программатор станет виден для многих программами).

Для того чтобы наш LPT программатор заработал нужна программа для программирования через LPT порт, плата устройства к которой мы подключим программатор и тестовая прошивка для микроконтроллера.

Общие рекомендации:
- LPT порт довольно нежен – его очень легко «пальнуть», поэтому при работе с портом будьте аккуратны.
– Отдельное подключение для «земли» я бы рекомендовал делать во всех программаторах. Это нужно для того, чтобы «землю» можно было подключить первой и уравнять потенциалы «земли» программируемого устройства и компьютера. (Для тех кто не знает – если у Вас компьютер включен в обычную розетку без заземляющего контакта, то в виду особенности фильтра блока питания компьютера, на корпусе компьютера всегда присутствует потенциал в 110В. При «удачном» подключении программатора этого вполне достаточно для того чтобы сжечь микроконтроллер или LPT порт компьютера.

Заключение:
-Если Вы надумали собрать свой первый программатор и у Вашего компьютера есть LPT порт, то программатор «5 проводков» лучший вариант! Он предельно прост и его повторить не составит труда. Кроме того, программатор совместим с классическими программаторами STK200/300, а значит, он будет поддерживаться многими программами для программирования AVR.
-Если Вы планируете программировать довольно часто, с целью обезопасить LPT порт, рекомендую собрать LPT программатор с буферными элементами (неплохой вариант LPT программатора можно посмотреть на изиэлектроникс) или собрать такой же простой COM программатор (COM порт гораздо выносливей и сжечь его трудней).

,

  1. alexandershahbazov
    27 Март 2010 в 01:45 | #1

    «Каждый «сигнальный» провод должен чередоваться с «земляным» проводом»-
    это у меня вышло как-то интуитивно , также поступил .
    Иногда в схему включают резистор в 1 кОм от корпуса LPT-папы на землю для защиты от статического электричества .

  2. GetChiper
    27 Март 2010 в 10:00 | #2

    alexandershahbazov :

    Иногда в схему включают резистор в 1 кОм от корпуса LPT-папы на землю для защиты от статического электричества .

    Правильное решение – исключает большие уравнивающие токи.

  3. alexandershahbazov
    5 Апрель 2010 в 01:13 | #3

    Наконец-то спаял STK200 с микросхемой SN74HC244N .
    Правда навесным монтажем и без SMD компонентов .
    Все уместил в корпус LPT разьема , даже 2 светодиода впаял .
    Проверил через CodeVisionAVR 2.04.4a , avrdude 5.8 .
    Что-то с PonyProg v207c не пошло .

    А так до сих пор сам пользовался схемой показанной выше .

  4. student
    13 Октябрь 2010 в 19:21 | #4

    Уважаемый getchip можете поподробнее объяснить как подсоединять шлейф, а то я только начинающий. А лучше что бы вы сняли видео о том как всё собрать!!!

  5. GetChiper
    13 Октябрь 2010 в 21:49 | #5

    В данном случае на картинках получается более наглядней.
    Жилы шлейфа припаиваются следующим образом: GND, Reset, GND, MOSI, GND, MISO, GND, SCK, GND (сигнальные линии чередуются с земляными). Земляные провода спаиваются вместе как на стороне LPT-разъема, так и на другой стороне.
    В принципе, можно просто кинуть пять проводков от LPT-разъема до программируемого микроконтроллера (устройства), не заморачиваясь со шлейфом.

  6. sundoser
    3 Декабрь 2010 в 12:27 | #6

    А питание? МК без него не прошьётся

  7. GetChiper
    3 Декабрь 2010 в 16:13 | #7

    Конечно не прошьется. Нужно подать на микроконтроллер 5в от блока питания или батареек. Я в полевых условиях использую квадратную батарейку 4.5в.

  8. Olzhabay
    20 Декабрь 2010 в 14:20 | #8

    а можно использовать резисторы 220 Ом?

  9. GetChiper
    21 Декабрь 2010 в 17:51 | #9

    Да, можно. Их величина, в принципе, не критична.

  10. newsergei
    19 Январь 2011 в 21:03 | #10

    я как начинающий и особо не разбирающийся имею право задать вопрос, а какие микроконтроллеры он шьёт? интересуут мк PIC16F628A , прошьёт? если нет, то подскажите чем его можно прошить… за ранее спасибо!
    P.S. очень хороший сайт. молодец.

  11. GetChiper
    19 Январь 2011 в 21:42 | #11

    Насчет PICов не подскажу, так как с ними не работал.

  12. newsergei
    19 Январь 2011 в 21:51 | #12

    спасибо за ответ!

  13. yademon
    23 Январь 2011 в 13:21 | #13

    какие микросхемы можно им прошивать

  14. GetChiper
    23 Январь 2011 в 20:24 | #14

    Все AVR микроконтроллеры, за остальные не скажу – не пробовал.

  15. Thespawn007
    13 Март 2011 в 10:55 | #15

    Почему у меня никакой реакции вообще нет на него? мк атмега8, питание подал всё как надо, может быть такое что у меня LPT отключен? и как его включить?

  16. GetChiper
    13 Март 2011 в 12:12 | #16

    В какой программе программируете?

  17. Thespawn007
    13 Март 2011 в 15:46 | #17

    да я первый раз вообще пытаюсь, в avrdude пробовал и в Uniproа, 0 эмоций…

  18. Thespawn007
    13 Март 2011 в 17:20 | #18

    единственное, у меня входного LPT разьёма нет и я воспользовался проволкой.. может это из-за этого

  19. GetChiper
    14 Март 2011 в 17:46 | #19

    Может не те отверстия разъема проволоку вставляете?
    Кстати, посмотрите в настройках LPT порта в UniProf правильно ли там сигналы расставлены (соответствует ли тому как вы подключаетесь)?

    Вообще программатор «деревянный» и работает всегда…

    Еще могут быть настройки работы LPT порта в биосе. Если не ошибаюсь там 2 варианта. Попробуйте поменять.

  20. Thespawn007
    19 Март 2011 в 19:11 | #20

    Да там пронумерованы отверстия на сасос разьёме, ошибиться трудно, пины все правильно проверил, в биосе тоже посмотрел там IRQ7 должно стоять с spp(normal) настройками, попробую ещё щас провод сменить, я телефонным пользовался…

  21. GetChiper
    19 Март 2011 в 22:56 | #21

    Зайдите в настройки «LPT pins» (UniProf)и проверьте соответствие сигналов программирования с выбранными. Еще? здесь же можно проверить работоспособность линий LPT порта.

  22. cudi
    20 Март 2011 в 21:10 | #22

    GetChiper, помоги пожалуйста, спаял я в точности по схеме программатор, подключаю его ни как не реагирует, у меня был шлейф, удлинитель от LPT порт 1,5 м, убрал его, сразу светодиод от схемы (не программатора) загарелся( т.е питание есть), стал сного побывать ни как… Несколько раз проверил схему, всё чисто и гладко…
    Вот схема устройства http://myrobot.ru/wiki/index.php?n=Experiences.SelfmadeDemoBoard2
    Вот схема:
    http://i062.radikal.ru/1103/8f/d3567247a0ac.jpg

    Помоги плиз

  23. GetChiper
    20 Март 2011 в 21:35 | #23

    Посмотри статью http://www.getchip.net/posts/027-uniprof-programmiruem-avr-cherez-lpt-port/ Там пошаговая инструкция как программировать через LPT. Особенно обрати внимание на первый пункт!

  24. Thespawn007
    22 Март 2011 в 17:34 | #24

    GetChiper :
    Зайдите в настройки «LPT pins» (UniProf)и проверьте соответствие сигналов программирования с выбранными. Еще? здесь же можно проверить работоспособность линий LPT порта.

    Я же написал что провверил все пины, всё совпадает, а как проверить работоспособность линий LPT порта???

  25. GetChiper
    22 Март 2011 в 20:03 | #25

    В окне настроек линий порта есть кнопки «Test..» при нажатии на каждую соответствующая линия будет менять состояние, например 1>0>1. Тестером можно увидеть изменения (или светодиод поцепить через 1 кОм).
    Линия MISO работает на вход, поэтому при нажатии на клавише отобразиться текущее состояние линии. Прижимая линию к земле или 5В (через резистор конечно) можно увидеть видит ли юнипроф линию или нет.

    Если все порта живые, то значит программа их контролирует – драйвер и сам LPT работают правильно.
    Если микроконтроллер не определяется, то тогда причина может быть:
    - в неправильно выставленных фьюзах (это если микроконтроллер не новый. если новый то с фьзами там все должно быть нормально).
    - Может микроконтроллер сгоревший? – попробуйте другой.
    - Линии MOSI, MISO не перепутали при подключению к контроллеру – поменяйте местами.

    Вообще этот программатор штука безотказная – должен работать полюбому!

  26. NikAndrew
    21 Апрель 2011 в 15:15 | #26

    Скажите, а возможна ли работа напрямую с МК без устройства?
    То есть, можно ли подав питание и подключив разъемы к нужным ножкам запрограмировать МК(ATmega8a)?

  27. GetChiper
    21 Апрель 2011 в 19:36 | #27

    Так программирование и происходит!

  28. NikAndrew
    21 Апрель 2011 в 21:13 | #28

    А питание можно от USB подать?

  29. GetChiper
    21 Апрель 2011 в 21:18 | #29

    В принципе можно, но нужно быть осторожным – в процессе программирования/отладки можно случайно заворотить питание и потерять порт.

  30. NikAndrew
    21 Апрель 2011 в 21:39 | #30

    Хм.. А через LPT, получить 5V можно?
    И на какую ножку подавать питание? (Сори что достаю вопросами, первый програматор)

  31. GetChiper
    21 Апрель 2011 в 21:57 | #31

    Вот что нужно сделать http://www.getchip.net/posts/prostaya-otladochnaya-plata-dlya-ustrojjstv-avr-atmega4888168-s-chasovym-kvarcem/
    mega48/88 совместима по ножкам с mega8 – все так само.
    Возьми макетку, панельку и сделай так-же (только часовой кварц не ставь).
    Для питания возьми квадратную батарейку 4.5в (точно ничего не спалишь).

  32. NikAndrew
    22 Апрель 2011 в 17:34 | #32

    А перемычка на кварце нужна?

  33. GetChiper
    22 Апрель 2011 в 18:38 | #33

    В смысле заместо кварца? Нет. Если кварц не задействован то ножки используются как обычные порта ввода-вывода.

  34. NikAndrew
    22 Апрель 2011 в 20:22 | #34

    Спасибо огромное! завтра буду паять.

  35. NikAndrew
    23 Апрель 2011 в 16:57 | #35

    Сделал все как вы сказали, спаял, пишет МК не откликнулся.
    Прозвонил всё, все контакты в норме, питание с батарейки.
    Что можете посоветовать?

  36. ankar
    23 Апрель 2011 в 19:06 | #36

    @NikAndrew
    В унипроге ОБЯЗАТЕЛЬНО проверь состояние портов с помощью тестера. Благо это тот программатор который такое позволяет. Если при нажатии на кнопки сигналы меняются, то перезазгрузи уньку и вперед. Если не определяет микруху при нормальном соединении, то меняй авр и пробуй на другой.В любом случае надо иметь запасную авр для проверки.
    И проверь на НОЖКАХ, не на пятачках к которым они припаяны. Этот непропай очень часто встречается.
    Кстати , по моему , это единственный программатор который без напоминаний проверяет какую микруху присоединил.И очень неприхотливый. Наверное потому, что его Николаев делал для себя , а не в угоду реклам.

  37. ankar
    23 Апрель 2011 в 19:13 | #37

    @NikAndrew
    По моему минус батарейки и земля компа не завязаны. Померяй напругу миннус на корпус компа а плюс на плюсе батарейки.

  38. ploki
    27 Апрель 2011 в 19:02 | #38

    если в схеме с контроллером неисполизуется кварц в каких случаях нужно подавать сигнал на ножку №5 XTAL1 а в каких нет, в программаторе который представлен выше выхода на эту ножку нет , а в программаторе STK200/300 который с микросхемой выход на XTAL1 есть

  39. GetChiper
    27 Апрель 2011 в 19:15 | #39

    Если микроконтроллер сконфигурирован на внутренний задающий генератор (по умолчанию он так и сконфигурирован), то никаких дополнительных сигналов для программирования не нужно. Но если микроконтроллер сконфигурирован на работу внешнего кварца, а его нет, вот тогда и пригодится сигнал на ножке XTAL1.

  40. Ghjuhfvvf
    10 Июнь 2011 в 20:35 | #40

    При включении компа выходные биты Lpt порта по умолчанию стоят в 1. Сбросьте все выходные биты в 0. 4 бит автоматически перейдет в 1 (или переведите его вручную). По-крайней мере, пока не проведу эту процедуру, у меня тоже ничего не видит Lpt программатор (собран на SN74HC244N). Использую прогу XPLpt (легко найти).

  41. VLADIK
    14 Июнь 2011 в 18:29 | #41

    разным номиналом можно

  42. 9vovka
    26 Июнь 2011 в 14:07 | #42

    Привет всем. Собрал такой программатор (для аттини2313)но он не программирует. На тесте все с проводами от порта нормально (при 0 на MOSI и SCK 0,3 вольта – так и должно быть?), но когда начинаю вшивать программу на начале записи выскакивает ошибка «нужно ** а есть 53″ если нажать «пропустить» выскакивает такая же ошибка на протяжении всей записи. Питание 4,9В через КРЕН5А.. микросхемы пробовал разные и для всех одна ошибка.

  43. 9vovka
    26 Июнь 2011 в 14:08 | #43

    @9vovka
    программа Юнипроф.

  44. GetChiper
    28 Июнь 2011 в 21:38 | #44

    В самом юнипрофе настроили ножки LPT как надо?
    В юнипрофе можно подергать выводами LPT-порта – проверить их работоспособность – пробовали дергать?

  45. 9vovka
    29 Июнь 2011 в 14:48 | #45

    @GetChiper
    Я же говорю, ноги настроены правильно и при тесте ноги отвечают и соответствуют значению.

  46. GetChiper
    29 Июнь 2011 в 15:08 | #46

    Галочку «тормоз» ставили? Обычно помогает в таких случаях.

  47. ankar
    29 Июнь 2011 в 17:06 | #47

    9vovka :
    Привет всем. Собрал такой программатор (для аттини2313)но он не программирует. На тесте все с проводами от порта нормально (при 0 на MOSI и SCK 0,3 вольта – так и должно быть?), но когда начинаю вшивать программу на начале записи выскакивает ошибка «нужно ** а есть 53″ если нажать «пропустить» выскакивает такая же ошибка на протяжении всей записи. Питание 4,9В через КРЕН5А.. микросхемы пробовал разные и для всех одна ошибка.

    Ну тут есть эта проблемма. Просто перед записью хекса, сотрите кристал. И заново перезапустите уньку. Прога пишет, в основном, только на чистый кристал. mosi и sck при нажатии кнопки переключаются на 1 и потом 0.Сброс с 1 на 0. А ,вот miso, тут уже посложнее. Там немного опыт дергается авометр. А то, что там 0,3 v это еще ни о чем не говорит. Я , обычно еще и тестером лишний раз проверяю.

  48. ankar
    29 Июнь 2011 в 17:09 | #48

    Кстати, залоченый кристал приходится , иногда, раза два- три чистить.

  49. zhenya1995
    9 Август 2011 в 19:31 | #49

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

  50. GetChiper
    9 Август 2011 в 19:41 | #50

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

Страницы комментариев
Необходимо войти на сайт, чтобы написать комментарий.