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

 
 
> Keil & AT91SAM7SXX & USB, USB HID работет и через час -3 часа отваливается.
Sanya_kv
сообщение Jun 17 2009, 07:25
Сообщение #1


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

Группа: Свой
Сообщений: 185
Регистрация: 25-02-09
Из: Россия
Пользователь №: 45 369



Приветствую всех!
Пашу на Keil и AT91SAM7SXX взял готовый пример из кейла c:\Keil\ARM\Boards\Atmel\AT91SAM7S-EK\USB\HID\ скомпилировал. Устройство в виндах появляется обмен с ним идет, но через какое-то время(0,5 - 2, 3 часа) устройство выпадает из конфигурации винды, причем в диспетчере устройств его нет. Минут через 5 говорит: устройство подключенное к USB работает не правильно... . При всем этом программа на процессоре работает. Сброса процессора не было. Кто-нибудь сталкивался с этой проблемой?
Заранее благодарен.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Sanya_kv
сообщение Jun 17 2009, 10:29
Сообщение #2


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

Группа: Свой
Сообщений: 185
Регистрация: 25-02-09
Из: Россия
Пользователь №: 45 369



Разобрался с зависанием в функции прерывания USB_ISR.
Попадая в цикл while (isr = pUDP->UDP_ISR) { висит там до тех пор пока isr != 0
Код
void USB_ISR (void) /* __irq */{
  DWORD isr, csr, bkm, n;

  while (isr = pUDP->UDP_ISR) {

    /* End of Bus Reset Interrupt */
    if (isr & AT91C_UDP_ENDBUSRES) {
      USB_Reset();
      pUDP->UDP_ICR = AT91C_UDP_ENDBUSRES;
    }
   ...
   }

итог5е приходит прерывание AT91C_UDP_WAKEUP, обработки которого нет в цикле и сброса его не ведется, проблема решается добавлением pUDP->UDP_ICR = AT91C_UDP_WAKEUP;
AT91C_UDP_WAKEUP - приходит в момент подключения или отключения USB разъёма, но не всегда.

Но основная проблема ещё не решена. Тормозит редкость возникновения ошибки.
Неужели никто не сталкивался с такой проблемой?
Go to the top of the page
 
+Quote Post
KAlex
сообщение Jun 17 2009, 10:47
Сообщение #3


Местный
***

Группа: Свой
Сообщений: 387
Регистрация: 20-12-06
Из: Obninsk
Пользователь №: 23 719



Что делает "USB_Reset();"
А если поменять ресет местами с "pUDP->UDP_ICR = AT91C_UDP_ENDBUSRES;"
Go to the top of the page
 
+Quote Post



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

 


RSS Текстовая версия Сейчас: 23rd July 2025 - 01:32
Рейтинг@Mail.ru


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