Как правильно пользоваться прерыванием USART на С

Вопросы настройки, программирования, прошивки микроконтроллеров и микросхем программируемой логики
Закрыто
Прорезались зубы
Аватара пользователя
Сообщения: 231
Зарегистрирован: Пн мар 30, 2009 15:58:32
Откуда: Украина Запорожье

Сообщение lkote68 »

Уважаемые Коты подскажите. Мне нужно что бы по приходу строки в USART прервалось считывание термометров и масив значений бы был выдан наружу в виде строки....Ну вроде все работает. Но вот не так

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

while(1)
{
тут функа считывания температур;
for(i=0;i<devices)array[i]=getchar();
потом сравнение и если запрос соответствует выдача строки результата;
}
Енто ж не дело в цикле каждый раз проверять. Нафига ж я ставил в визарде галку прерывания по приходу. Я так понимаю по приходу строки должа быть вызвана функа сравнения ну и соответственно выдачи результата. Подскажите как на микроконтроллерном С энто делается а то я не совсем разобрался.
Реклама
Опытный кот
Аватара пользователя
Сообщения: 828
Зарегистрирован: Пн мар 16, 2009 21:40:57

Сообщение ikarab »

Наверно лучше сделать буфер приема USART и работать с ним асинхронно, вам ведь наверняка не надо мгновенно отвечать. Пример приема и разбора команд поступающих по UART есть в AN696 в PROTEUS.
Последний раз редактировалось ikarab Ср апр 22, 2009 14:39:00, всего редактировалось 1 раз.
Контактная информация:
Реклама
ARV
Ум, честь и совесть. И скромность.
Аватара пользователя
Сообщения: 18786
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск

Сообщение ARV »

lkote68 писал(а):Нафига ж я ставил в визарде галку прерывания по приходу. Я так понимаю по приходу строки должа быть вызвана функа сравнения ну и соответственно выдачи результата.
вы забыли, что прерывание генерируется по приходу символа, а не строки.
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Контактная информация:
Прорезались зубы
Аватара пользователя
Сообщения: 231
Зарегистрирован: Пн мар 30, 2009 15:58:32
Откуда: Украина Запорожье

Сообщение lkote68 »

Уважаемые коты. Подскажите На PCшке в COM пришли данные По событию прихода смотришь сколько там символов и выгребаешь. На Atmele чет не получается У меня буфер 7символов. Если он исходно пустой и я посылаю строку ну скажем "PLC_N01" то все срабатывает.
Срабатывает также если если посылать эту строку после любой посылки из 7 символов. Но если послать посылку пусть даже из 1го а затем "PLC_N01" шиш затык. В цикле я вроде выгребаю все 7 символов из буфера.
Реклама
Эиком - электронные компоненты и радиодетали
ARV
Ум, честь и совесть. И скромность.
Аватара пользователя
Сообщения: 18786
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск

Сообщение ARV »

lkote68 писал(а):Уважаемые коты. Подскажите На PCшке в COM пришли данные По событию прихода смотришь сколько там символов и выгребаешь. На Atmele чет не получается.
не получается не на Атмеле, а "на вашей программе" - разбирайтесь с программой, мы тут не экстрасенсы.
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Контактная информация:
Реклама
Прорезались зубы
Аватара пользователя
Сообщения: 231
Зарегистрирован: Пн мар 30, 2009 15:58:32
Откуда: Украина Запорожье

Сообщение lkote68 »

Ну вот мой код Может подскажете
Вложения
Z1.zip
(2.47 КБ) 313 скачиваний
Реклама
Поставщик валерьянки для Кота
Сообщения: 1957
Зарегистрирован: Пт окт 31, 2008 09:38:55
Откуда: Одесса

Сообщение clawham »

Здравствуйте
У меня вот тоже нарисовалась подобная проблемка
вот сообщение
http://radiokot.ru/forum/viewtopic.php?p=237554#237554
никак не могу понять что такое - то всю ночь работает нормально то....хз в общем что...
Контактная информация:
Закрыто

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