Страница 1 из 2

Управление МК ATmega32 через LPT-порт DB-25.

Добавлено: Вс дек 08, 2013 12:48:36
Vova777
Решил собрать одно устройство, которое:

а) управляет восемью LED-индикаторами VD1..VD8 (в перспективе вместо них будут силовые транзисторные или симисторные ключи, гальванически развязанные через оптопары от МК, они будут коммутировать нагрузку);
б) получает сигналы от восьми кнопок SB1..SB8 (в перспективе это будут дискретные (релейные) датчики), если будут протяженные провода - сделаю защиту входов МК, пока пусть так;
в) управляется с LPT-порта J1 компьютера (но также может работать автономно), т.е. пересылает данные от компьютера в МК и от МК в компьютер;
г) разъем J2 нужен для подключения USB-программатора (перепрошивать МК), предполагаю, что это будет внутрисхемным программированием.

Программа на компьютере будет моя собственная, написана на Delphi.


Обратите внимание на:

а) все нули в схеме гальванически связанны между собой;
б) все управление в МК и от МК выполнено активной единицей (потом может быть изменю на активный ноль, пока пусть будет так).

Принцип работы устройства такой:

Пользователь на компьютере, в специальном приложении (моей разработки), путем своих действий, программно сгенерировал некое бинарное значение, которое пересылается через LPT-порт в МК, где программа МК (моя собственная, написанная на языке ассемблера) его получает и, исходя из его бинарного содержимого (путем побитного анализа), выполняет определенный алгоритм с индикаторами (силовыми ключами), но исходя из сигналов с кнопок (датчиков). А также устройство должно с частотой не более 1 Гц (один раз в секунду) передавать информацию от МК в компьютер через LPT-порт (обратная связь) о состоянии кнопок и индикаторов.

Изображение

Посмотрите на мою схему, нормально я все сделал? Будет так работать?

1) Правильно ли я сделал внутрисхемное программирование?
2) Как программа на компьютере будет видеть, подключено ли устройство к компьютеру?
3) Как устройство будет видеть, что оно подключено к компьютеру?
4) Пока слабо представляю, как будет различаться прием и передача для МК и LPT-порта.

Проект в Протеусе (в симуляции пока не работает):
МК и LPT.rar
(16.47 КБ) 248 скачиваний

Re: Управление МК ATmega32 через LPT-порт DB-25.

Добавлено: Вс дек 08, 2013 16:00:31
Kavka
Мндааа... Только D0-D7 на LPT !?? :kill: Про параллельный порт, скажем мягко, вы ничего не знаете. :)
Начните с ознакомления, хотя бы, с вот этим: http://silver-dog.narod.ru/hands/ports/ports.htm
И вообще Великий и Могучий Поиск вам в помощь.
Ну, и до кучи, найдите на сайте Atmel заметки по применению AVR325.

Удачи!

Re: Управление МК ATmega32 через LPT-порт DB-25.

Добавлено: Вс дек 08, 2013 16:08:52
Vova777
Kavka писал(а):Про параллельный порт, скажем мягко, вы ничего не знаете.
Я так посмотрю, Вы тут много знаете. Так называемый "местный знаток LPT-портов".
Ну так взял бы и объяснил простым русским языком, что не так, вместо того, чтобы умничать.

Re: Управление МК ATmega32 через LPT-порт DB-25.

Добавлено: Вс дек 08, 2013 16:41:02
Kavka
Во-первых. Vova777, не обижайтесь, пожалуйста. Я ведь вам не просто так ответил, а дал ссылки по теме. Извините, смайлик не поставил - исправил.
Во-вторых. По вашей схеме сразу видно, что вы даже не поискали в интернете как работает параллельный порт компьютера. Здесь всё добровольно и на ваше сообщение вообще мог никто не отвечать в виду такой грубой ошибки.
В третьих. Почитайте указанные вам материалы. Ознакомьтесь с тем как правильно задавать вопросы. И если у вас будут после этого более конкретные вопросы - пожалуйста. А не так, что "мне по-фиг, что мне тут дали ссылки - мне всё равно непонятно, объясните".

Re: Управление МК ATmega32 через LPT-порт DB-25.

Добавлено: Вс дек 08, 2013 18:46:09
Vova777
Kavka писал(а):
Хоть один адекватный и не эгоистичный человек есть в этом мире... :cry: Побольше бы таких людей... :tea:

Ну что ж, будем изучать... :write:

Re: Управление МК ATmega32 через LPT-порт DB-25.

Добавлено: Вс дек 08, 2013 19:46:05
Vova777
В общем, сделал проще:
Изображение

А также написал простейшую программу на Delphi. Исполняемый файл в папке "Data To LPT", называется "Project 1":
Data To LPT.rar
(176.01 КБ) 263 скачивания
Пишет, что данные передались, а светодиоды не горят. Ничего не пойму.

И еще, может я неправильный адрес даю? Я пишу по адресу "888", у меня в системе LPT-порт определен как LPT3. Он не встроенный, он на PCI-карте.

