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

 
 
mitayd
сообщение Jan 5 2010, 06:12
Сообщение #1





Группа: Участник
Сообщений: 7
Регистрация: 6-02-06
Пользователь №: 14 050



Здраствуйте, у меня вопрос касательно USB модуля микропроцессора 1886ВЕ4У.

Питание микропроцессора осуществляется напряжением 5В от линейного стабилизатора.
Рабочая частота 24 МГц (48 МГц на USB модуль и 1/2 на ядро).
Использовались USB хосты чипсетов Intel ICH5, Intel ICH9R, nForce 4 Ultra, nForce 550.
Устройство тестировалось с универсальными драйверами Jungo WinDriver 9 и Thesycon USBIO 2.45 Demo.
Операционная система Windows XP SP3 PRO.
В устройстве используются 4 конечные точки:
EP1, EP3 - IN, BULK, 64 байта;
EP2, EP4 - OUT, BULK, 64 байта.

Написана небольшая тестовая программа (проект прикреплён)

Разработка ПО ведётся в IDE MPLAB 8.40 (MPASMWIN.exe v5.34, mplink.exe v4.34).
Обмен данными с устройством осуществляется тестовым ПО от производителей драйверов:
USBIO Demo Application(USBIO) и USB Diagnostic Samples(WinDriver).

Теперь суть проблеммы.
Данные принимаются хостом с пайпа 0x81 или 0x83.
При работе на скорости не превышающей 45 Кбайт/с нареканий не возникает.
С увеличением скорости обмен прерывается.
Код ошибки WinDriver'а: 0x20000200 ("Operation failed")
Код ошибки USBIO: 0xE000000C: HC Error: Buffer Overrun
В регистре микроконтроллера USB_ERROR 0x20 (установлен бит TO_ERR).

Аналогичная программа на Си работает без проблем, но скорость обмена составляет примерно 100 Кбайт/с.
Цикл заполнения FIFO EP1:
if(EMPTY1)
{
for(i=0; i<64; i++) EP1_REG = usb_tx_buffer[i];
USB_TX_READY = 0;
}
И его дизассемблер:
77: if(EMPTY1)
0080 B803 MOVLB 0x3
0081 9010 BTFSS 0x10, 0
0082 C092 GOTO 0x92
78: {
79: for(i=0; i<64; i++) EP1_REG = usb_tx_buffer[i];
0083 2924 CLRF 0x24, 0x1
0084 6A24 MOVFP 0x24, 0xa
0085 B160 ADDLW 0x60
0086 0101 MOVWF 0x1
0087 BA30 MOVLR 0x3
0088 6A00 MOVFP 0, 0xa
0089 B802 MOVLB 0x2
008A 0110 MOVWF 0x10
008B BA00 MOVLR 0
008C 1524 INCF 0x24, F
008D B040 MOVLW 0x40
008E 0424 SUBWF 0x24, W
008F 9004 BTFSS 0x4, 0
0090 C084 GOTO 0x84
80: USB_TX_READY = 0;
0091 891E BCF 0x1e, 0x1
81: }

Преимущества ассемблера очевидны. Помогите пожалуйста.
Прикрепленные файлы
Прикрепленный файл  milandr_asm.zip ( 84.3 килобайт ) Кол-во скачиваний: 24
 
Go to the top of the page
 
+Quote Post



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

 


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


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