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

 
 
> SAM7x256 & USB
Timofey
сообщение Jul 19 2009, 07:40
Сообщение #1


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

Группа: Участник
Сообщений: 119
Регистрация: 3-07-06
Пользователь №: 18 528



Код на прием такой
Код
uint AT91F_UDP_Read(AT91PS_CDC pCdc, char *pData, uint length)
{
AT91PS_UDP pUdp = pCdc->pUdp;
uint packetSize, nbBytesRcv = 0, currentReceiveBank = pCdc->currentRcvBank;
if ((pUdp->UDP_CSR[AT91C_EP_OUT] & AT91C_UDP_RX_DATA_BK0)||(pUdp->UDP_CSR[AT91C_EP_OUT] & AT91C_UDP_RX_DATA_BK1))
{
  return 0;//то есть, если не было ни одного пакета принято, то просто выходим
}
while (length) {
  if ( !AT91F_UDP_IsConfigured(pCdc) )
   break;
  if ( pUdp->UDP_CSR[AT91C_EP_OUT] & currentReceiveBank ) {
   packetSize = MIN(pUdp->UDP_CSR[AT91C_EP_OUT] >> 16, length);
   length -= packetSize;
   if (packetSize < AT91C_EP_OUT_SIZE)
    length = 0;
   while(packetSize--)
    pData[nbBytesRcv++] = pUdp->UDP_FDR[AT91C_EP_OUT];
   pUdp->UDP_CSR[AT91C_EP_OUT] &= ~(currentReceiveBank);
   if (currentReceiveBank == AT91C_UDP_RX_DATA_BK0)
    currentReceiveBank = AT91C_UDP_RX_DATA_BK1;
   else
    currentReceiveBank = AT91C_UDP_RX_DATA_BK0;</P> <P>  }
}
        pUdp->UDP_CSR[AT91C_EP_OUT] &= ~(AT91C_UDP_TXCOMP);
pCdc->currentRcvBank = currentReceiveBank;
return nbBytesRcv;</P> <P>}

код на передачу
Код
uint AT91F_UDP_Write(AT91PS_CDC pCdc, const char *pData, uint length)
{
AT91PS_UDP pUdp = pCdc->pUdp;
uint cpt = 0;</P> <P>        if ((pUdp->UDP_CSR[AT91C_EP_IN] & AT91C_UDP_TXPKTRDY))
{
  return 0;//если усб готово к передаче, то начинаем её
}
pUdp->UDP_CSR[AT91C_EP_IN] &= ~(AT91C_UDP_TXCOMP);
cpt = MIN(length, AT91C_EP_IN_SIZE);
length -= cpt;
while (cpt--) pUdp->UDP_FDR[AT91C_EP_IN] = *pData++;
pUdp->UDP_CSR[AT91C_EP_IN] |= AT91C_UDP_TXPKTRDY;</P> <P> while (length) {
  cpt = MIN(length, AT91C_EP_IN_SIZE);
  length -= cpt;
  while (cpt--) pUdp->UDP_FDR[AT91C_EP_IN] = *pData++;
  while ( !(pUdp->UDP_CSR[AT91C_EP_IN] & AT91C_UDP_TXCOMP) )
   if ( !AT91F_UDP_IsConfigured(pCdc) ) return length;
  pUdp->UDP_CSR[AT91C_EP_IN] &= ~(AT91C_UDP_TXCOMP);
  while (pUdp->UDP_CSR[AT91C_EP_IN] & AT91C_UDP_TXCOMP);
  pUdp->UDP_CSR[AT91C_EP_IN] |= AT91C_UDP_TXPKTRDY;
}
return length;
}

в основном цикле я поочередно вызываю сначала чтение, потом запись. И получается, что посылка отправляется только тогда, когда произойдет прием посылки. Если убрать чтение в основном цикле, то передача идет всегда. Почему так? Мне нужно принимать контроллером всего 2 байта, а передавать 256, друг за другом. Причем 2 байта могут быть посланы контроллеру не всегда.
получается следующее
Код
pCDC.Read(&pCDC, ((char *) &data_comp), 2);
if ((length>256))
      {
pCDC.Write(&pCDC, data, length);
}

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

Сообщений в этой теме
- Timofey   SAM7x256 & USB   Jul 19 2009, 07:40
- - aaarrr   Кодif ((pUdp->UDP_CSR[AT91C_EP_OUT...   Jul 19 2009, 08:08
- - Timofey   Точно .... Мда, стыдно стало ... Спасибо. Тема зак...   Jul 19 2009, 08:23
- - prottoss   Всем доброго времени суток. Не стал открывать нову...   Oct 29 2009, 05:28
- - aaarrr   В процедуре установки адреса криминала действитель...   Oct 29 2009, 12:47
|- - prottoss   Цитата(aaarrr @ Oct 29 2009, 19:47) Уж не...   Oct 29 2009, 13:06
|- - aaarrr   Цитата(prottoss @ Oct 29 2009, 16:06) Да ...   Oct 29 2009, 13:19
|- - prottoss   Цитата(aaarrr @ Oct 29 2009, 20:19) Распе...   Oct 29 2009, 14:19
|- - aaarrr   Цитата(prottoss @ Oct 29 2009, 17:19) Ну ...   Oct 29 2009, 15:04
|- - prottoss   Цитата(aaarrr @ Oct 29 2009, 22:04) Т.е. ...   Oct 29 2009, 15:31
- - aaarrr   Пардон, по невнимательности не понял источник проб...   Oct 29 2009, 15:56
|- - prottoss   Цитата(aaarrr @ Oct 29 2009, 22:56) Пардо...   Oct 29 2009, 16:16
- - sergeeff   В свое время, занимаясь отладкой USB на at91rm9200...   Oct 29 2009, 17:00
|- - prottoss   Цитата(sergeeff @ Oct 30 2009, 00:00) В с...   Oct 29 2009, 17:10
|- - aaarrr   Цитата(sergeeff @ Oct 29 2009, 20:00) В с...   Oct 29 2009, 17:12
|- - prottoss   Цитата(aaarrr @ Oct 30 2009, 00:12) Жжоте...   Oct 29 2009, 17:19
|- - aaarrr   Цитата(prottoss @ Oct 29 2009, 20:19) пол...   Oct 29 2009, 17:22
- - sergeeff   Увы, я нанятый работник на частной фирме. Посему к...   Oct 29 2009, 17:13
|- - prottoss   Цитата(sergeeff @ Oct 30 2009, 00:13) Увы...   Oct 29 2009, 17:21
- - aaarrr   2 prottoss: Еще присутствует косяк с передачей де...   Oct 29 2009, 17:20
|- - prottoss   Цитата(aaarrr @ Oct 30 2009, 00:20) Еще п...   Oct 29 2009, 17:29
- - sergeeff   Мои наблюдения показали, что в atmel'овских пр...   Oct 29 2009, 19:24
- - aaarrr   Главное не наступить на грабли, любезно предоставл...   Oct 29 2009, 21:10
|- - prottoss   Цитата(aaarrr @ Oct 30 2009, 04:10) Главн...   Oct 29 2009, 21:30
||- - aaarrr   Цитата(prottoss @ Oct 30 2009, 00:30) Ста...   Oct 29 2009, 21:37
||- - mikki   Цитата(prottoss @ Oct 30 2009, 01:30) Кур...   Oct 30 2009, 01:22
||- - AHTOXA   А фраза "чёрный кот" - скрытая пропаганд...   Oct 30 2009, 02:31
|- - overloaded   Цитата(aaarrr @ Oct 30 2009, 00:10) Испол...   Oct 31 2009, 03:23
|- - prottoss   Цитата(overloaded @ Oct 31 2009, 10:23) А...   Oct 31 2009, 05:51
||- - overloaded   Это я какраз видел.. И этот насколько я понимаю но...   Oct 31 2009, 14:59
||- - singlskv   Цитата(overloaded @ Oct 31 2009, 17:59) В...   Oct 31 2009, 15:42
|- - aaarrr   Цитата(overloaded @ Oct 31 2009, 06:23) А...   Oct 31 2009, 16:55
- - prottoss   Поднял наконец то на SAM7X USB полностью на прерыв...   Nov 8 2009, 19:45
|- - aaarrr   Цитата(prottoss @ Nov 8 2009, 22:11) Это ...   Nov 8 2009, 19:46
|- - prottoss   Цитата(aaarrr @ Nov 9 2009, 02:46) Вообще...   Nov 8 2009, 19:52
|- - aaarrr   Цитата(prottoss @ Nov 8 2009, 22:52) Где ...   Nov 8 2009, 20:05
|- - prottoss   Цитата(aaarrr @ Nov 9 2009, 03:05) По спе...   Nov 8 2009, 20:11
- - prottoss   Продолжение темы. Решил оптимизировать прием данны...   Dec 12 2009, 06:36
- - aaarrr   Напишите, как оно по-вашему должно работать, и как...   Dec 12 2009, 13:01
|- - prottoss   Цитата(aaarrr @ Dec 12 2009, 20:01) Напиш...   Dec 12 2009, 15:03
- - ZiB   Всем, день добрый! Прошу извинить что не много...   Dec 14 2009, 06:09
|- - aaarrr   Цитата(ZiB @ Dec 14 2009, 09:09) Можно ли...   Dec 14 2009, 14:16
|- - sonycman   Цитата(ZiB @ Dec 14 2009, 10:09) Можно ли...   Dec 14 2009, 20:57
- - ZiB   Если я правильно понимаю, то для режима Bulk макси...   Dec 15 2009, 03:28
|- - sonycman   Цитата(ZiB @ Dec 15 2009, 07:28) Если я п...   Dec 15 2009, 06:22
- - ZiB   Ух, разобрался. Согласно спецификации на USB 2.0 F...   Dec 15 2009, 09:50
|- - Maximm   Цитата(ZiB @ Dec 15 2009, 12:50) Ух, разо...   Jan 25 2011, 13:52
- - kichnamid   Прошу прощения за вклинивание в эту тему, может, п...   Feb 2 2011, 11:24
|- - Maximm   Цитата(kichnamid @ Feb 2 2011, 14:24) Про...   Feb 3 2011, 15:10
- - kichnamid   у меня к ножке DP сразу припаян пулап резистор. на...   Feb 4 2011, 10:28
- - kichnamid   выявил, что выставляется прерывание ENDBUS, resume...   Feb 14 2011, 11:33
- - MiDV   Может кто знает, как реализовать хост на SAM7X256....   Apr 1 2011, 07:23
- - aaarrr   Никак. Можно только подключить внешнюю микросхему ...   Apr 1 2011, 09:27
- - boyko-alexey   Люди, может кто поделится немудрёным кодом USB-MSD...   May 16 2011, 21:02
- - kovigor   Цитата(boyko-alexey @ May 17 2011, 00...   May 17 2011, 08:22
- - boyko-alexey   Цитата(kovigor @ May 17 2011, 12:22) Есть...   May 17 2011, 08:36
- - kovigor   Цитата(boyko-alexey @ May 17 2011, 11...   May 17 2011, 08:40
- - boyko-alexey   Цитата(kovigor @ May 17 2011, 12:40) По о...   May 17 2011, 08:53
- - kovigor   Цитата(boyko-alexey @ May 17 2011, 11...   May 17 2011, 09:23


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

 


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


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