реклама на сайте
подробности

 
 
> USART - Прерывание раньше времени?
Anub
сообщение Aug 4 2008, 02:42
Сообщение #1


Участник
*

Группа: Новичок
Сообщений: 47
Регистрация: 26-05-08
Пользователь №: 37 825



Код
bit sf=0;

Код
interrupt [USART_RXC] void usart_rx_isr(void)
{
char status,data;
status=UCSRA;
data=UDR;
if ((status & (FRAMING_ERROR | PARITY_ERROR | DATA_OVERRUN))==0)
   {
   rx_buffer[rx_wr_index]=data;
   if (++rx_wr_index == RX_BUFFER_SIZE) rx_wr_index=0;
   if (++rx_counter == RX_BUFFER_SIZE)
      {
      rx_counter=0;
      rx_buffer_overflow=1;
      };
   };
  sf=1;
}

Код
void check(void)
{  
     if (sf!=0)
       {
         char c;
         c=getchar();
           if (c!="")
               {
                 PORTA=0x07;
               } else {
                 PORTA=0x0B;
               }
         }
}

При запуске я получаю результат проверки условия в функции check, т. е. sf==1, и по идее было вызвано прерывание по приему символа, это как так, у меня нога RXD в воздухе весит...

Сообщение отредактировал Anub - Aug 4 2008, 02:42
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
SysRq
сообщение Aug 4 2008, 14:37
Сообщение #2


Чайник, 1 литр
****

Группа: Свой
Сообщений: 655
Регистрация: 17-05-06
Из: Moscow
Пользователь №: 17 168



Обьявить sf как volatile, RXD завести куда следует, учесть замечания указанные выше...

Остальной код генерит я так понимаю визард cvavr (в том числе и getchar() -- там она не библиотечная (чиатет как раз байт из буфера), автор ее просто не показал), и проверять его смысла нет, он рабочий.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Anub   USART - Прерывание раньше времени?   Aug 4 2008, 02:42
- - haker_fox   Цитата(Anub @ Aug 4 2008, 11:42) При запу...   Aug 4 2008, 03:20
|- - defunct   Цитата(haker_fox @ Aug 4 2008, 06:20) if ...   Aug 4 2008, 10:37
|- - 777777   Цитата(defunct @ Aug 4 2008, 14:37) ...   Aug 4 2008, 11:34
|- - defunct   Цитата(777777 @ Aug 4 2008, 14:34) if (c ...   Aug 4 2008, 13:16
- - =GM=   Цитата(Anub @ Aug 4 2008, 01:42) При запу...   Aug 4 2008, 13:16
|- - =GM=   Цитата(SysRq @ Aug 4 2008, 13:37) Остальн...   Aug 4 2008, 15:14
- - SysRq   А std* это по-вашему что? Стандартная библиотека...   Aug 4 2008, 15:29
|- - =GM=   То есть, по-вашему, если функция находится в станд...   Aug 4 2008, 16:03
- - WHALE   Цитата(=GM= @ Aug 4 2008, 20:03) То есть,...   Aug 5 2008, 11:39
- - =GM=   Цитата(WHALE @ Aug 5 2008, 10:39) а getch...   Aug 5 2008, 11:53
- - SysRq   Цитата(=GM= @ Aug 5 2008, 15:53) Если бы ...   Aug 5 2008, 12:27
- - =GM=   Цитата(SysRq @ Aug 5 2008, 11:27) А он та...   Aug 5 2008, 12:33
- - SysRq   Цитата(=GM= @ Aug 5 2008, 16:33) Что, и о...   Aug 5 2008, 15:15
- - =GM=   Цитата(SysRq @ Aug 5 2008, 14:15) Нет, эт...   Aug 5 2008, 16:02
- - SysRq   Цитата(=GM= @ Aug 5 2008, 20:02) Ну как ж...   Aug 5 2008, 17:23
- - =GM=   Ну и кто тут флеймит? Модераторы, нельзя ли убрат...   Aug 5 2008, 19:28


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 20th July 2025 - 13:14
Рейтинг@Mail.ru


Страница сгенерированна за 0.02137 секунд с 7
ELECTRONIX ©2004-2016