|
|
  |
ARM. Энкодеры и акселерометры, Помогите решить задачу |
|
|
|
Sep 3 2009, 20:13
|
Гуру
     
Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448

|
Цитата(Zliva @ Sep 4 2009, 00:06)  Что вы имеете ввиду? Выше упоминалась такая ситуация с TIOAx. Цитата(Zliva @ Sep 4 2009, 00:06)  И еще, когда пины 27, 28, 29, 30 энкодера настраиваю на вход, в симуляции пин 27 выдает коварное сообщение (которое выше), которое я игнорирую, но когда пины 26, 28, 29, 30 энкодера настраиваю на вход, в симуляции пин 26 работает нормально. Угу. Просто надо все смотреть на железе.
|
|
|
|
|
Sep 5 2009, 22:38
|
Частый гость
 
Группа: Участник
Сообщений: 137
Регистрация: 14-11-06
Из: Луцка
Пользователь №: 22 318

|
Настало время USB. Пока доставят акселерометры, не буду тратить время. Вы говорили, что в моем случае класс CDC вполне подойдет и тип передачи данных bulk, так я писал, что нужна гарантия доставки данных. Начитался Агурова. Кругом голова идет. Много информации в книгах, а четко выраженной последовательности нет, или я пока себе её не сформировал. Ну да ладно. Впринципе, со стороны МК проблем не вижу, а вот со стороны ПК нужно потрудится. Может у кого-то есть заготовка для инициализации дескрипторов для МК в случаи использования класса CDC? И еще, не нашол информации. RS-232 дет скорость 115,2кБит/с, в случаи использования CDC, я могу получить скорость 12 МБит/с, или я ошибаюсь? Может когда-то по-играюсь с OTG через MS и с флеш карточкой.
--------------------
If the person is successful, he is successful in any sphere.
|
|
|
|
|
Sep 6 2009, 06:47
|
Частый гость
 
Группа: Участник
Сообщений: 80
Регистрация: 3-07-09
Пользователь №: 50 897

