Страница 1 из 1
Как правильно пользоваться прерыванием USART на С
Добавлено: Ср апр 22, 2009 13:37:56
lkote68
Уважаемые Коты подскажите. Мне нужно что бы по приходу строки в USART прервалось считывание термометров и масив значений бы был выдан наружу в виде строки....Ну вроде все работает. Но вот не так
Код: Выделить всё
while(1)
{
тут функа считывания температур;
for(i=0;i<devices)array[i]=getchar();
потом сравнение и если запрос соответствует выдача строки результата;
}
Енто ж не дело в цикле каждый раз проверять. Нафига ж я ставил в визарде галку прерывания по приходу. Я так понимаю по приходу строки должа быть вызвана функа сравнения ну и соответственно выдачи результата. Подскажите как на микроконтроллерном С энто делается а то я не совсем разобрался.
Добавлено: Ср апр 22, 2009 14:18:10
ikarab
Наверно лучше сделать буфер приема USART и работать с ним асинхронно, вам ведь наверняка не надо мгновенно отвечать. Пример приема и разбора команд поступающих по UART есть в AN696 в PROTEUS.
Re: Как правильно пользоваться прерыванием USART на С
Добавлено: Ср апр 22, 2009 14:29:47
ARV
lkote68 писал(а):Нафига ж я ставил в визарде галку прерывания по приходу. Я так понимаю по приходу строки должа быть вызвана функа сравнения ну и соответственно выдачи результата.
вы забыли, что прерывание генерируется по приходу символа, а не строки.
Как правильно пользоваться прерыванием USART на С
Добавлено: Чт апр 23, 2009 09:27:34
lkote68
Уважаемые коты. Подскажите На PCшке в COM пришли данные По событию прихода смотришь сколько там символов и выгребаешь. На Atmele чет не получается У меня буфер 7символов. Если он исходно пустой и я посылаю строку ну скажем "PLC_N01" то все срабатывает.
Срабатывает также если если посылать эту строку после любой посылки из 7 символов. Но если послать посылку пусть даже из 1го а затем "PLC_N01" шиш затык. В цикле я вроде выгребаю все 7 символов из буфера.
Re: Как правильно пользоваться прерыванием USART на С
Добавлено: Чт апр 23, 2009 09:35:47
ARV
lkote68 писал(а):Уважаемые коты. Подскажите На PCшке в COM пришли данные По событию прихода смотришь сколько там символов и выгребаешь. На Atmele чет не получается.
не получается не на Атмеле, а "на вашей программе" - разбирайтесь с программой, мы тут не экстрасенсы.
Как правильно пользоваться прерыванием USART на С
Добавлено: Чт апр 23, 2009 09:49:13
lkote68
Ну вот мой код Может подскажете
Добавлено: Вс июн 14, 2009 14:28:41
clawham
Здравствуйте
У меня вот тоже нарисовалась подобная проблемка
вот сообщение
http://radiokot.ru/forum/viewtopic.php?p=237554#237554
никак не могу понять что такое - то всю ночь работает нормально то....хз в общем что...