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

 
 
> Как грамотные люди делают прием пакетов по USART
TamTam
сообщение Jun 5 2006, 01:11
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 293
Регистрация: 14-03-06
Пользователь №: 15 254



Ну написал с горем пополам обработку прирывания по окончанию приема байта, процедурку копирования из буфера в eeprom, но вот вопрос ???

Данные приходят всегда по разному иногда в нужной мне строке символ 0х0d и 0х0а встречаються несколько раз значит обработка пришедших данныш по окончанию строки мне не подходит, думаю так
после окончания приема запускать таймер и если за отведенное время не поступит следующий байт тогда начинать обработку данных а если данные еще идут то складываем их в еепром.

Правильно ли я мыслю или может есть способ по приличней, ведь таймер нужная и без этого весчь.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
TamTam
сообщение Jun 5 2006, 01:59
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 293
Регистрация: 14-03-06
Пользователь №: 15 254



Цитата(kertis @ Jun 5 2006, 05:48) *
не очень понял ваше изложение.

Может вам просто буфер создать и спокойно обрабатывать данные когда МК "свооден" ? Буфер нужного размера вам автоматически нарисует CVAVR и пример есть в задаче 5 запрещенного курса.


я конечно наченающий но немного соображаю,

Буфер у меня 32 байта а информации иной раз и все 200 приходит, поэтому в обработке прерывания по приему байта я делаю так

Код
interrupt [UART_RXC] void uart_rx_isr(void)
{
char status,data;
int i=2;
status=USR;
data=UDR;
if (data != 0x0A)
   {
      if (data != 0x0d)
         {
            if ((status & (FRAMING_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;
                     };
               };
         }
   }      
   else;
   {
      while(rx_counter != 0x00)
      {
      i++;
      fraza[i]==ReceiveByte();
      }
   }
}


где fraza переменная в еепроме, но из затого что размер полезных данных может меняться от 4 до 190 байт мне както нужно организовать обработку этих данных, когда начать ??? данные могут идти с разной интенсивностью.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- TamTam   Как грамотные люди делают прием пакетов по USART   Jun 5 2006, 01:11
- - rat   Принимаемый поток организуете Вы же? Если так, то ...   Jun 5 2006, 02:36
|- - TamTam   Цитата(rat @ Jun 5 2006, 06:36) Принимаем...   Jun 5 2006, 02:49
- - haker_fox   Может быть эта ссылка Вам поможет?   Jun 5 2006, 03:04
- - TamTam   Цитата(haker_fox @ Jun 5 2006, 07:04) Мож...   Jun 5 2006, 03:44
- - beer_warrior   Идея правильная, вот пример кода который кочует из...   Jun 5 2006, 05:24
- - WHALE   Судя по 0A,0D-это модем.Действительн,в eeprom заче...   Jun 5 2006, 05:44
- - vet   Цитата(TamTam @ Jun 5 2006, 05:11) Ну нап...   Jun 5 2006, 05:59
- - Nanobyte   Лучше применять не RAM со всеми его недостатками, ...   Jun 5 2006, 07:39
- - WHALE   а почем нынче fram ?   Jun 5 2006, 07:56
|- - otrog   Цитата(WHALE @ Jun 5 2006, 11:56) а почем...   Jun 5 2006, 09:22
- - beer_warrior   Насколько я понял человек пишет во внутреннюю EEPR...   Jun 5 2006, 08:44
- - TamTam   Цитата(WHALE @ Jun 5 2006, 09:44) Судя по...   Jun 6 2006, 02:06
- - vesago   Мне понравилось как у Атмела сделано. Я такую конс...   Jun 6 2006, 08:08
- - TamTam   Цитата(vesago @ Jun 6 2006, 12:08) Мне по...   Jun 6 2006, 08:46
|- - Sergiy   Да, обратите внимание на фразу, что в обработчиках...   Jun 6 2006, 09:15
- - TamTam   Цитата(Sergiy @ Jun 6 2006, 13:15) Да, об...   Jun 6 2006, 09:38
- - Sergiy   Цитата(TamTam @ Jun 6 2006, 11:38) Цитата...   Jun 7 2006, 08:03
- - Sergiy   Цитата(TamTam @ Jun 6 2006, 11:38) Цитата...   Jun 7 2006, 08:15


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

 


RSS Текстовая версия Сейчас: 22nd July 2025 - 04:09
Рейтинг@Mail.ru


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