Как подключить PIC к порту COM для команды SERIN - Форум Picbasic.ru
Регистрация | Вход
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
Страница 1 из 3123»
Модератор форума: ivan_fd 
Форум Picbasic.ru » Программирование МК » PicBasicPro » Как подключить PIC к порту COM для команды SERIN (Приём и передача по программному интерфейсу RS232)
Как подключить PIC к порту COM для команды SERIN
somlich Дата: Вт, 15.09.2009, 20:10  |                                                                                                                Сообщение # 1
Группа: Проверенные
Ранг:  Начал соображать
Сообщений: 35
Репутация: 0   ±
Замечания:   ±
На сайте с 23.02.2009

Статус: Offline

Что то я туплю, при отправлении байта на комп проблем нет - SEROUT2 на 2 ножку COM через сопротивление 1кОм - работает на ура..
И вот теперь встала задача - передать данные с компа на PIC. Если я правильно понимаю - команда SERIN. Но куда подключать в COM порте провод .
Мне нужно, что бы была возможность и приема и передачи.
ЯНДЕКС Дата: 15.09.2009
DIKTATOR Дата: Вт, 15.09.2009, 20:56  |                                                                                                                Сообщение # 2
Группа: Проверенные
Ранг:  Понимаю
Сообщений: 76
Репутация: 2   ±
Замечания:   ±
На сайте с 24.07.2008

Статус: Offline

Вывод 3 СОМ порта для того чтоб передать данные из пк в мк, но ком порт при передачи в мк информации на вывод 3 будет давать напряжение от -12 до +12(в современных от -10 до +10).
Пробывал делать делитель напряжения, пока не получается уменя в виду того что мой последний мк згорел.

резисторы 5.1кОм

Прикрепления: 9470190.gif(1Kb)


Используйте симулятор ПРОТУЕС !!! Реальная вещь!!
Я снова тут, но не всегда свободен.
somlich Дата: Вт, 15.09.2009, 21:29  |                                                                                                                Сообщение # 3
Группа: Проверенные
Ранг:  Начал соображать
Сообщений: 35
Репутация: 0   ±
Замечания:   ±
На сайте с 23.02.2009

Статус: Offline

Вот нашел такую схему - функциональна? Получается что 2 (COM) на выход от МК, а 3 (COM) на вход?
Если судить по даташиту макса то получается что на схеме 11 ножка - так которая идет на порт МК 25, т.е. RC6 будет выход (SEROUT), а 9 - на порт RC7 (26) - вход (SERIN). Правильно я думаю?
Прикрепления: 2343490.gif(27Kb) · 4501839.gif(10Kb)
DIKTATOR Дата: Вт, 15.09.2009, 21:38  |                                                                                                                Сообщение # 4
Группа: Проверенные
Ранг:  Понимаю
Сообщений: 76
Репутация: 2   ±
Замечания:   ±
На сайте с 24.07.2008

Статус: Offline

команды SERIN и SEROUT реализовывают программный интерфейс RS232 на любом порту мк, RC7 и RC6 имеют аппаратную поддержку USART, для работы с ним есть команды HSERIN и HSEROUT.

Я использую программный метод.


Используйте симулятор ПРОТУЕС !!! Реальная вещь!!
Я снова тут, но не всегда свободен.
somlich Дата: Вт, 15.09.2009, 21:42  |                                                                                                                Сообщение # 5
Группа: Проверенные
Ранг:  Начал соображать
Сообщений: 35
Репутация: 0   ±
Замечания:   ±
На сайте с 23.02.2009

Статус: Offline

Если я правильно понял, то схема в моем предыдущем посте нормальная и ее можно собирать?
Quote (DIKTATOR)
команды SERIN и SEROUT реализовывают программный интерфейс RS232 на любом порту мк, RC7 и RC6 имеют аппаратную поддержку USART, для работы с ним есть команды HSERIN и HSEROUT.

Это я понимаю, SERIN можно "делать" на любой порт.
DIKTATOR Дата: Вт, 15.09.2009, 21:45  |                                                                                                                Сообщение # 6
Группа: Проверенные
Ранг:  Понимаю
Сообщений: 76
Репутация: 2   ±
Замечания:   ±
На сайте с 24.07.2008

Статус: Offline