Re: Управление МК ATmega32 через LPT-порт DB-25.

Добавлено: Вс дек 08, 2013 20:42:36
Kavka
Давайте по порядку.
1. Какой режим установлен у LPT порта? Это в свойствах порта в менеджере устройств винды. Если что-то отличное от SPP, то поставьте SPP. С ним проще всего. Для определённости.
2. Базовый адрес порта - там же. Адрес может быть не стандартным, так как это внешняя плата. Не забудьте про шестнадцатеричное/десятичное представление адреса. Проверьте.

Можете попробовать другие проги для тестирования LPT. Например:
http://timeswitch.narod.ru/dat_test.htm
http://arv.radioliga.com/component/opti ... nfo/id,18/

Re: Управление МК ATmega32 через LPT-порт DB-25.

Добавлено: Вс дек 08, 2013 20:52:50
Vova777
Kavka писал(а):Давайте по порядку.
Я не понимаю, где смотреть.

На закладке "Общие" написано:
Размещение - "Размещение 33".

На закладке "Ресурсы" написано:
Диапазон ввода/вывода (I/O) - D010-D017
IRQ - 18


Вот, посмотрите:
Изображение

Re: Управление МК ATmega32 через LPT-порт DB-25.

Добавлено: Вс дек 08, 2013 21:05:46
Kavka
Какой номер LPT и прочие "размещения" это не то.
Вам адрес ввода/вывода нужен!
Базовый адрес это D010 (шестнадцатеричное). Десятичное 53264.

Добавил спустя пару минут:
Если установки режима нет, то должно быть в автоматическом режиме. Т.е. если специально ничего не делать, то будет SPP.
http://phys.csu.ru/maelab/_frames/_lpt_3.htm (кодировка на странице KOI8-R)

Re: Управление МК ATmega32 через LPT-порт DB-25.

Добавлено: Вс дек 08, 2013 21:08:14
Vova777
Kavka писал(а):Базовый адрес это D010 (шестнадцатеричное). Десятичное 53264.
Правильно ли я понимаю, мне надо писать и читать значения в моем LPT-порту не по адресу "888", а по адресу "53264"?

Re: Управление МК ATmega32 через LPT-порт DB-25.

Добавлено: Вс дек 08, 2013 21:10:44
Kavka
Правильно.

Re: Управление МК ATmega32 через LPT-порт DB-25.

Добавлено: Вс дек 08, 2013 21:15:54
Vova777
Kavka писал(а):Правильно.
Сделал.

Жму "Write" - пишет, как и писал. Жму "Read" - показывает уже не "255", а то значение, которое было записано. Прогресс. :idea:

Но светодиоды не горят! :(

Вот схема:
Изображение

Какая тут вообще может быть ошибка, в трех-то проводах? Что-то не так...

Re: Управление МК ATmega32 через LPT-порт DB-25.

Добавлено: Вс дек 08, 2013 21:38:02
Kavka
Чего-то не хватает... Не сохраняется состояние порта после вывода.
Можете попробовать в цикле по-выводить - может будет помигивать/светиться.
А может надо выполнить следующее условие на "периферийном устройстве":
входные линии соединяются с шиной питания +5 В резистором 1,2 кОм
У нас уже за полночь. Что-то уже соображается плохо. :)
Может вам что-нибудь вот такое подойдёт в качестве основы
http://robozone.su/cnc-home/28-interfej ... zkojj.html
http://robozone.su/cnc-home/56-interfej ... a-lpt.html

Re: Управление МК ATmega32 через LPT-порт DB-25.

Добавлено: Вс дек 08, 2013 22:06:11
Vova777
Kavka писал(а):Чего-то не хватает... Не сохраняется состояние порта после вывода.
Можете попробовать в цикле по-выводить - может будет помигивать/светиться.
Попробовал, не помогло. Не горят.
Kavka писал(а): А может надо выполнить следующее условие на "периферийном устройстве":
входные линии соединяются с шиной питания +5 В резистором 1,2 кОм
Подтяжка... Не знаю... :dont_know:
Kavka писал(а): У нас уже за полночь. Что-то уже соображается плохо. :)
Позвольте я Вас порадую. :)) Я сделал так:
Изображение

Пунктирной красной линией показано, как было до этого. Т.е. я просто пересадил землю светодиодов с 18 ноги на 20-ю. И заработало. :dont_know: Странно, помнится мне, все "земли" в LPT-порту с 18 по 25 гальванически связаны между собой. :dont_know: Оказывается, что нет?
Kavka писал(а): Может вам что-нибудь вот такое подойдёт в качестве основы
http://robozone.su/cnc-home/28-interfej ... zkojj.html
http://robozone.su/cnc-home/56-interfej ... a-lpt.html
Спасибо Вам, я посмотрю и почитаю ссылки. :write: Кстати, они там предлагают использовать компьютер в роли управляющего контроллера. На мой взгляд, не очень хорошая идея. Во-первых, компьютер имеет одно неприятное свойство - зависать. Во-вторых, никакой автономии для устройства. На мой взгляд, управление должно быть со своего контроллера, а компьютер только для единичных прецизионных изменений и визуализации. :wink:

