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

 
 
> Проблема с отправкой пaкетов по UDP (AT91SAM7S), наблюдаются пропуски пакетов при приеме
Bulat
сообщение Mar 25 2010, 09:56
Сообщение #1


Местный
***

Группа: Участник
Сообщений: 206
Регистрация: 12-10-06
Из: ufa
Пользователь №: 21 241



Ниже приведен кусок основного цикла программы, отвечающий за формирование и отправку данных через UDP. При приеме данных на хост периодически теряются пакеты (60 байт), а то и по несколько пакетов за раз. Количество потерь возрастает, если подключать девайс к более слабой машине.
Код
while(1)
{
      if(recA_1)         //если 32-битное слово готово к отправке на хост                                                    
          {  
            if(!(regUDP->UDP_CSR[AT91C_EP_IN] & AT91C_UDP_TXPKTRDY))  //если свободен буфер UDP
            {
              unsigned int crc = 0;
              unsigned int by = recA_1;
              for(unsigned int ib=0;ib<32;ib++)  //Подсчет бита четности
              {
                crc = crc^(by&0x1);  
                by >>=1;
              }
              if(crc)
              {
              unsigned int rec = recA_1;
              regUDP->UDP_FDR[AT91C_EP_IN] = 11;        //командное слово
              regUDP->UDP_FDR[AT91C_EP_IN] = rec&0xff;    //Разбивка 32-битного передаваемого слова на байты                
              unsigned int m_stat = rec>>8;        
              regUDP->UDP_FDR[AT91C_EP_IN] = m_stat&0xff;
              m_stat = rec>>16;
              regUDP->UDP_FDR[AT91C_EP_IN] = m_stat&0xff;
              m_stat = rec>>24;
              regUDP->UDP_FDR[AT91C_EP_IN] = m_stat&0xff;
              kA--;  // счетчик записанных слов в FIFO UDP
              }// if(rcrc1)
            }
            recA_1 = 0;
            
            if(kA==0)  //Если FIFO заполнен (12 слов по 5 байт, 60 байт)
            {
              regUDP->UDP_CSR[AT91C_EP_IN] |= AT91C_UDP_TXPKTRDY;
              regUDP->UDP_CSR[AT91C_EP_IN] &= ~(AT91C_UDP_TXCOMP);            
              kA=12;
            }  
          }

}//while(1)


Почему потеря при приеме хостом идет пакетами? Как пользоваться 2-мя банками при передачи на хост?
Go to the top of the page
 
+Quote Post



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

 


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


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