Quote
Вот нашел такую схему - функциональна? Получается что 2 (COM) на выход от МК, а 3 (COM) на вход?
Если судить по даташиту макса то получается что на схеме 11 ножка - так которая идет на порт МК 25, т.е. RC6 будет выход (SEROUT), а 9 - на порт RC7 (26) - вход (SERIN). Правильно я думаю?

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


Используйте симулятор ПРОТУЕС !!! Реальная вещь!!
Я снова тут, но не всегда свободен.
Dmitry Дата: Вт, 15.09.2009, 23:14  |                                                                                                                Сообщение # 7
Группа: Пользователи
Ранг:  Могу и подсказать
Сообщений: 161
Репутация: 6   ±
Замечания:   ±
На сайте с 12.05.2009

Статус: Offline

Quote (somlich)
Если я правильно понял, то схема в моем предыдущем посте нормальная и ее можно собирать?

Да нафига париться с MAX-ом, чтобы пару байт передать! Чем схема в описании команды SERIN/SERIN2 не устраивает? Любую ножку МК через 22к на 3 ножку ком-порта и усе! Естественно, в команде serin, также как и serout, использовать режим инвертирования.
DIKTATOR Дата: Вт, 15.09.2009, 23:20  |                                                                                                                Сообщение # 8
Группа: Проверенные
Ранг:  Понимаю
Сообщений: 76
Репутация: 2   ±
Замечания:   ±
На сайте с 24.07.2008

Статус: Offline

Был момент я подключал таким способом и у меня сгорел пик, правда резистор не помню какой ставил. Для надёжности с максом, а для начало освоения работы с ком портом можно и так попробывать.
http://www.gaw.ru/html.cgi/txt/interface/rs232/ про интерфейс RS232 если кому интересно и кто не знает.
Так и у ком порта поменять проводки с 2-3 на 3-2, не заметил смотря на схему.


Используйте симулятор ПРОТУЕС !!! Реальная вещь!!
Я снова тут, но не всегда свободен.
Dmitry Дата: Вт, 15.09.2009, 23:39  |                                                                                                                Сообщение # 9
Группа: Пользователи
Ранг:  Могу и подсказать
Сообщений: 161
Репутация: 6   ±
Замечания:   ±
На сайте с 12.05.2009

Статус: Offline

Ну не знаю, уже проектов 5-7 таким образом подключал (правда, всегда через резистор 22к smile ), и к совершенно разным МК - ноу проблем. MAX понадобился только один раз - надо было хардварным портом поключаться, чтобы бутлоадером прошивку заливать.
Правда, в последнем проекте заметил глючок подобного подключения (PIC16F690) - если к любой из ног прикладывать напряжение большее, чем напряжение питания (пусть и через резисторы), т.е. когда начинают работать защитные диоды шоттки на выводе МК - начинает врать (в сторону увеличения) встроенный АЦП. Причем АЦП подлючен к совершенно другим ножкам. Я-то обманул его, конечно (добавил еще один резистор и стабилитрон на линию SERIN), но... прецендент-с.

Добавлено (15.09.2009, 23.39.50)
---------------------------------------------

Quote (DIKTATOR)
Так и у ком порта поменять проводки с 2-3 на 3-2, не заметил смотря на схему.

Кстати, да, ошибка в схеме. 2-й вывод ком-порта - прием, а подключен к приему MAX-а smile
И кондеров современным MAX-ам вполне достаточно 0,1 мкф (ST232, например)

Сообщение отредактировал Dmitry - Ср, 16.09.2009, 00:07
somlich Дата: Сб, 03.10.2009, 00:16  |                                                                                                                Сообщение # 10
Группа: Проверенные
Ранг:  Начал соображать
Сообщений: 35
Репутация: 0   ±
Замечания:   ±
На сайте с 23.02.2009

Статус: Offline

Подключил как посоветовали, все принимает и передает по одному байту - отлично. Но вот стал вопрос если я ф программе пишу serin PORTD.0,16780,string то МК просто висит и ждет - когда же эта гребаная строка придет. А мне еще нужно опрашивать 6 кнопок. Как заставить и ждать строку, т.е. при ее появлении сразу ее считать и следить за состоянием портов с кнопками????
Dmitry Дата: Сб, 03.10.2009, 00:51  |                                                                                                                Сообщение # 11
Группа: Пользователи
Ранг:  Могу и подсказать
Сообщений: 161
Репутация: 6   ±
Замечания:   ±
На сайте с 12.05.2009

