Регистрация | Вход

[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Модератор форума: ivan_fd  
Форум Picbasic.ru » Программирование МК » PicBasicPro » PIC16f628 и RS232 (HSEROUT HSERIN) (Приём и передача по аппаратному интерфейсу RS232 (USART))
PIC16f628 и RS232 (HSEROUT HSERIN)
ecilop Дата: Пт, 25.09.2009, 17:07  |                                                                                                                Сообщение # 1
Группа: Пользователи
Ранг:  Новенький
Сообщений: 13
Репутация: 0   ±
Замечания:   ±
На сайте с 08.04.2009

Статус: Offline

Добрый день, может кто приведет примерчик кода, ни как не получается заставить пик, передавать данные на комп...кварц 20 МГц, макс 232.

Может я забываю про какие-то настройки?

DEFINE HSER_RCSTA 90h
DEFINE HSER_TXSTA 20h
DEFINE HSER_BAUD 2400
DEFINE HSER_SPBRG 25
DEFINE HSER_EVEN 1
DEFINE HSER_ODD 1

hserout [10,20]

Сообщение отредактировал ecilop - Пт, 25.09.2009, 17:08
ЯНДЕКС Дата: 25.09.2009
DIKTATOR Дата: Пт, 25.09.2009, 18:37  |                                                                                                                Сообщение # 2
Группа: Проверенные
Ранг:  Понимаю
Сообщений: 76
Репутация: 2   ±
Замечания:   ±
На сайте с 24.07.2008

Статус: Offline

Если у вас в терминале передаются не те символы , поиграйтесь с настройками КОМ порта компьютера, скорость естественно 2400 бод(бит).

попробуйте так:

Code
DEFINE osc 4
DEFINE HSER_RCSTA 90h
DEFINE HSER_TXSTA 20h
DEFINE HSER_BAUD 2400
DEFINE HSER_SPBRG 25
DEFINE HSER_EVEN 1
DEFINE HSER_ODD 1

HZ1:
hserout [10, 20]
pause 100
hserout ["WOOOOOOOOOOW"]
pause 100
hserout ["WOOOOOOOOOOW"]
pause 100       
goto HZ1

просто у моего мк были глюки какието что несколько цифр в начале не передаётся.
ЗЫ, при передачи с мк в ком порт информации, МАХ232 итд можно не использовать, подключал напрямую без резисторов(однако всё равно надёжнее с ним, если есть запасной мк можно пробывать)), а вот при передачи с ком порта в мк , МАХ232 незаменим!

Земля ком порта(вывод 5) должен быть соединён с землёй мк.
DEFINE osc 4 тут можете ставить частоту своего резонатора, и она должно быть именно такойже как на кверце, иначе передаваться будет всякая чушь.


Используйте симулятор ПРОТУЕС !!! Реальная вещь!!
Я снова тут, но не всегда свободен.
ecilop Дата: Пт, 25.09.2009, 19:46  |                                                                                                                Сообщение # 3
Группа: Пользователи
Ранг:  Новенький
Сообщений: 13
Репутация: 0   ±
Замечания:   ±
На сайте с 08.04.2009

Статус: Offline

да вот и передается чушь smile резонатор 20, не могу понять почему.. Играясь скоростями можно выхватить нужные символы, но то такое как повезет...что-то не синхронизируется, надо ли задавать еще где-то синхронный, асинхронный режим?
Сообщение отредактировал ecilop - Пт, 25.09.2009, 19:48
DIKTATOR Дата: Пт, 25.09.2009, 19:57  |                                                                                                                Сообщение # 4
Группа: Проверенные
Ранг:  Понимаю
Сообщений: 76
Репутация: 2   ±
Замечания:   ±
На сайте с 24.07.2008

Статус: Offline

В настройках терминала включена опция "контроль чётности" ? он должен быть включен.

Если сделать так:
DEFINE HSER_EVEN 0
DEFINE HSER_ODD 0
То контроля чётности не будет.

Прикрепления: 2283297.ht (39.2 Kb)


Используйте симулятор ПРОТУЕС !!! Реальная вещь!!
Я снова тут, но не всегда свободен.
ADMIN Дата: Пт, 25.09.2009, 20:04  |                                                                                                                Сообщение # 5
Администратор
Группа: Администраторы
Ранг:  Специалист
Сообщений: 1087
Репутация: 32   ±
Замечания:   ±
На сайте с 20.08.2007

Статус: Offline

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

DEFINE HSER_RCSTA 90h
DEFINE HSER_TXSTA 24h
DEFINE HSER_BAUD 9600
DEFINE HSER_SPBRG 129
Для расчета значений регистров USART рекомендую использовать (пока!) программу ProtonHeaderMaker. В будущем, возможно, будет сделана аналогичная программа для PBP.
ecilop Дата: Пт, 25.09.2009, 20:10  |                                                                                                                Сообщение # 6
Группа: Пользователи
Ранг:  Новенький
Сообщений: 13
Репутация: 0   ±
Замечания:   ±
На сайте с 08.04.2009

Статус: Offline

да что-то не работает smile ...продолжу завтра, спасибо. Может оно не может правильно расчитать кварц на 20 мегогерц....
ADMIN Дата: Пт, 25.09.2009, 20:11  |                                                                                                                Сообщение # 7
Администратор
Группа: Администраторы
Ранг:  Специалист
Сообщений: 1087
Репутация: 32   ±
Замечания:   ±
На сайте с 20.08.2007

Статус: Offline

Что не работает?
ADMIN Дата: Пт, 25.09.2009, 20:16  |                                                                                                                Сообщение # 8
Администратор
Группа: Администраторы
Ранг:  Специалист
Сообщений: 1087
Репутация: 32   ±
Замечания:   ±
На сайте с 20.08.2007

Статус: Offline

BRGH = 1 или 0
при 20 Мгц он должен быть 1
ecilop Дата: Чт, 01.10.2009, 15:48  |                                                                                                                Сообщение # 9
Группа: Пользователи
Ранг:  Новенький
Сообщений: 13
Репутация: 0   ±
Замечания:   ±
На сайте с 08.04.2009

Статус: Offline

Ага...все заработало smile программка классная для расчетов задержек smile Программлю дальше. Спасибо.

Добавлено (28.09.2009, 12.31.31)
---------------------------------------------
Да вот, теперь думаю как приме организовать, как часто надо считывать данные с буфера и когда он переполнится, то что будет?

Добавлено (29.09.2009, 19.12.10)
---------------------------------------------
Кстати, наткнулся на проблему, не могу вывести в читабельном виде текст, не совпадает кодировка...
WOOOOOOOW выводится, и некоторые другие слова тоже...Оствльные превращаются в абру кадабру. Не ужели надо писать какую-то таблицу перекодировки?
На терминале пробовал ставить КОИ-8, 1251...

Добавлено (30.09.2009, 19.22.46)
---------------------------------------------
Все таки не работает, передается с ошибками...уже все пробовал sad проскакивают нужные последовательности символов но восновном муссор. Пробовал от 4 МГЦ, внутреннего генератора, вобще ничего не поулчилось, сплошной мусор. Задержки расчитывал предложенной сдесь утилиткой.

DEFINE osc 20
DEFINE HSER_RCSTA 90h
DEFINE HSER_TXSTA 24h
DEFINE HSER_BAUD 9600
DEFINE HSER_SPBRG 129
DEFINE HSER_EVEN 0
DEFINE HSER_ODD 0
DEFINE HSER_BRGH 1
B var word
T var word

HZ1:
'pause 100
'hserout ["B= ",B]
'HSERIN HZ2,100,hz3,[B,T]
'goto HZ1

'HZ2:
'hserout [207,208,200,194,197,210,81]

HZ3:
hserout ["1234567890","abcdefgh,ABCDFGH, 224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,81"]
goto HZ1
end

Добавлено (01.10.2009, 15.48.14)
---------------------------------------------
Между тем если использовать программну эмуляцию порта, то все работает так как я хочу....:(
Но этоже бред...если есть аппаратная реализация.

ВОт фрагмент, все работает замечательно.

Include "modedefs.bas" ' Include serial modes

DEFINE osc 20
hz1:
SEROUT portb.2,T9600,["mi rulim"]
goto HZ1

Dmitry Дата: Чт, 01.10.2009, 22:37  |                                                                                                                Сообщение # 10
Группа: Пользователи
Ранг:  Могу и подсказать
Сообщений: 157
Репутация: 6   ±
Замечания:   ±
На сайте с 12.05.2009

Статус: Offline

Это... а пик к сом-порту подключен через MAX? А то мало ли...

Quote (ecilop)
Но этоже бред...если есть аппаратная реализация.

ничего не бред. Надо брать пример с природы, которая делает не по принципу как лучше, а по принципу лишь бы работало smile
А то излишний перфекционизм потом спать по ночам не дает. Шучу.
DIKTATOR Дата: Пн, 05.10.2009, 14:21  |                                                                                                                Сообщение # 11
Группа: Проверенные
Ранг:  Понимаю
Сообщений: 76
Репутация: 2   ±
Замечания:   ±
На сайте с 24.07.2008

Статус: Offline

Code
DEFINE osc 20
DEFINE HSER_RCSTA 90h
DEFINE HSER_TXSTA 20h
DEFINE HSER_BAUD 2400
DEFINE HSER_SPBRG 255
DEFINE HSER_EVEN 1
DEFINE HSER_ODD 0
DEFINE HSER_BRGH 1

specBYTE var BYTE
specBYTE = 0

HZ3:
hserout [specBYTE]
specBYTE = specBYTE + 1
goto HZ3

в ответ на это Pic Simulator IDE мне присылает что то на своём языке, посылает видимо за хлебом:

Может упустили ещё что нибудь? В симуляторе вроде настроек нету для этой команды, думаю берёт из хекс файла данные.
Некоторые символы например 12 4 78 итд стоят на месте, W и O наверно тоже, поэтому выводилось слово нормально, остальные перепутаны.

Прикрепления: 2602718.gif (15.1 Kb)


Используйте симулятор ПРОТУЕС !!! Реальная вещь!!
Я снова тут, но не всегда свободен.
ЯНДЕКС Дата: 05.10.2009
megavolt85 Дата: Пн, 01.03.2010, 21:30  |                                                                                                                Сообщение # 12
Группа: Проверенные
Ранг:  Новенький
Сообщений: 16
Репутация: 0   ±
Замечания:   ±
На сайте с 10.01.2010

Статус: Offline

Quote (ADMIN)
Для расчета значений регистров USART рекомендую использовать (пока!) программу ProtonHeaderMaker.

не нашел кнопки "спасибо" поэтому пишу. Выражаю огромную благодарность , неделю не мог принять команду от мобилы, а при помощи этой проги всё зработало в пять секунд. всем рекомендую
DNM Дата: Вт, 04.10.2011, 23:38  |                                                                                                                Сообщение # 13
Группа: Проверенные
Ранг:  Понимаю
Сообщений: 75
Репутация: 0   ±
Замечания:   ±
На сайте с 29.09.2011

Статус: Offline

' PORTB pins RB4 and RB7 are configured as RS232 TX and RX lines respecti
' RB0 is connected to pin 2 of the RS232 connector. Similarly, RB1 is connected
' to pin 3 of the RS232 connector. The communication parameters are selected a
'follows:
'9600 baud
Include "modedefs.bas" ' Include serial modes

Mode var byte
RS232_out var PORTB.4 ' RB4 is RS232 output
RS232_in var PORTB.7 ' RB7 is RS232 input

start:
LCDOUT $FE,2, "InpuT: "
SERIN RS232_in,T9600,Mode
Lcdout $FE,$C0, "value: ", Mode

SEROUT RS232_out, T9600, ["PORTB pins are configured as RS232 TX and RX lines respect"]
'SEROUT RS232_out, T9600, [#Mode]

pause 1000

goto start


Более подробно здесь: http://asemlab.net/
Diaz Дата: Вт, 29.09.2015, 02:47  |                                                                                                                Сообщение # 14
Группа: Пользователи
Ранг:  Начал соображать
Сообщений: 27
Репутация: 0   ±
Замечания:   ±
На сайте с 10.08.2015

Статус: Offline

человеки) извольте тыкнуть новичка носом в щааастье описание конфигурационных битов angel пжалста)
ADMIN Дата: Вт, 29.09.2015, 06:27  |                                                                                                                Сообщение # 15
Администратор
Группа: Администраторы
Ранг:  Специалист
Сообщений: 1087
Репутация: 32   ±
Замечания:   ±
На сайте с 20.08.2007

Статус: Offline

Здесь...
Форум Picbasic.ru » Программирование МК » PicBasicPro » PIC16f628 и RS232 (HSEROUT HSERIN) (Приём и передача по аппаратному интерфейсу RS232 (USART))
  • Страница 1 из 1
  • 1
Поиск: