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

 
 
4 страниц V  < 1 2 3 4 >  
Reply to this topicStart new topic
> SAM7x256 & USB
sergeeff
сообщение Oct 29 2009, 17:13
Сообщение #16


Профессионал
*****

Группа: Свой
Сообщений: 1 481
Регистрация: 10-04-05
Пользователь №: 4 007



Увы, я нанятый работник на частной фирме. Посему код принадлежит не мне, а работодателю.
Go to the top of the page
 
+Quote Post
prottoss
сообщение Oct 29 2009, 17:19
Сообщение #17


Гуру
******

Группа: Свой
Сообщений: 2 720
Регистрация: 24-03-05
Пользователь №: 3 659



Цитата(aaarrr @ Oct 30 2009, 00:12) *
Жжоте напалмом!
smile.gif Спасибо
Цитата(aaarrr @ Oct 30 2009, 00:12) *
Код
    w_val = (AT91C_BASE_UDP->UDP_FDR[0] & 0xFF);
     w_val = (AT91C_BASE_UDP->UDP_FDR[0] << 8);

Ну и что будет в w_val?
получили младший байт, затем старший...


--------------------
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Oct 29 2009, 17:20
Сообщение #18


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



2 prottoss:

Еще присутствует косяк с передачей дескрипторов: если длина кратна размеру буфера, то в конце нужно передать ZLP, а в вашей реализации этого не делается.
Ну, ко всяким прочим "мелочам" придираться не буду, ладно уж sad.gif
Go to the top of the page
 
+Quote Post
prottoss
сообщение Oct 29 2009, 17:21
Сообщение #19


Гуру
******

Группа: Свой
Сообщений: 2 720
Регистрация: 24-03-05
Пользователь №: 3 659



Цитата(sergeeff @ Oct 30 2009, 00:13) *
Увы, я нанятый работник на частной фирме. Посему код принадлежит не мне, а работодателю.
Спасибо за правдуsmile.gif Я же не прошу ВЕСЬ код.


--------------------
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Oct 29 2009, 17:22
Сообщение #20


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Цитата(prottoss @ Oct 29 2009, 20:19) *
получили младший байт, затем старший...

...и старшим перетерли младший. Неужели не видите???
Go to the top of the page
 
+Quote Post
prottoss
сообщение Oct 29 2009, 17:29
Сообщение #21


Гуру
******

Группа: Свой
Сообщений: 2 720
Регистрация: 24-03-05
Пользователь №: 3 659



Цитата(aaarrr @ Oct 30 2009, 00:20) *
Еще присутствует косяк с передачей дескрипторов: если длина кратна размеру буфера, то в конце нужно передать ZLP, а в вашей реализации этого не делается.
Ну, ко всяким прочим "мелочам" придираться не буду, ладно уж sad.gif
Ну код то отладочный пока, про нулевые пакеты в конце кратной передачи я в курсе. Так какой диагноз то, доктор?

Цитата(aaarrr @ Oct 30 2009, 00:22) *
...и старшим перетерли младший. Неужели не видите???
Аааааааааааа.... шайтан...

Все, заработало... cranky.gif crying.gif
aaarrr - Я Ваш должник по жизни cheers.gif


--------------------
Go to the top of the page
 
+Quote Post
sergeeff
сообщение Oct 29 2009, 19:24
Сообщение #22


Профессионал
*****

Группа: Свой
Сообщений: 1 481
Регистрация: 10-04-05
Пользователь №: 4 007



Мои наблюдения показали, что в atmel'овских процессорах чрезвычайно важно добиться четкого квитирования usb'ишных управляющих сигналов (т.е. записал нужный бит в нужный управляющий регистр - дождись, чтобы он действительно установился/сбросился), что в вышеприведенных примерах и имеет место. У меня все проблемы после этого благополучно разрешились.
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Oct 29 2009, 21:10
Сообщение #23


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Главное не наступить на грабли, любезно предоставленными фирмой Атмел в своих "библиотечках", не к ночи будь помянуты.
Использование такого вот макроса при разрешенных прерываниях может вызвать феерический глюкодром:
Код
// \brief  Clear flags in the UDP_CSR register and waits for synchronization
// \param  pUsb      Pointer to a S_usb instance
// \param  bEndpoint Index of endpoint
// \param  dFlags    Flags to clear
#define UDP_CLEAREPFLAGS(pUsb, bEndpoint, dFlags) { \
    while (!ISCLEARED(UDP_GetDriverInterface(pUsb)->UDP_CSR[bEndpoint], dFlags)) \
        CLEAR(UDP_GetDriverInterface(pUsb)->UDP_CSR[bEndpoint], dFlags); \
}
Go to the top of the page
 
+Quote Post
prottoss
сообщение Oct 29 2009, 21:30
Сообщение #24


Гуру
******

Группа: Свой
Сообщений: 2 720
Регистрация: 24-03-05
Пользователь №: 3 659



Цитата(aaarrr @ Oct 30 2009, 04:10) *
Главное не наступить на грабли
Стараюсьsmile.gif Я вообще не пользую библиотеки от Атмела. Курю даташиты и тупо всю инициализацию пишу сам. Ляпы, правда, наподобие отсутствия палки перед равно иногда бывают...smile.gif


--------------------
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Oct 29 2009, 21:37
Сообщение #25


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Цитата(prottoss @ Oct 30 2009, 00:30) *
Стараюсьsmile.gif Я вообще не пользую библиотеки от Атмела. Курю даташиты и тупо всю инициализацию пишу сам.

Это хороший, правильный подход smile.gif

Цитата(prottoss @ Oct 30 2009, 00:30) *
Ляпы, правда, наподобие отсутствия палки перед равно иногда бывают...smile.gif

А от них никто не застрахован. Хотя, например, в конструкции типа "A = B[0] | (B[1] << 8)" палку пропустить уже не получится.
Go to the top of the page
 
+Quote Post
mikki
сообщение Oct 30 2009, 01:22
Сообщение #26


Участник
*

Группа: Участник
Сообщений: 20
Регистрация: 28-03-07
Пользователь №: 26 559



Цитата(prottoss @ Oct 30 2009, 01:30) *
Курю даташиты и тупо ...

Большая просьба к форумчанам, не использовать подобного рода штампы (скрытая пропаганда курения!!!), при описании интеллектуальной работы с документацией. laughing.gif
Go to the top of the page
 
+Quote Post
AHTOXA
сообщение Oct 30 2009, 02:31
Сообщение #27


фанат дивана
******

Группа: Свой
Сообщений: 3 387
Регистрация: 9-08-07
Из: Уфа
Пользователь №: 29 684



А фраза "чёрный кот" - скрытая пропаганда расизма, да? smile.gif


--------------------
Если бы я знал, что такое электричество...
Go to the top of the page
 
+Quote Post
overloaded
сообщение Oct 31 2009, 03:23
Сообщение #28


Участник
*

Группа: Свой
Сообщений: 73
Регистрация: 17-10-07
Из: Киев
Пользователь №: 31 422



Цитата(aaarrr @ Oct 30 2009, 00:10) *
Использование такого вот макроса при разрешенных прерываниях может вызвать феерический глюкодром:
.....
#define UDP_CLEAREPFLAGS(pUsb, bEndpoint, dFlags) { \
.....


А можно по подробнее пожалуйста, где такое чудо встречается? Я в USB Framework не нашел такого макроса..
Go to the top of the page
 
+Quote Post
prottoss
сообщение Oct 31 2009, 05:51
Сообщение #29


Гуру
******

Группа: Свой
Сообщений: 2 720
Регистрация: 24-03-05
Пользователь №: 3 659



Цитата(overloaded @ Oct 31 2009, 10:23) *
А можно по подробнее пожалуйста, где такое чудо встречается? Я в USB Framework не нашел такого макроса..

Код
/* Clear flags of UDP UDP_CSR register and waits for synchronization */
#define UDP_EP_CLR_FLAG(ep, f) { AT91C_BASE_UDP->UDP_CSR[ep] &= ~(f); while(AT91C_BASE_UDP->UDP_CSR[ep] & (f)); }

/* Set flags of UDP UDP_CSR register and waits for synchronization */
#define UDP_EP_SET_FLAG(ep, f) { AT91C_BASE_UDP->UDP_CSR[ep] |= (f); while((AT91C_BASE_UDP->UDP_CSR[ep] & (f)) != (f)); }


Выдержка из даташита на SAM7X (В других AT91, имеющих на борту блок UDP)
Цитата
WARNING: Due to synchronization between MCK and UDPCK, the software application must wait for the end of the write
operation before executing another write by polling the bits which must be set/cleared.
//! Clear flags of UDP UDP_CSR register and waits for synchronization
#define Udp_ep_clr_flag(pInterface, endpoint, flags) { \
pInterface->UDP_CSR[endpoint] &= ~(flags); \
while ( (pInterface->UDP_CSR[endpoint] & (flags)) == (flags) ); \
}
//! Set flags of UDP UDP_CSR register and waits for synchronization
#define Udp_ep_set_flag(pInterface, endpoint, flags) { \
pInterface->UDP_CSR[endpoint] |= (flags); \
while ( (pInterface->UDP_CSR[endpoint] & (flags)) != (flags) ); \
}
Note: In a preemptive environment, set or clear the flag and wait for a time of 1 UDPCK clock cycle and 1peripheral clock cycle. How-
ever, RX_DATA_BLK0, TXPKTRDY, RX_DATA_BK1 require wait times of 3 UDPCK clock cycles and 3 peripheral clock cycles
before accessing DPR.


--------------------
Go to the top of the page
 
+Quote Post
overloaded
сообщение Oct 31 2009, 14:59
Сообщение #30


Участник
*

Группа: Свой
Сообщений: 73
Регистрация: 17-10-07
Из: Киев
Пользователь №: 31 422



Это я какраз видел.. И этот насколько я понимаю нормальный в отличии от того что привел aaarrr(там постоянно пишем регистр а не раз записали и ждем его изменения). Вот и интересно где тот вариант встречается).
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 21st June 2025 - 11:44
Рейтинг@Mail.ru


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