artos5

Moderators
  • Публикации

    2 492
  • Зарегистрирован

  • Посещение

  • Дней в лидерах

    7

Последний раз artos5 выиграл 22 января 2013

Публикации artos5 были самыми популярными!

Репутация

291 Хороший

О artos5

  • Звание
    начинающий :)
  • День рождения 05.05.1985

Контакты

  • ICQ
    436015834
  • Skype
    artyomugr

Информация

  • Пол
    Мужчина
  • Город
    Украина, Ахтырка

Электроника

  • Стаж в электронике
    10-20 лет
  • Сфера радиоэлектроники
    Цифровая электроника, Силовая электроника, Аудио
  • Оборудование
    UNI-T UT71B, MASTECH MS8260E , LUKEY 852D, Паяльник 30W с тонким керамическим жалом, держатель плат с лупой.

Посетители профиля

20 361 просмотр профиля
  1. Механизм прост: Если функция самокалибровки возвращает большую емкость чем допустима при калибровке - то это объект. И значение константы остается предыдущим .
  2. В промышленных скорее использован ARM микроконтроллер с высокой тактовой частотой и компаратор высокоточный . Благодаря такому решению и получены более лучшие результаты. Исходник не покажу последний , но он мало чем отличается . Отличия: 1) введена самокалибровка. 2) введено усреднение с меньшим интервалом паузы. 3) введено определение наличия объекта в момент самокалибровки .
  3. Можно получить и 4см , главное какую емкость подводить . У меня на 4см. Работает переписанная программа когда подносишь руку.
  4. Для чистоты эксперимента: Подключил радио мышу: USB Device Attached PID: 2001h VID: 24aeh Address (#1) assigned. Manufacturer : RAPOO Product : RAPOO 5G Wireless Device Serial Number : N/A Enumeration done. This device has only 1 configuration. Default configuration set. Switching to Interface (#0) Class : 3h SubClass : 1h Protocol : 1h KeyBoard device found! HID class started. Подключил флешку: USB Device Attached PID: 4100h VID: 13feh Address (#1) assigned. Manufacturer : UFD 2.0 Product : Silicon-Power16G Serial Number : 12031552015E60023DD81B18BCD Enumeration done. This device has only 1 configuration. Default configuration set. No registered class for this device. Подключил USB беспроводной комплект клава+мыша: USB Device Attached PID: c52eh VID: 46dh Address (#1) assigned. Manufacturer : Logitech Product : USB Receiver Serial Number : N/A Enumeration done. This device has only 1 configuration. Default configuration set. Switching to Interface (#0) Class : 3h SubClass : 1h Protocol : 1h KeyBoard device found! HID class started. Подключил USB WLAN: USB Device Attached PID: 8179h VID: bdah Address (#1) assigned. Manufacturer : Realtek Product : 802.11n NIC Serial Number : 00E04C0001 Enumeration done. This device has only 1 configuration. Default configuration set. No registered class for this device. Короче - победа!!! Проблема в клаве . Почему то простая клава не работает , а другая клава (радиоклава + радио мыша) - работает !!! Странно чего простая клавиатура не работает.....
  5. спасибо дружище Одна надежда на тебя ..
  6. С нетерпением жду новостей Я пока тоже чехлю этот проект, но уже честно голова не соображает
  7. Да , нажимал - нихрена .. не попадает сюда: case HID_GET_DATA: USBH_InterruptReceiveData(phost, HID_Handle->pData, HID_Handle->length, HID_Handle->InPipe); HID_Handle->state = HID_POLL; HID_Handle->timer = phost->Timer; HID_Handle->DataReady = 0; if(timer2>600000)timer2=0; if(timer2<9){USBH_UsrLog("1t HID_Handle->pData = %d , HID_Handle->length = %d", (int) HID_Handle->timer, HID_Handle->state);} timer2++; break; case HID_POLL: if(timer2>600000)timer2=0; if(timer2<9){USBH_UsrLog("2t HID_Handle->pData = %d , HID_Handle->length = %d", (int) HID_Handle->pData, HID_Handle->length);} timer2++; if(USBH_LL_GetURBState(phost , HID_Handle->InPipe) == USBH_URB_DONE) { if(HID_Handle->DataReady == 0) { fifo_write(&HID_Handle->fifo, HID_Handle->pData, HID_Handle->length); HID_Handle->DataReady = 1; USBH_HID_EventCallback(phost); #if (USBH_USE_OS == 1) osMessagePut ( phost->os_event, USBH_URB_EVENT, 0); #endif } } else if(USBH_LL_GetURBState(phost , HID_Handle->InPipe) == USBH_URB_STALL) /* IN Endpoint Stalled */ { /* Issue Clear Feature on interrupt IN endpoint */ if(USBH_ClrFeature(phost, HID_Handle->ep_addr) == USBH_OK) { /* Change state to issue next IN token */ HID_Handle->state = HID_GET_DATA; } } break; default:
  8. Вот полный вывод переменных : System start... Program start OK! USB Device Attached PID: c18h VID: 2a7ah Address (#1) assigned. Manufacturer : N/A Product : U Serial Number : N/A Enumeration done. This device has only 1 configuration. Default configuration set. Switching to Interface (#0) Class : 3h SubClass : 1h Protocol : 1h KeyBoard device found! HID class started. Test nBytes, buf = 8 , 40 else == Test i = 0 , f->lock = 1 , f->tail = 0, f->head = 0 Test fifo = 0 == 8 else == Test i = 0 , f->lock = 1 , f->tail = 0, f->head = 0 else == Test i = 0 , f->lock = 1 , f->tail = 0, f->head = 0 else == Test i = 0 , f->lock = 1 , f->tail = 0, f->head = 0 else == Test i = 0 , f->lock = 1 , f->tail = 0, f->head = 0 else == Test i = 0 , f->lock = 1 , f->tail = 0, f->head = 0 else == Test i = 0 , f->lock = 1 , f->tail = 0, f->head = 0 else == Test i = 0 , f->lock = 1 , f->tail = 0, f->head = 0 else == Test i = 0 , f->lock = 1 , f->tail = 0, f->head = 0 Не пойму какого хрена ноли ... Щас сделаю Проверил . Ничего оно туда не пихает , так как в ту ветку не попадает
  9. Я понял почему фифо постоянно возвращает "0" Я написал тестовый вывод переменных в fifo_read() : if(f->lock == 0) { f->lock = 1; for(i=0; i < nbytes; i++) { if( f->tail != f->head ) { *p++ = f->buf[f->tail]; f->tail++; if( f->tail == f->size ) { f->tail = 0; } if(timer3>600000)timer3=0; if(timer3<9){USBH_UsrLog("else != Test i = %d , f->lock = %d ", i, f->lock );} timer3++; } else { if(timer2>600000)timer2=0; if(timer2<9){USBH_UsrLog("else == Test i = %d , f->lock = %d ", i, f->lock );} timer2++; f->lock = 0; return i; } } } Срабатывает эта строка: USBH_UsrLog("else == Test i = %d , f->lock = %d ", i, f->lock ); Вот так выглядят логи: System start... Program start OK! USB Device Attached PID: c18h VID: 2a7ah Address (#1) assigned. Manufacturer : N/A Product : U Serial Number : N/A Enumeration done. This device has only 1 configuration. Default configuration set. Switching to Interface (#0) Class : 3h SubClass : 1h Protocol : 1h KeyBoard device found! HID class started. Test nBytes, buf = 8 , 40 else == Test i = 0 , f->lock = 1 Test fifo = 0 == 8 else == Test i = 0 , f->lock = 1 else == Test i = 0 , f->lock = 1 else == Test i = 0 , f->lock = 1 else == Test i = 0 , f->lock = 1 else == Test i = 0 , f->lock = 1 else == Test i = 0 , f->lock = 1 else == Test i = 0 , f->lock = 1 else == Test i = 0 , f->lock = 1 HID ERR! Test nBytes, buf = 2 , 40 else == Test i = 0 , f->lock = 1 else == Test i = 0 , f->lock = 1 Test fifo = 0 == 2 Теперь ясно почему ноль возвращается Но не ясно почему так
  10. Получается прикол в том , что не срабатывает условие : if(fifo_read(&HID_Handle->fifo, &keybd_report_data, HID_Handle->length) == HID_Handle->length) fifo_read() вот такой он: /** * @brief fifo_read * Read from FIFO. * @param f: Fifo address * @param buf: read buffer * @param nbytes: number of item to read * @retval number of read items */ uint16_t fifo_read(FIFO_TypeDef * f, void * buf, uint16_t nbytes) { uint16_t i; uint8_t * p; p = (uint8_t*) buf; if(f->lock == 0) { f->lock = 1; for(i=0; i < nbytes; i++) { if( f->tail != f->head ) { *p++ = f->buf[f->tail]; f->tail++; if( f->tail == f->size ) { f->tail = 0; } } else { f->lock = 0; return i; } } } f->lock = 0; return nbytes; } Посмотрев на него - голова у меня уже задымела... fifo_read() почему то постоянно возвращает "0" ...
  11. За комментировал, собрал проект , проверил - не работает все равно ... Уже голова кипит Сделал так: else if(Appli_state==APPLICATION_READY) { if(USBH_HID_GetDeviceType(&hUsbHostFS) == HID_KEYBOARD) { k_pinfo = USBH_HID_GetKeybdInfo(&hUsbHostFS); if(k_pinfo!=NULL) { char chr = USBH_HID_GetASCIICode(k_pinfo); Usart2_Send_symbol(chr); Usart3_Send_symbol(chr); if(++timer>600000) { //Usart2_Send_String("NO KEY!"); Usart3_Send_String("HID OK!"); timer=0; } } else { if(++timer>600000) { Usart3_Send_String("HID ERR!"); timer=0; } } } else { if(++timer>600000) { //Usart2_Send_String("NO KEY!"); Usart3_Send_String("NO KEYBOARD!"); timer=0; } } } Выдаёт в терминал следующее: USB Device Attached PID: c18h VID: 2a7ah Address (#1) assigned. Manufacturer : N/A Product : U Serial Number : N/A Enumeration done. This device has only 1 configuration. Default configuration set. Switching to Interface (#0) Class : 3h SubClass : 1h Protocol : 1h KeyBoard device found! HID class started. HID ERR! HID ERR! HID ERR! HID ERR! HID ERR! HID ERR! HID ERR! HID ERR! HID ERR!
  12. Привет дружище! Сегодня проверю этот момент . И отпишусь сразу . А вообще запутанный код пипец...
  13. Сделаю блок управления в 2 раза дешевле , и по функционалу не уступающий серийным промышленным со всеми защитами и развязками .
  14. Привет Дружище! Я так точно и пробую , получается что не срабатывает условие : if(k_pinfo!=NULL) В этом то и загвоздка тоже ... Я думаю , может я чего на портачил с переменными при объявлении ? Потому как у этого чувака через sprintf() реализовано ... как то переменная форматируется в строку что ли . Дублирую его код: if(USBH_HID_GetDeviceType(&hUSBHost) == HID_KEYBOARD) { hid_demo.keyboard_state = HID_KEYBOARD_IDLE; hid_demo.state = HID_DEMO_KEYBOARD; //HID_KeyboardMenuProcess(); HID_KEYBD_Info_TypeDef *k_pinfo; char c; k_pinfo = USBH_HID_GetKeybdInfo(&hUSBHost); if(k_pinfo != NULL) { c = USBH_HID_GetASCIICode(k_pinfo); char str[5]; sprintf(str,"%c",c); HAL_UART_Transmit(&huart2,k_pinfo->keys,6,10000); } } } https://community.st.com/thread/38415-usb-host Завтра попробую через спритф , но оно работать не будет скорее так как выше условие не срабатывает...
  15. У меня получается та же проблема что и у него . Хоть пиши ему письмо