|
Цитата(Zliva @ Sep 6 2009, 01:38)  Может у кого-то есть заготовка для инициализации дескрипторов для МК в случаи использования класса CDC? Код const char devDescriptor[] = { /* Device descriptor */ 0x12, // bLength 0x01, // bDescriptorType 0x10, // bcdUSBL 0x01, // 0x02, // bDeviceClass: CDC class code 0x00, // bDeviceSubclass: CDC class sub code 0x00, // bDeviceProtocol: CDC Device protocol 0x08, // bMaxPacketSize0 0xFF, // idVendorL 0xFF, // 0xFF, // idProductL 0xFF, // 0x10, // bcdDeviceL 0x01, // 0x00, // iManufacturer // 0x01 0x00, // iProduct 0x00, // SerialNumber 0x01 // bNumConfigs };
const char cfgDescriptor[] = { /* ============== CONFIGURATION 1 =========== */ /* Configuration 1 descriptor */ 0x09, // CbLength 0x02, // CbDescriptorType 0x43, // CwTotalLength 2 EP + Control 0x00, 0x02, // CbNumInterfaces 0x01, // CbConfigurationValue 0x00, // CiConfiguration 0xC0, // CbmAttributes 0xA0 0x00, // CMaxPower
/* Communication Class Interface Descriptor Requirement */ 0x09, // bLength 0x04, // bDescriptorType 0x00, // bInterfaceNumber 0x00, // bAlternateSetting 0x01, // bNumEndpoints 0x02, // bInterfaceClass 0x02, // bInterfaceSubclass 0x00, // bInterfaceProtocol 0x00, // iInterface
/* Header Functional Descriptor */ 0x05, // bFunction Length 0x24, // bDescriptor type: CS_INTERFACE 0x00, // bDescriptor subtype: Header Func Desc 0x10, // bcdCDC:1.1 0x01,
/* ACM Functional Descriptor */ 0x04, // bFunctionLength 0x24, // bDescriptor Type: CS_INTERFACE 0x02, // bDescriptor Subtype: ACM Func Desc 0x00, // bmCapabilities
/* Union Functional Descriptor */ 0x05, // bFunctionLength 0x24, // bDescriptorType: CS_INTERFACE 0x06, // bDescriptor Subtype: Union Func Desc 0x00, // bMasterInterface: Communication Class Interface 0x01, // bSlaveInterface0: Data Class Interface
/* Call Management Functional Descriptor */ 0x05, // bFunctionLength 0x24, // bDescriptor Type: CS_INTERFACE 0x01, // bDescriptor Subtype: Call Management Func Desc 0x00, // bmCapabilities: D1 + D0 0x01, // bDataInterface: Data Class Interface 1
/* Endpoint 1 descriptor */ 0x07, // bLength 0x05, // bDescriptorType 0x83, // bEndpointAddress, Endpoint 03 - IN 0x03, // bmAttributes INT 0x0A, // wMaxPacketSize 0x00, 0xFF, // bInterval
/* Data Class Interface Descriptor Requirement */ 0x09, // bLength 0x04, // bDescriptorType 0x01, // bInterfaceNumber 0x00, // bAlternateSetting 0x02, // bNumEndpoints 0x0A, // bInterfaceClass 0x00, // bInterfaceSubclass 0x00, // bInterfaceProtocol 0x00, // iInterface
/* First alternate setting */ /* Endpoint 1 descriptor */ 0x07, // bLength 0x05, // bDescriptorType 0x01, // bEndpointAddress, Endpoint 01 - OUT 0x02, // bmAttributes BULK AT91C_EP_OUT_SIZE, // wMaxPacketSize 0x00, 0x00, // bInterval
/* Endpoint 2 descriptor */ 0x07, // bLength 0x05, // bDescriptorType 0x82, // bEndpointAddress, Endpoint 02 - IN 0x02, // bmAttributes BULK AT91C_EP_IN_SIZE, // wMaxPacketSize 0x00, 0x00 // bInterval };
const char languageIdDescriptor[] = { 0x04, 0x03, 0x09, 0x04 };
const char manufacturerDescriptor[] = {
10, 3, 'F', 0, 'I', 0, 'R', 0, 'M', 0 };
const char serialNumberDescriptor[] = {
10, 3, '1', 0, '2', 0, '3', 0, 'A', 0 };
const char nameDeviseDescriptor[] = {
14, 3, 'D', 0, 'E', 0, 'V', 0, 'I', 0,'C',0,'E',0 };
|
|
|
|
|
Sep 6 2009, 10:05
|
Гуру
     
Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448

|
Цитата(Zliva @ Sep 6 2009, 02:38)  Впринципе, со стороны МК проблем не вижу, а вот со стороны ПК нужно потрудится. В случае CDC все как раз наоборот. Цитата(Zliva @ Sep 6 2009, 02:38)  И еще, не нашол информации. RS-232 дет скорость 115,2кБит/с, в случаи использования CDC, я могу получить скорость 12 МБит/с, или я ошибаюсь? Тыц
|
|
|
|
|
Sep 7 2009, 19:43
|
Частый гость
 
Группа: Участник
Сообщений: 137
Регистрация: 14-11-06
Из: Луцка
Пользователь №: 22 318

|
Вот здесь скачал реализацию CDC, в IAR-е получил бинарник и залил в кристалл. Работает. В Keil-е не хочет. Вот код.
--------------------
If the person is successful, he is successful in any sphere.
|
|
|
|
|
Sep 8 2009, 12:30
|
Частый гость
 
Группа: Участник
Сообщений: 137
Регистрация: 14-11-06
Из: Луцка
Пользователь №: 22 318

|
Цитата(aaarrr @ Sep 8 2009, 15:20)  Боюсь, бесплатно будут только "кучерявые" - на то они и примеры. Ладною. Попробую прикрутить к своему проекту. Может что-то получится.
--------------------
If the person is successful, he is successful in any sphere.
|
|
|
|
|
Sep 8 2009, 15:59
|
Частый гость
 
Группа: Участник
Сообщений: 137
Регистрация: 14-11-06
Из: Луцка
Пользователь №: 22 318

|
Цитата(head_sk @ Sep 8 2009, 18:35)  Корявая это да... Но там напильником работать не более суток и не так сложно Да. Согласен. Если конечно знать, что пилить.
--------------------
If the person is successful, he is successful in any sphere.
|
|
|
|
|
Sep 8 2009, 19:18
|
дятел
    
Группа: Свой
Сообщений: 1 681
Регистрация: 13-05-06
Из: Питер
Пользователь №: 17 065

|
Цитата(head_sk @ Sep 8 2009, 19:35)  Корявая это да... Но там напильником работать не более суток и не так сложно Ну чтоб качественный итог получить нужна примерно неделя... Цитата(Zliva @ Sep 8 2009, 19:59)  Да. Согласен. Если конечно знать, что пилить. Пилить там нужно в основном неправильную работу прерываний(ну просто апшибки типа забыли запретить прерывание на ендпоинте ) и сильно избыточные в некоторых местах вызовы вложенных функций...
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|