Ваши советы про адрес порта были очень действенными. :idea: Без этого бы не заработало. Вот фото работающего тестера: :tea:

В порт переслали число "1":
Изображение

Изображение

В порт переслали число "255" (почему-то не горит последний светодиод):
Изображение

А также, вот обновленная программа для управления этим хозяйством, версия 1.2:
Data To LPT.rar
(182.61 КБ) 222 скачивания
Обновленная программа до версии 1.3, косметические штрихи:
Data To LPT v1_3.rar
(182.13 КБ) 218 скачиваний
Заработало! :tea: Можно идти дальше в реализации задумки.

Re: Управление МК ATmega32 через LPT-порт DB-25.

Добавлено: Пн дек 09, 2013 07:35:32
Kavka
Vova777 писал(а):Кстати, они там предлагают использовать компьютер в роли управляющего контроллера. На мой взгляд, не очень хорошая идея. Во-первых, компьютер имеет одно неприятное свойство - зависать. Во-вторых, никакой автономии для устройства. На мой взгляд, управление должно быть со своего контроллера, а компьютер только для единичных прецизионных изменений и визуализации. :wink:
Есть много разных причин и мнений на них основанных. В том числе абсолютно противоположных. :)

Про "землю" - это, прям, засада, какая-то у вас. :)
Vova777 писал(а):Ваши советы про адрес порта были очень действенными. :idea: Без этого бы не заработало.
...
Заработало! :tea: Можно идти дальше в реализации задумки.
Удачи!

Re: Управление МК ATmega32 через LPT-порт DB-25.

Добавлено: Пн дек 09, 2013 09:20:02
Vova777
Kavka писал(а):Про "землю" - это, прям, засада, какая-то у вас.
Да не говорите...

Теперь не могу понять, почему не горит последний светодиод. По логике вещей, при числах 127-255 он должен гореть, а здесь не горит. Цешкой посмотрел - похоже, что на него не подается напряжение, относительно абсолютно любой земли (18-25) порта.

Странно, как же так? Так же не должно быть. Свою цепь прозвонил - исправна, обрывов нет. В чем дело может быть?

Re: Управление МК ATmega32 через LPT-порт DB-25.

Добавлено: Пн дек 09, 2013 10:38:00
Engineer_Keen
Чудес не бывает...
1) дохлый светодиод (не подходит, так как установлено что на вывод не подается напряжение, для проверки поменять местами с точно горящим светодиодом)
2) дохлый порт (мог сдохнуть при предыдущих экспериментах, говорят что LPT довольно слабый интерфейс)
3) косяк в программе, глюк ОС (маловероятно, но кто знает...)

Re: Управление МК ATmega32 через LPT-порт DB-25.

Добавлено: Пн дек 09, 2013 10:48:05
Vova777
Engineer_Keen писал(а): 1) дохлый светодиод
2) дохлый порт
3) косяк в программе, глюк ОС
1) Нет, он живой, LED-тестер его подсвечивает, полярность верная. К нему не поступает напряжение.
2) Это ппц тогда, но это в крайнем случае. Как проверить? Да я его и не насиловал так, чтобы он погорел.
3) Исходник на Delphi приложить? Дело в том, что когда я подаю внешнее напряжение на ноги D0-D7 порта и программно считываю оттуда значение, на каждой ноге программа видит определенное значение, а на последней - нет, пишет, что в порту "0", а по логике вещей, там должно быть "128".

Сейчас полазил с цешкой, выяснил, что в самом порту на этой ноге нет напряжения.

Re: Управление МК ATmega32 через LPT-порт DB-25.

Добавлено: Пн дек 09, 2013 23:23:43
Vova777
Выяснил следующее: порт на моем компе в полном порядке (пока :) ), все дело в моем, т.н. "LPT-удлинителе". На самом деле это не "удлинитель", а "универсальный модемный кабель", вот:
http://radiokot.ru/forum/viewtopic.php?f=22&t=97842

Спасибо продавцам :wink: , пропихнули мне, по моему не знанию. Ладно. Завтра поеду и куплю нормальный LPT-удлинитель, который чего-то там Centronics. Проверю все, посмотрим.

Re: Управление МК ATmega32 через LPT-порт DB-25.

Добавлено: Вт дек 10, 2013 05:12:06
zero648
Vova777 писал(а):"универсальный модемный кабель", вот:
http://radiokot.ru/forum/viewtopic.php?f=22&t=97842

Спасибо продавцам :wink: , пропихнули мне, по моему не знанию. Ладно. Завтра поеду и куплю нормальный LPT-удлинитель, который чего-то там Centronics. Проверю все, посмотрим.
:shock: Это ж не для LPT вовсе, это для COM порта кабель, вот это продали, в топку таких продаванов :kill: