Регистрация | Вход
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
Страница 1 из 11
Модератор форума: ivan_fd 
Форум Picbasic.ru » Программирование МК » PicBasicPro » Господа, помогите разобраться в Serin
Господа, помогите разобраться в Serin
Feo Дата: Вс, 06.03.2011, 23:58  |                                                                                                                Сообщение # 1
Группа: Пользователи
Ранг:  Новенький
Сообщений: 12
Репутация: 0   ±
Замечания:   ±
На сайте с 16.03.2010

Статус: Offline

Написал программу общения с терминалом. Подключился через max232. схему подключения перед этим оттестировал на телефоне - АТ проходили.
использую PIC 12F683.
Задача первоначально простейшая: повторить пример из книги Хеллибайка. Отправить в терминал приглашение, получить ответ, отреагировать.
отправляю в терминал с GP1 - 6 нога контроллера. Принимать пытаюсь с GP0. Осталась свободной только GP3 (там мигаю диодом, чтобы понять отрабатывает ли программа впринципе), т.к. остальные ноги заняты питанием и внешним кварцем.
Листинг:

include "modedefs.bas"
rx var byte 'принятый байт
trisio=%111001
GPIO=%000000
main
GPIO.2=1
serout 1,T2400,["menu",10,13]
serin 0,T2400,rx
serout 1,T2400,["one",10,13]
pause 4000
GPIO.2=0
goto main
end

Вот что получаю в терминал:
>menu
>one
>menu
>one
>menu
>one
..........

Вопрос: почему не происходит ожидания ввода ответа в терминал? Как-будто serin не работает или постоянно "принимает" и без моего ввода.

Большое спасибо за помощь.

ЯНДЕКС Дата: 06.03.2011
ivan_fd Дата: Пн, 07.03.2011, 10:45  |                                                                                                                Сообщение # 2
Группа: Модераторы
Ранг:  Специалист
Сообщений: 911
Репутация: 50   ±
Замечания:   ±
На сайте с 12.01.2009

Статус: Offline

А какое значение должно прийти на прием?

И еще, мой Вам совет, оставьте этот PicBasicPro, и переходите на Протон.
В нем нормально сможете отладить программу в протеусе.


Меня все время преследуют умные мысли...но я быстрее!!!
Feo Дата: Пн, 07.03.2011, 11:58  |                                                                                                                Сообщение # 3
Группа: Пользователи
Ранг:  Новенький
Сообщений: 12
Репутация: 0   ±
Замечания:   ±
На сайте с 16.03.2010

Статус: Offline

На данный момент не важно какое, важно, чтобы программа посте текста "menu" встала в ожидании ввода с терминала и после ввода показала "one".
а получается так, что она парами эти слова валит в терминал и ничего не ожидает.

Как перейти на протон, если доков и пояснений нет, а единственный сайт показывает 404 ошибку?

ADMIN Дата: Пн, 07.03.2011, 16:28  |                                                                                                                Сообщение # 4
Администратор
Группа: Администраторы
Ранг:  Специалист
Сообщений: 1111
Репутация: 24   ±
Замечания:   ±
На сайте с 20.08.2007

Статус: Offline

В хелпе к команде serin сказано:

' Wait until the character “A” is received serially on Pin1 and put next character into B0 - то есть ждем символ A и следующий за ним символ кладем переменную B0
SERIN 1,N2400,["A"],B0

Значит, можно попробовать так:

include "modedefs.bas"
rx var byte 'принятый байт
trisio=%111001
GPIO=%000000
main
GPIO.2=1
serout 1,T2400,["menu",10,13]
serin 0,T2400,["menu"], rx
serout 1,T2400,["one",10,13]
pause 4000
GPIO.2=0
goto main
end

А вообще, с протоном действительно легче работать.

mikhail09p Дата: Вт, 08.03.2011, 11:25  |                                                                                                                Сообщение # 5
Группа: Проверенные
Ранг:  Разобрался
Сообщений: 507
Репутация: 11   ±
Замечания:   ±
На сайте с 04.05.2010

Статус: Offline

Quote (Feo)
Как перейти на протон, если доков и пояснений нет, а единственный сайт показывает 404 ошибку?

У меня Опера 10.63 корректно открывает http://terrarus.ucoz.ru/proton_plus_ide/index.html
Если у Вас не открывает браузер, воспользуйтесь Эксплорером.
Поверьте, Протон намного лучше и проще! Сам благодарен, что послушал умных людей.

Feo Дата: Ср, 09.03.2011, 15:06  |                                                                                                                Сообщение # 6
Группа: Пользователи
Ранг:  Новенький
Сообщений: 12
Репутация: 0   ±
Замечания:   ±
На сайте с 16.03.2010

Статус: Offline

Продолжаю разбираться!

составил программку простую, хочу принять стоку из 5 символов, работаю с 16F876, т.к. предыдущий отказался работать:

include "modedefs.bas"
rx var byte[5] 'принятый байт
i var byte 'флаг состояния светодиода
init:
TrisB=%00000010
portB=%00000000
menu:
pause 10000
serin2 1,84,[str rx\5]

по задаче должен поместить строку символов с сом-порта посимвольно в массив (скорость 9600, без проверки четности, не инвертир.)
Работает, но неккоректно.
т.е. отправляя 12345+ Enter получаю записывается 1 и все.
а если набрать в терминале
1+Enter
2+Enter
3+Enter
4+Enter
5+Enter

Тогда заполнятся все 5 элементов массива.
пробовал так:
Serin 1, T9600, rx[1], rx[2], ... , rx[5] - результат тот же. Принимается только первый символ команды за разовый посыл.

P.s. по поводу сайта, с последнего IE смотрю. Весь раздел "Начинающим" такой:

Невозможно найти ресурс
Возможно, он был удален, переименован, или временно недоступен.

P.p.S.

Господа, подскажите как согласовать скорости Телефона и PIC. Судя по описанию команды пик более 9600 не разгоняется. Оттого телефон получает и выполняет команды МК, а МК не слышит ответов телефона. Проверял с терминалом 9600 - все работает в обе стороны, 115200 - тишина, МК не чувствует команд терминала. Как "разогнать" скорость пика?

Большое спасибо за помощь!

Сообщение отредактировал Feo - Ср, 09.03.2011, 22:30
Mixlich Дата: Сб, 19.03.2011, 15:48  |                                                                                                                Сообщение # 7
Группа: Проверенные
Ранг:  Новенький
Сообщений: 14
Репутация: 0   ±
Замечания:   ±
На сайте с 30.11.2008

Статус: Offline

16f876 с терминалом связывался на 19200, все работает. Кварц ставил на 16МГц.
Отправь телефону команду через терминал AT+IPR=? , должен показать на каких скоростях работает.

Сообщение отредактировал Mixlich - Сб, 19.03.2011, 15:58
Форум Picbasic.ru » Программирование МК » PicBasicPro » Господа, помогите разобраться в Serin
Страница 1 из 11
Поиск: