Вопрос по работе с RS232?

Вопросы настройки, программирования, прошивки микроконтроллеров и микросхем программируемой логики
Закрыто
Родился
Сообщения: 7
Зарегистрирован: Ср ноя 11, 2009 17:27:25

Сообщение LeonVS »

Есть команда Input для ввода данных, но на этой команде МК впадает в ступор пока не придет инфа с ком порта... Это не есть хорошо, как это обойти? Требуется чтоб цикл крутился, но при приходе данных они обрабатывались. В общей как сделать чтоб Input не стопорил прогу?
Реклама
Модератор
Аватара пользователя
Сообщения: 11492
Зарегистрирован: Чт дек 11, 2008 14:52:26
Откуда: град Нижний

Сообщение МитяРа »

Принимай данные по прерыванию от последовательного порта... :tea:
Реклама
sun
Первый раз сказал Мяу!
Сообщения: 32
Зарегистрирован: Ср окт 07, 2009 10:07:02
Откуда: Минск

Сообщение sun »

Прерывания. Конкретно, на получение байта с USART.
Основной цикл программы будет работать, пока не появятся данные в порту, при поступлении прервётся выполнение основной программы и управление перейдёт в обработчик.
Контактная информация:
Родился
Сообщения: 7
Зарегистрирован: Ср ноя 11, 2009 17:27:25

Сообщение LeonVS »

sun писал(а):Прерывания. Конкретно, на получение байта с USART.
Основной цикл программы будет работать, пока не появятся данные в порту, при поступлении прервётся выполнение основной программы и управление перейдёт в обработчик.
Как раз то что нужно! :)
Эм... я в МК еще сАвсЭм ламер, только начал изучение, сейчас собираю электро печку для авто, управление с КарПС, вот потребовалось общение с компом... :)
Можно код в баскоме как сие реализовать если не сложно???
Реклама
Эиком - электронные компоненты и радиодетали
sun
Первый раз сказал Мяу!
Сообщения: 32
Зарегистрирован: Ср окт 07, 2009 10:07:02
Откуда: Минск

Сообщение sun »

LeonVS писал(а):
sun писал(а):Прерывания. Конкретно, на получение байта с USART.
Основной цикл программы будет работать, пока не появятся данные в порту, при поступлении прервётся выполнение основной программы и управление перейдёт в обработчик.
Как раз то что нужно! :)
Эм... я в МК еще сАвсЭм ламер, только начал изучение, сейчас собираю электро печку для авто, управление с КарПС, вот потребовалось общение с компом... :)
Можно код в баскоме как сие реализовать если не сложно???
Я сам начинаю только разбираться с контроллерами, писал в си (WinAVR), могу исходник предложить почитать.
А так всё в даташите описано, довольно таки понятно.

Исходником помогу только вечером, когда буду дома, на флешке не оказалось.
Контактная информация:
Реклама
Родился
Сообщения: 7
Зарегистрирован: Ср ноя 11, 2009 17:27:25

Сообщение LeonVS »

Увы, с СИ не дружу совсем...
Знаю басик со школьных времен, на нем собственно и пишу софтинку :) Термометр здесь нашел разобрался, пашет выплевывая данные на ком порт, теперь вот надо прием данных победить :)
Реклама
sun
Первый раз сказал Мяу!
Сообщения: 32
Зарегистрирован: Ср окт 07, 2009 10:07:02
Откуда: Минск

Сообщение sun »

LeonVS писал(а):Увы, с СИ не дружу совсем...
Знаю басик со школьных времен, на нем собственно и пишу софтинку :) Термометр здесь нашел разобрался, пашет выплевывая данные на ком порт, теперь вот надо прием данных победить :)
вот с бейсиком я лет так дцать уже как не дружу, пока что только си
Контактная информация:
Родился
Сообщения: 7
Зарегистрирован: Ср ноя 11, 2009 17:27:25

Сообщение LeonVS »

sun писал(а): вот с бейсиком я лет так дцать уже как не дружу, пока что только си
Жаль, ну чтож, будем ждать помощи от тех кто пишет в БАСКОМе:)
Не ожидал что так оперативно здесь отвечают :) Думал придется ждать пару дней :) Хороший форум однака ;-)
Модератор
Аватара пользователя
Сообщения: 11492
Зарегистрирован: Чт дек 11, 2008 14:52:26
Откуда: град Нижний

