Closed Kiprus closed 2 years ago
for(int i; i<10; i++;){ Я идиот(ну или компилятор) }
Проблема оказалась в цикле for. Он у меня был написан: for(int i; i<10; i++;){код} и при повторном вызове переменная i была больше или ровно 10 из-за чего код HID.tick() не выполнялся, вот или я не правильно понимал вызов функции но в моём понимании int i; должен сбрасывать функцию в 0, но он этого не делал. И ещё одна странность, не смотря на то что HID.tick() не вызывался клавиша эмулировалась, что и ввела меня в заблуждение и двухдневное мучение и себя и вас. Спасибо всем кто пытался помочь.
Локальные переменные при создании имеют практически случайное значение, их обязательно нужно инициализировать если например нужен 0 для счётчика. Это очень базовые вещи)
Локальные переменные при создании имеют практически случайное значение, их обязательно нужно инициализировать если например нужен 0 для счётчика. Это очень базовые вещи)
Видимо так, профтикал такой важный момент, в основном писал на C++ программы для ПК и там всегда прокатывало а на arduino не прокатило)
В моём HID устройстве есть нужда работать от аккумулятора и отключаться от usb при это оставаясь в работе. Виходит так что при первом подключении к usb HID определяется а после переподключения уже появляется ошибка дескриптора, с помощью логического анализатора увидел что после переподключения HID не отправляет пакет Handshake. Вот кусок кода: https://pastebin.com/PdJRAhVd
Использую микроконтролер Atmega8 16mhz и среду разработки PlatformIO
Первое подключение:![image](https://user-images.githubusercontent.com/54667766/149933811-30ab66a4-f44e-4c6b-a32f-bda7e80a079a.png)
Второе подключение:![image](https://user-images.githubusercontent.com/54667766/149933911-97280831-ce81-4e03-bfe6-0a3c72bfb746.png)