Статус: Offline

Ну как, как. Никак. Или принимать побайтно через аппаратный USART (байт пришел, сработало прерывание, обработал), или почитать хелп на команду serin повнимательнее. Там есть такие параметры как Timeout и Label. Таймаут ставишь 200 мс, например, Label - это куда он прыгнет, если за 200 мс так ничего и не принял. Label можно поставить после обработки принятых serin-ом переменных. Смысл в том, что если serin в течении 0,2 сек ничего не принял, то идти дальше, опрашивать кнопки, еще чего-то делать, затем goto start и опять сидим 0,2 сек в serin-е, ждем от компа посылку. Т.е. большую часть времени МК будет в ожидании посылки с ком-порта. Ну комп так же работает - тоже большую часть сидит и ждет команды от мыши/клавы.
Сообщение отредактировал Dmitry - Сб, 03.10.2009, 00:53
Володимир Дата: Ср, 02.06.2010, 18:16  |                                                                                                                Сообщение # 12
Группа: Проверенные
Ранг:  Понимаю
Сообщений: 85
Репутация: 3   ±
Замечания:   ±
На сайте с 22.04.2010

Статус: Offline

Quote (DIKTATOR)
команды SERIN и SEROUT реализовывают программный интерфейс RS232 на любом порту мк
Скажите пожалуйста, а этими командами можно проводить обмен на скоростях больше 9600, в модуле MODEDEFS.BAS максимальная скорость 9600 а мне нужно хотяби 10400

Сообщение отредактировал Володимир - Ср, 02.06.2010, 18:17
terrarus Дата: Ср, 02.06.2010, 20:08  |                                                                                                                Сообщение # 13
Группа: Модераторы
Ранг:  Разобрался
Сообщений: 542
Репутация: 16   ±
Замечания:   ±
На сайте с 21.08.2008

Статус: Offline

Quote (Володимир)
команды SERIN и SEROUT реализовывают программный интерфейс RS232 на любом порту мкСкажите пожалуйста, а этими командами можно проводить обмен на скоростях больше 9600

Конечно можно, только в начале программы укажите частоту не 4 МГц,а больше например 20 мГц. И соответственно нужную скорость.


Если у в Вас что-то не получается, подумай, не стоит ли прочитать инструкцию...!
Володимир Дата: Вт, 22.06.2010, 17:35  |                                                                                                                Сообщение # 14
Группа: Проверенные
Ранг:  Понимаю
Сообщений: 85
Репутация: 3   ±
Замечания:   ±
На сайте с 22.04.2010

Статус: Offline

Quote (terrarus)
команды SERIN и SEROUT реализовывают программный интерфейс RS232 на любом порту мкСкажите пожалуйста, а этими командами можно проводить обмен на скоростях больше 9600

Конечно можно, только в начале программы укажите частоту не 4 МГц,а больше например 20 мГц. И соответственно нужную скорость.

А как тогда скорость задавать? По формуле 1000000/бод-20, или можно по файлу modedefs.bas ?

Добавлено (22.06.2010, 17.35.42)
---------------------------------------------
Делаю БК для автомобиля http://www.bk-ukraine.narod.ru/files/Shema.pdf в котором будет подключен к ЭБУ через К-лайн адаптер, теперь думаю не выгорит ли у меня порт в пике так как при таком подключении на входе RХ размах сигнала будет 12В.

terrarus Дата: Вт, 22.06.2010, 23:34  |                                                                                                                Сообщение # 15
Группа: Модераторы
Ранг:  Разобрался
Сообщений: 542
Репутация: 16   ±
Замечания:   ±
На сайте с 21.08.2008

Статус: Offline

Обязательно выгорит если не принять дополнительных мер по согласованию уровней , либо при помощи преобразователей типа Max232 или при помощи простейших схем и мер описанных в постах 2,7 и 9.

Если у в Вас что-то не получается, подумай, не стоит ли прочитать инструкцию...!
Форум Picbasic.ru » Программирование МК » PicBasicPro » Как подключить PIC к порту COM для команды SERIN (Приём и передача по программному интерфейсу RS232)
Страница 1 из 3123»
Поиск: