|
Контроллер повисает после перезапуска приложения, если при этом происходила передача данных по USB от контроллера приложению, at91sam7s |
|
|
|
Jun 24 2010, 11:30
|
Местный
  
Группа: Участник
Сообщений: 206
Регистрация: 12-10-06
Из: ufa
Пользователь №: 21 241

|
Девайс принимает данные по некому протоколу, преобразует их в нужный формат и передает по USB на ПК. Если прекратить передавать по этому протоколу данные девайсу, а затем закрыть приложение на ПК, то при следующем запуске приложения девайс нормально определяется и работает. Но, если во время приема девайсом данных и, соответственно, передачей их по USB на ПК выйти из приложения, то девайс повисает и при следующем запуске приложения уже не определяется. Приходится передергивать USB-кабель девайса и еще раз перезапускать приложение. Только после этого девайс начинает работать. Получается в FIFO UDP девайса остаются непрочитанные приложением данные. При закрытии приложения девайсу посылается команда Turn off. Чтобы очистить FIFO использовал сброс конечной точки по команде Turn off: Код AT91C_BASE_UDP->UDP_RSTEP |= AT91C_UDP_EPINT1; AT91C_BASE_UDP->UDP_RSTEP &= ~(AT91C_UDP_EPINT1); ... не помогает. По этой же команде Turn off пробовал производить программный сброс процессора и периферии 2-мя способами: 1. Код ((void (*)())0x0000)(); 2. Код #define AT91C_RSTC_KEY_MY ((unsigned int) 0xA5 << 24) // (RSTC) Password AT91C_BASE_RSTC->RSTC_RCR = AT91C_RSTC_KEY_MY | AT91C_RSTC_PROCRST | AT91C_RSTC_PERRST; ... тоже не помогло. Какие еще возможны решения этой проблемы? Заранее благодарен!
|
|
|
|
|
 |
Ответов
|
Jun 24 2010, 11:55
|
Местный
  
Группа: Участник
Сообщений: 206
Регистрация: 12-10-06
Из: ufa
Пользователь №: 21 241

|
Цитата(aaarrr @ Jun 24 2010, 17:43)  А контроллер ее точно принимает и обрабатывает, или зависает еще раньше, потому что его перестали читать? Точно принимает, потому что, если его даже перестанут читать, он не зависнет. Опрос битов TXCOMP и TXPKTRDY происходит в основном цикле программы (без прерываний от ендпоинтов и ожиданий TXCOMP), то есть если даже эти биты не выставлены, то контроллер продолжает работать дальше и опрашивает ендпоинт с входящими данными, среди которых и приходит Turn off.
|
|
|
|
|
Jun 24 2010, 12:06
|
Гуру
     
Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448

|
Цитата(Bulat @ Jun 24 2010, 15:55)  Точно принимает, потому что, если его даже перестанут читать, он не зависнет. А из первого сообщения картина складывается противоположная: Цитата если во время приема девайсом данных и, соответственно, передачей их по USB на ПК выйти из приложения, то девайс повисает Попробуйте описать ситуацию более подробно: как происходит "определение" устройства в программе, что именно зависает - обмен по USB, или процессор в неопределенной точке программы.
|
|
|
|
Сообщений в этой теме
Bulat Контроллер повисает после перезапуска приложения, если при этом происходила передача данных по USB от контроллера приложению Jun 24 2010, 11:30   Bulat Цитата(aaarrr @ Jun 24 2010, 18:06) А из ... Jun 24 2010, 12:46    aaarrr Цитата(Bulat @ Jun 24 2010, 16:46) По иде... Jun 24 2010, 13:11     Bulat Цитата(aaarrr @ Jun 24 2010, 19:11) Еще р... Jun 24 2010, 13:23      aaarrr Цитата(Bulat @ Jun 24 2010, 17:23) Вы име... Jun 24 2010, 13:40       Bulat Цитата(aaarrr @ Jun 24 2010, 19:40) Тогда... Jun 24 2010, 13:53 aaarrr Три раза перечитал и ничего ровным счетом не понял... Jun 24 2010, 14:01 Bulat Цитата(aaarrr @ Jun 24 2010, 20:01) Три р... Jun 24 2010, 14:24 aaarrr Сбрасывать процессор (и, соответственно, модуль UD... Jun 24 2010, 14:27 Bulat Цитата(aaarrr @ Jun 24 2010, 20:27) Сбрас... Jun 24 2010, 14:46 aaarrr Для начала локализовать проблему, т.е. найти где, ... Jun 24 2010, 15:02 toweroff Цитата(aaarrr @ Jun 24 2010, 19:02) если ... Jun 24 2010, 19:32 Bulat Проблему локализовал.
Если во время приема девайс... Jun 25 2010, 08:55 aaarrr Состояние STALL Bulk-точки нельзя снимать просто т... Jun 25 2010, 09:14  Bulat Цитата(aaarrr @ Jun 25 2010, 15:14) Состо... Jun 25 2010, 09:24   aaarrr Цитата(Bulat @ Jun 25 2010, 13:24) Тогда ... Jun 25 2010, 09:33
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|