Сообщение МитяРа »

LeonVS по БАСКОМу те может сюда лучше: http://radiokot.ru/forum/viewtopic.php?p=63543#63543
Поставщик валерьянки для Кота
Аватара пользователя
Сообщения: 2106
Зарегистрирован: Ср сен 17, 2008 14:32:15
Откуда: Старые Васюки

Сообщение Секретный кот »

Если в баскоме, то используйте для приёма прерывание On URXC. Соответственно надо разрешить глобальные прерывания, разрешить URXC и указать метку, где будет лежать обработчик.
Даже остановленные часы два раза в сутки показывают правильное время.
Контактная информация:
Родился
Сообщения: 7
Зарегистрирован: Ср ноя 11, 2009 17:27:25

Сообщение LeonVS »

Секретный кот писал(а):Если в баскоме, то используйте для приёма прерывание On URXC. Соответственно надо разрешить глобальные прерывания, разрешить URXC и указать метку, где будет лежать обработчик.
К сожалению для меня глобальные прерывания и URXC мало что означают.... А можно для "особо одаренных" разжевать и примерчик привести?
Заранее благодарен!!! :)
Поставщик валерьянки для Кота
Аватара пользователя
Сообщения: 2106
Зарегистрирован: Ср сен 17, 2008 14:32:15
Откуда: Старые Васюки

Сообщение Секретный кот »

Код: Выделить всё

On URXC rs232in
Enable URXC
Enable Interrupts

Maincycle: ;здесь основная зацикленная программа
...
Goto maincycle

rs232in: ;обработчик прерывания
RBYTE = UDR ;считывание принятого по UART байта
Return
Последний принятый байт всегда будет помещаться в переменную RBYTE, с которой сможет работать основная программа.
Даже остановленные часы два раза в сутки показывают правильное время.
Контактная информация:
Родился
Сообщения: 7
Зарегистрирован: Ср ноя 11, 2009 17:27:25

Сообщение LeonVS »

Секретный кот писал(а):

Код: Выделить всё

On URXC rs232in
Enable URXC
Enable Interrupts

Maincycle: ;здесь основная зацикленная программа
...
Goto maincycle

rs232in: ;обработчик прерывания
RBYTE = UDR ;считывание принятого по UART байта
Return
Последний принятый байт всегда будет помещаться в переменную RBYTE, с которой сможет работать основная программа.
Все так просто??? СПАСИБО!!! Завтра буду тестить :)
А можно:
Maincycle:
...
Goto maincycle
Заменить на:
DO
...
LOOP
Поставщик валерьянки для Кота
Аватара пользователя
Сообщения: 2106
Зарегистрирован: Ср сен 17, 2008 14:32:15
Откуда: Старые Васюки

Сообщение Секретный кот »

LeonVS писал(а):А можно:
Maincycle:
...
Goto maincycle
Заменить на:
DO
...
LOOP
Легко :))
Я просто по привычке использую Goto метку, чтобы можно было на неё перепрыгивать из любого места основного цикла.
Даже остановленные часы два раза в сутки показывают правильное время.
Контактная информация:
Родился
Сообщения: 7
Зарегистрирован: Ср ноя 11, 2009 17:27:25

Сообщение LeonVS »

Секретный кот писал(а):
LeonVS писал(а):А можно:
Maincycle:
...
Goto maincycle
Заменить на:
DO
...
LOOP
Легко :))
Я просто по привычке использую Goto метку, чтобы можно было на неё перепрыгивать из любого места основного цикла.
СПАСИБ!!! Все крутится как мне и надо, даже не ожидал что так все просто :)
Поставщик валерьянки для Кота
Аватара пользователя
Сообщения: 2106
Зарегистрирован: Ср сен 17, 2008 14:32:15
Откуда: Старые Васюки

Сообщение Секретный кот »

LeonVS писал(а):СПАСИБ!!! Все крутится как мне и надо, даже не ожидал что так все просто :)
Н З ЧТ )))
Даже остановленные часы два раза в сутки показывают правильное время.
Контактная информация:
Закрыто

Вернуться в «Микроконтроллеры и ПЛИС»