Gradient 1 26 марта, 2021 Опубликовано 26 марта, 2021 · Жалоба Нашел затык. Слейв чип видимо поджарил пока паял. Другой чип заработал правильно. Но теперь другая непонятка. Надо ждать прерывание от слейва в отдельном процессе. Перерыл SDK API, ожидающих функций не нашел, примера кода не нашел. Подскажите как сделать без постоянного опроса по I2C. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
megajohn 8 29 марта, 2021 Опубликовано 29 марта, 2021 · Жалоба дык GPIO и HidSmbus_ReadLatch не помогут ? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Gradient 1 29 марта, 2021 Опубликовано 29 марта, 2021 (изменено) · Жалоба Если их надо в цикле вычитывать, то это плохая микросхема. Спросил Silicon Labs суппорт, что они думают по этому вопросу. Оттуда невнятное "мычание", что в следующем SDK "они попробуют". Вообще, подход просто супер. Наклепали говна, а как это юзать - мучайтесь сами. Изменено 29 марта, 2021 пользователем Gradient Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 241 29 марта, 2021 Опубликовано 29 марта, 2021 · Жалоба 26.03.2021 в 21:17, Gradient сказал: Надо ждать прерывание от слейва в отдельном процессе. Именно "процессе" (process) или всё-таки "потоке" (thread)? Это совершенно разные вещи. 13 минут назад, Gradient сказал: Если их надо в цикле вычитывать, то это плохая микросхема. Если разговор про работу из под винды, то в чём проблема завести отдельный поток и опрашивать в нём, в цикле? Вообще - в по уму построенном приложении, вся работа с реалтайм-периферией должна вестись в отдельных потоках ОС. И тогда нет никакой разницы: поллить всё время блокирующими функциями или ждать события от event-driven API функции. А работа из GUI-потока с реалтаймовой периферией - это быдлокод. PS: Под виндой вроде памяти и прочих ресурсов - вагон, экономить на спичках смысла нет. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Gradient 1 29 марта, 2021 Опубликовано 29 марта, 2021 · Жалоба Из Win Тhread. >> в чём проблема завести отдельный поток и опрашивать в нём, в цикле? Интересно, зачем напрягать и замедлять всю систему пользователя, если это элементарно реализуется аппаратно? Это и есть - быдлокод для быдлочип. ;) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 241 29 марта, 2021 Опубликовано 29 марта, 2021 · Жалоба 38 минут назад, Gradient сказал: Интересно, зачем напрягать и замедлять всю систему пользователя, если это элементарно реализуется аппаратно? На современных CPU замедление системы от поллинга I2C будет на 0.000...1%. Даже если I2C на 1 МБоде работает. Хотя конечно - лучше если есть выбор сделать так или эдак. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Gradient 1 29 марта, 2021 Опубликовано 29 марта, 2021 · Жалоба Можно говорить что угодно, но вы не понимаете сути. Вы не ответили, зачем делать заведомо хуже всему миру если сразу можно хорошо?. Заставлять людей реализовывать функцию "через жопу" и тратить на это время. Если сделать правильную реализацию, кстати не нагружающую систему ВООБЩЕ НИКАК, не составляет для производителя чипа НИКАКИХ дополнительных усилий совсем, кроме модернизации драйвера. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 241 29 марта, 2021 Опубликовано 29 марта, 2021 · Жалоба 2 часа назад, Gradient сказал: Заставлять людей реализовывать функцию "через жопу" и тратить на это время. "Через жопу" - это работать с периферией не в отдельном потоке. Если так не делать, то хоть поллинг, хоть event driven - разницы почти нет. 2 часа назад, Gradient сказал: зачем делать заведомо хуже всему миру Вы не задумывались: почему весь этот остальной мир устраивает, а вас - нет? PS: Если вам так не нравится этот чип, то кто заставляет его использовать? Сделайте по-другому. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Gradient 1 29 марта, 2021 Опубликовано 29 марта, 2021 · Жалоба >> почему весь этот остальной мир устраивает, а вас - нет? "Миллионы мух не могут ошибаться" Хех. Коллега, о вкусах не спорят. Каждый строчит как он хочет. Если вы не можете помочь в моей трудности, тогда и обсуждать нечего... По другому сделать уже не выйдет. Закупили адаптеры с этим трэшем. Я протупил и заранее не проверил как реализован interrupt от слейва. И никак не ожидал такого подобного уровня идиотизма от Silicon Labs. Но видимо индусы уже и там. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Eddy_Em 2 29 марта, 2021 Опубликовано 29 марта, 2021 · Жалоба А в чем проблема сделать свой I2C-USB с гимназистками и преферансом? Мне когда понадобилось, взял, да написал… Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
firew0rker 0 4 сентября, 2021 Опубликовано 4 сентября, 2021 · Жалоба Я сама бывшая гимназистка и тоже хочу сделать свой I2C-USB с эмулятором чипа cp2112. У кого под рукой чип cp2112, пожалуйста, сделайте его дамп одной из утилит, что гугл находит по запросу «HID dump». Или одолжите плату с чипом, если кто есть в Новосибирске. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
x893 60 4 сентября, 2021 Опубликовано 4 сентября, 2021 · Жалоба 5 hours ago, firew0rker said: cp2112 Мне больше понравился MCP2221. Хотя и CP2112 тоже делал. Но искать надо для дампа. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
firew0rker 0 7 сентября, 2021 Опубликовано 7 сентября, 2021 · Жалоба On 9/4/2021 at 3:45 PM, x893 said: искать надо для дампа Поищите пожалуйста. А я поделюсь исходниками, когда сделаю эмулятор. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
x893 60 7 сентября, 2021 Опубликовано 7 сентября, 2021 · Жалоба On 9/4/2021 at 6:31 AM, firew0rker said: сделайте его дамп Spoiler =========================== USB Port2 =========================== Connection Status : 0x01 (Device is connected) Port Chain : 2-2 Properties : 0x01 IsUserConnectable : yes PortIsDebugCapable : no PortHasMultiCompanions : no PortConnectorIsTypeC : no ======================== USB Device ======================== +++++++++++++++++ Device Information ++++++++++++++++++ Device Description : USB Input Device Device Path : \\.\usb#vid_10c4&pid_ea90#0001#{a5dcbf10-6530-11d2-901f-00c04fb951ed} Device ID : USB\VID_10C4&PID_EA90\0001 Hardware IDs : USB\VID_10C4&PID_EA90&REV_0000 USB\VID_10C4&PID_EA90 Driver KeyName : {745a17a0-74d3-11d0-b6fe-00a0c90f57da}\0015 (GUID_DEVCLASS_HIDCLASS) Driver : \SystemRoot\System32\drivers\hidusb.sys (Version: 10.0.19041.868 Date: 2021-04-13) Driver Inf : C:\WINDOWS\inf\input.inf Legacy BusType : PNPBus Class : HIDClass Class GUID : {745a17a0-74d3-11d0-b6fe-00a0c90f57da} (GUID_DEVCLASS_HIDCLASS) Interface GUID : {a5dcbf10-6530-11d2-901f-00c04fb951ed} (GUID_DEVINTERFACE_USB_DEVICE) Service : HidUsb Enumerator : USB Location Info : Port_#0002.Hub_#0001 Location IDs : PCIROOT(0)#PCI(1200)#USBROOT(0)#USB(2), ACPI(_SB_)#ACPI(PCI0)#ACPI(OHC1)#ACPI(RHUB)#ACPI(PRT2) Container ID : {91b1c1ff-9da3-527c-b901-93f5e37239af} Manufacturer Info : (Standard system devices) Capabilities : 0x94 (Removable, UniqueID, SurpriseRemovalOK) Status : 0x0180600A (DN_DRIVER_LOADED, DN_STARTED, DN_DISABLEABLE, DN_REMOVABLE, DN_NT_ENUMERATOR, DN_NT_DRIVER) Problem Code : 0 Power State : D0 (supported: D0, D3, wake from D0) Child Device 1 : HID-compliant vendor-defined device Device ID : HID\VID_10C4&PID_EA90\6&302F8A82&0&0000 Class : HIDClass ---------------- Connection Information --------------- Connection Index : 0x02 (2) Connection Status : 0x01 (DeviceConnected) Current Config Value : 0x01 Device Address : 0x02 (2) Is Hub : 0x00 (no) Number Of Open Pipes : 0x02 (2) Device Bus Speed : 0x01 (Full-Speed) Pipe0ScheduleOffset : 0x00 (0) Pipe1ScheduleOffset : 0x00 (0) --------------- Connection Information V2 ------------- Connection Index : 0x02 (2) Length : 0x10 (16 bytes) SupportedUsbProtocols : 0x01 Usb110 : 1 (yes) Usb200 : 0 (no) Usb300 : 0 (no) ReservedMBZ : 0x00 Flags : 0x00 DevIsOpAtSsOrHigher : 0 (Is not operating at SuperSpeed or higher) DevIsSsCapOrHigher : 0 (Is not SuperSpeed capable or higher) DevIsOpAtSsPlusOrHigher : 0 (Is not operating at SuperSpeedPlus or higher) DevIsSsPlusCapOrHigher : 0 (Is not SuperSpeedPlus capable or higher) ReservedMBZ : 0x00 ---------------------- Device Descriptor ---------------------- bLength : 0x12 (18 bytes) bDescriptorType : 0x01 (Device Descriptor) bcdUSB : 0x110 (USB Version 1.10) bDeviceClass : 0x00 (defined by the interface descriptors) bDeviceSubClass : 0x00 bDeviceProtocol : 0x00 bMaxPacketSize0 : 0x40 (64 bytes) idVendor : 0x10C4 (Silicon Laboratories, Inc.) idProduct : 0xEA90 bcdDevice : 0x0000 iManufacturer : 0x01 (String Descriptor 1) Language 0x0409 : "Silicon Labs" iProduct : 0x02 (String Descriptor 2) Language 0x0409 : "CP2112" iSerialNumber : 0x03 (String Descriptor 3) Language 0x0409 : "0001" bNumConfigurations : 0x01 (1 Configuration) ------------------ Configuration Descriptor ------------------- bLength : 0x09 (9 bytes) bDescriptorType : 0x02 (Configuration Descriptor) wTotalLength : 0x0029 (41 bytes) bNumInterfaces : 0x01 (1 Interface) bConfigurationValue : 0x01 (Configuration 1) iConfiguration : 0x00 (No String Descriptor) bmAttributes : 0x80 D7: Reserved, set 1 : 0x01 D6: Self Powered : 0x00 (no) D5: Remote Wakeup : 0x00 (no) D4..0: Reserved, set 0 : 0x00 MaxPower : 0xFA (500 mA) ---------------- Interface Descriptor ----------------- bLength : 0x09 (9 bytes) bDescriptorType : 0x04 (Interface Descriptor) bInterfaceNumber : 0x00 bAlternateSetting : 0x00 bNumEndpoints : 0x02 (2 Endpoints) bInterfaceClass : 0x03 (HID - Human Interface Device) bInterfaceSubClass : 0x00 (None) bInterfaceProtocol : 0x00 (None) iInterface : 0x00 (No String Descriptor) ------------------- HID Descriptor -------------------- bLength : 0x09 (9 bytes) bDescriptorType : 0x21 (HID Descriptor) bcdHID : 0x0101 (HID Version 1.01) bCountryCode : 0x00 (00 = not localized) bNumDescriptors : 0x01 Descriptor 1: bDescriptorType : 0x22 (Class=Report) wDescriptorLength : 0x0102 (258 bytes) Error reading descriptor : ERROR_GEN_FAILURE ----------------- Endpoint Descriptor ----------------- bLength : 0x07 (7 bytes) bDescriptorType : 0x05 (Endpoint Descriptor) bEndpointAddress : 0x81 (Direction=IN EndpointID=1) bmAttributes : 0x03 (TransferType=Interrupt) wMaxPacketSize : 0x0040 (64 bytes) bInterval : 0x01 (1 ms) ----------------- Endpoint Descriptor ----------------- bLength : 0x07 (7 bytes) bDescriptorType : 0x05 (Endpoint Descriptor) bEndpointAddress : 0x01 (Direction=OUT EndpointID=1) bmAttributes : 0x03 (TransferType=Interrupt) wMaxPacketSize : 0x0040 (64 bytes) bInterval : 0x01 (1 ms) -------------------- String Descriptors ------------------- ------ String Descriptor 0 ------ bLength : 0x04 (4 bytes) bDescriptorType : 0x03 (String Descriptor) Language ID[0] : 0x0409 (English - United States) ------ String Descriptor 1 ------ bLength : 0x1A (26 bytes) bDescriptorType : 0x03 (String Descriptor) Language 0x0409 : "Silicon Labs" ------ String Descriptor 2 ------ bLength : 0x0E (14 bytes) bDescriptorType : 0x03 (String Descriptor) Language 0x0409 : "CP2112" ------ String Descriptor 3 ------ bLength : 0x0A (10 bytes) bDescriptorType : 0x03 (String Descriptor) Language 0x0409 : "0001" Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Сергей Борщ 140 8 сентября, 2021 Опубликовано 8 сентября, 2021 · Жалоба 8 часов назад, x893 сказал: Error reading descriptor : ERROR_GEN_FAILURE Обломс. Виндовс не дает сторонней программе прочитать report descriptors. Надо или подсматривать wireshark-ом обмен в момент подключения, либо восстанавливать по данным, сохраненным внутри виндовса (как это, судя по описанию, делает win-hid-dump). Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться