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

 
 
> Контроллер повисает после перезапуска приложения, если при этом происходила передача данных по USB от контроллера приложению, at91sam7s
Bulat
сообщение Jun 24 2010, 11:30
Сообщение #1


Местный
***

Группа: Участник
Сообщений: 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;

... тоже не помогло.
Какие еще возможны решения этой проблемы?
Заранее благодарен!
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Bulat
сообщение Jun 25 2010, 08:55
Сообщение #2


Местный
***

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



Проблему локализовал.
Если во время приема девайсом данных от некого источника и передачи их по USB на ПК мы перезагружаем приложение, то приложение повторно балгополучно открывает девайс и производит в него запись команд, но девайс не отвечает. Дело в том, что при перезагрузке приложения в FIFO UDP контролера остаются несчитанные данные, а при запуске приложения сначала запрашивается серийный номер девайса, но так как у нас в FIFO в этот момент неизвестно что и неизвестно какого размера, то происходит сбой - readfile считывает неизвестно что.
Поэтому я хочу при закрытии приложения, по комнаде "Turn Off" сбрасывать конечную точку IN с помощью регистра UDP_RSTEP, но перед этим необходимо послать хосту Stall и дождаться подтверждения. Привожу код команды "Turn Off":
Код
__ramfunc void Turn_off()
{
  
   AT91C_BASE_SYS->PIOA_IDR = 0xffffffff;

   //посылаем Stall хосту и ждем подтверждения
   pUdp->UDP_CSR[0] |= AT91C_UDP_FORCESTALL;
   while(!(pUdp->UDP_CSR[0] & AT91C_UDP_ISOERROR));
   pUdp->UDP_CSR[0] &= ~(AT91C_UDP_FORCESTALL | AT91C_UDP_ISOERROR);
   while (pUdp->UDP_CSR[0] & (AT91C_UDP_FORCESTALL | AT91C_UDP_ISOERROR));
  
   //Сброс конечной точки
   AT91C_BASE_UDP->UDP_RSTEP |= AT91C_UDP_EPINT1;
   AT91C_BASE_UDP->UDP_RSTEP &= ~AT91C_UDP_EPINT1;


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

Сообщений в этой теме
- Bulat   Контроллер повисает после перезапуска приложения, если при этом происходила передача данных по USB от контроллера приложению   Jun 24 2010, 11:30
- - aaarrr   Цитата(Bulat @ Jun 24 2010, 15:30) При за...   Jun 24 2010, 11:43
|- - Bulat   Цитата(aaarrr @ Jun 24 2010, 17:43) А кон...   Jun 24 2010, 11:55
|- - aaarrr   Цитата(Bulat @ Jun 24 2010, 15:55) Точно ...   Jun 24 2010, 12:06
|- - 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
- - 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


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

 


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


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