Перейти к содержанию
    

USART0_RXC_vect

само прерывание ловлю, ногой дрыгаю, а вот при попытке сделать передачу байта, который поймал, всё виснет и больше уже ниодной ногой не дергает.

--

думаю что поглядев на реализацию пойму где застрял.

поделитесь а? (iar)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Покажи код инициализации UART и обработчика прерывания RXC.

И как ты передаешь принатый байт?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Да, неплохо было б код посмотреть.

А на счёт отправки - получения - в прицепленном файле посмотрите - там вырезанный кусок моей проги - там как раз в прерывании по РХ инициируется пердача.

камень - мега 168-я...

//////////////////

Функции типа PUT_HEAD или PUT_TAIL - просто ложат в Work.tbuffer[чё то там] нужный байт откуда то.

 

do_str.bb[чё то там] - просто статусный байты для манагера - если они устанавливаются или сбрасываются - то систаймер чё то там делает.

 

wCRC - рассчитанная црц для пакета.

структура - Name1 - типа юнион 2-х байт и интегера.

//////////////////

 

 

А так вроде всё понятно должно быть..

 

 

------------------

да забыл - это в ГЦЦ

USART_example.txt

Изменено пользователем Kuzmi4

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

само прерывание ловлю, ногой дрыгаю, а вот при попытке сделать передачу байта, который поймал, всё виснет и больше уже ниодной ногой не дергает.

--

думаю что поглядев на реализацию пойму где застрял.

поделитесь а? (iar)

Только прием и заталкивание пакета фиксированного пакета с известными первым и последним байтами в линейный буфер.

 

#pragma vector = USART_RXC_vect
__interrupt void USART_receive(void)
{    uchar b = UDR;
  uart0.rx_flag=1;
  uart0.rx_char=b;
  { if (uart0.rx_head == uart0.rx_buf)
      { if (!(b == uart0.start_rx_char))
          return;
      }
    *uart0.rx_head = b;
    uart0.rx_head ++;
    if (uart0.rx_head >= uart0.rx_buf+uart0.packet_size)
        uart0.rx_status=Uart0Received;
    if (b == uart0.end_rx_char) uart0.rx_status=Uart0Received;
  }
}

 

А старт отправки у меня отдельно.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...