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

 
 
> USART0_RXC_vect, есть у кого рабочий пример прерывания?
d71
сообщение May 11 2007, 06:41
Сообщение #1


Частый гость
**

Группа: Новичок
Сообщений: 91
Регистрация: 24-12-05
Из: г. Благовещенск
Пользователь №: 12 614



само прерывание ловлю, ногой дрыгаю, а вот при попытке сделать передачу байта, который поймал, всё виснет и больше уже ниодной ногой не дергает.
--
думаю что поглядев на реализацию пойму где застрял.
поделитесь а? (iar)


--------------------
нет ничего невозможного, есть трудные пути... других не ищем
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов (1 - 3)
Igor26
сообщение May 11 2007, 07:44
Сообщение #2


Знающий
****

Группа: Свой
Сообщений: 521
Регистрация: 10-02-05
Пользователь №: 2 544



Покажи код инициализации UART и обработчика прерывания RXC.
И как ты передаешь принатый байт?
Go to the top of the page
 
+Quote Post
Kuzmi4
сообщение May 11 2007, 08:00
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 3 304
Регистрация: 13-02-07
Из: 55°55′5″ 37°52′16″
Пользователь №: 25 329



Да, неплохо было б код посмотреть.
А на счёт отправки - получения - в прицепленном файле посмотрите - там вырезанный кусок моей проги - там как раз в прерывании по РХ инициируется пердача.
камень - мега 168-я...
//////////////////
Функции типа PUT_HEAD или PUT_TAIL - просто ложат в Work.tbuffer[чё то там] нужный байт откуда то.

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

wCRC - рассчитанная црц для пакета.
структура - Name1 - типа юнион 2-х байт и интегера.
//////////////////


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


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

Сообщение отредактировал Kuzmi4 - May 11 2007, 08:00
Прикрепленные файлы
Прикрепленный файл  USART_example.txt ( 12.46 килобайт ) Кол-во скачиваний: 85
 
Go to the top of the page
 
+Quote Post
Dog Pawlowa
сообщение May 11 2007, 08:13
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 2 702
Регистрация: 14-07-06
Пользователь №: 18 823



Цитата(d71 @ May 11 2007, 09:41) *
само прерывание ловлю, ногой дрыгаю, а вот при попытке сделать передачу байта, который поймал, всё виснет и больше уже ниодной ногой не дергает.
--
думаю что поглядев на реализацию пойму где застрял.
поделитесь а? (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;
  }
}


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


--------------------
Уходя, оставьте свет...
Go to the top of the page
 
+Quote Post

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

 


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


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