[an error occurred while processing this directive]
Ну ладно байты я попакую сам. А как работать с I/O побайтно(+)
(«Телесистемы»: Конференция 'Цифровые сигнальные процессоры (DSP) и их применение')

миниатюрный аудио-видеорекордер mAVR

Отправлено misyachniy 22 марта 2006 г. 17:59
В ответ на: В 55-ом С нет ни одного типа данных, занимающих 8 бит. Минимальный размер - char - 16 бит. И это ANSI не противоречит. Так что если хотите (+) отправлено SM 22 марта 2006 г. 16:32

Например Input Endpoint 0 Configuration имеет адрес 0x6780
Input Endpoint 0 Byte Count имеет адрес 0x6781

И они оба описаны в csl_usbhal.h как указатели на 16 битные числа:

#define USBICNF0 *(ioport Uint16 *)USBICNF0_ADDR
#define USBICT0 *(ioport Uint16 *)USBICT0_ADDR

То есть когда я пишу:
USBICNF0=(USBEPCNF_UBME | USBEPCNF_USBIE | USBEPCNF_STALL);
USBICT0=18;

То реально каждое присвоение вызывает следующие действие.

1.Чтение порта во временную переменную.
2.Наложение маски на переменную для освобождения места под байт (and)
3.Наложение собственно байта (or) в нужное место.
4.Запись временной переменной в порт?

А то я что-то не могу увидеть прерывание от Endpoint 1 IN.
После получения запроса Get Descriptor Device.

Разрешаю Endpoint 1 IN:
USBICNF0=(USBEPCNF_UBME | USBEPCNF_USBIE);
Копирую данные:
CopyMemToControlIn (&StrDescriptorDevice[0],&ControlIn, 18);

Даю команду отправить 18 байт:
USBICT0=18;

А прерывание не происходит.
Я знаю что драйвер Windows после получения части дескриптора генерирует сброс шины.
Пробовал отсылать нулевой пакет USBICT0=0;
Все равно не появляется флаг прерывания.
Только USB Reset/Suspend/Resume и Get Descriptor Device.
USBIEPIF=0
USBIEPIE=1
USBICNF0=A4

Может флаг от Endpoint 0 In сбрасывается сигналом шины USB reset и я его не увижу?



Составить ответ  |||  Конференция  |||  Архив

Ответы


Отправка ответа

Имя (обязательно): 
Пароль: 
E-mail: 
NoIX ключ Запомнить

Тема (обязательно):
Сообщение:

Ссылка на URL: 
Название ссылки: 

URL изображения: 


Rambler's Top100 Рейтинг@Mail.ru
Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание

E-mail: info@telesys.ru