-
- я работал с микросхемой клавиатуры. Там по линии данных выскакивает импульс, сигнализирующий о факте нажатия. А потом по этой же линии считываешь номер кнопки. - Лагунов(30.09.2017 09:14 - 09:20)
- один в один! сейчас работает так: в обработчике прерываний по линии SCL импульсами вытягиваю информацию по SDO, сбрасываю флаг события. Хочу так: Прерывание произошло, запрещаем прерывание, выставляем флаг, по флагу в фоновой задаче IBAH(386 знак., 02.10.2017 12:27 - 12:31)
- Как у меня сделано -> Лагунов(725 знак., 02.10.2017 13:12 - 13:23)
- Я может чего то не понимаю, но зачем внутри EXTI0_IRQHandler запрещать HAL_NVIC_DisableIRQ(EXTI0_IRQn)? Оно и так не вызовется пока обрабатывается. Есно, если новое EXTI0_IRQ возникнет при обработке текущего, то флаг события возникнет и при выходе 0men(142 знак., 02.10.2017 18:45)
- Разобрался! У вас (и у меня) EXTI0_IRQHandler() вызывается один лишний раз, без флага EXTI->PR1&0x01!!! надо сбрасывать NVIC_ClearPendingIRQ(EXTI0_IRQn)! - IBAH(02.10.2017 17:01)
- лишний раз? Как это? Т.е. EXTI->PR1|=0x01 не сбрасывает прерывание? - Лагунов(02.10.2017 17:14)
- Не сбрасывает! Переход на EXTI0_IRQHandler() происходит сразу же после разрешения NVIC_EnableIRQ(), но флаг события сброшен (EXTI->PR)!, надо перед HAL_NVIC_EnableIRQ, сбрасывать не только флаг события (EXTI->PR1|=0x01), но и флаг прерывания IBAH(114 знак., 02.10.2017 17:22 - 17:26)
- ну мне как-то это не влияет. По крайней двойного нажатия кнопки в клавиатуре не фиксирую. - Лагунов(03.10.2017 08:22)
- Не сбрасывает! Переход на EXTI0_IRQHandler() происходит сразу же после разрешения NVIC_EnableIRQ(), но флаг события сброшен (EXTI->PR)!, надо перед HAL_NVIC_EnableIRQ, сбрасывать не только флаг события (EXTI->PR1|=0x01), но и флаг прерывания IBAH(114 знак., 02.10.2017 17:22 - 17:26)
- лишний раз? Как это? Т.е. EXTI->PR1|=0x01 не сбрасывает прерывание? - Лагунов(02.10.2017 17:14)
- Именно так и делаю, нефига не работает. то исчезаю прерывания вообще, то повторный вызов, причем как именно не работает зависит от момента когда сбрасываю пендинг - IBAH(02.10.2017 14:06)
- Трэш и угар!!! Как это развидеть? - SciFi(02.10.2017 13:14)
- что "развидеть"? - Лагунов(02.10.2017 13:21)
- Больше всего, конечно, доставляет так называемая задержка на 2,5 мкс. Кубический обработчик прерывания - тоже милота. Ну и остальные мелочи типа while вместо for, отступы и вообще. - SciFi(02.10.2017 13:24)
- ага, из меня программист, как из ... (ну вы поняли). :-) Тем не менее - работает же. - Лагунов(02.10.2017 17:13)
- Удивительно! Теперь я понял, кому нужен куб :-) - SciFi(02.10.2017 17:15)
- А что против куба по существу? - vllv(02.10.2017 13:28)
- Кроме того, что он исходник превращает в уродливое говно? Нет. Ну и вызывает скепсис сама концепция того, что я тут кликну пару раз, а оно выплюнет индусский говнокод (по слухам) и всё будет работать. - SciFi(02.10.2017 13:38)
- "Вам шашечки или ехать?" (с) - Лагунов(02.10.2017 17:15)
- У меня этим занимается специально обученный человек и как-то же у него получается. Правда, я не все понимаю, но оно мне надо? PS. По моему индусы в неимоверном количестве только в TI. - vllv(02.10.2017 17:06)
- Ага! Кто мне такого спец. обученного дал. :-) - Лагунов(03.10.2017 08:30)
- Меня привлекла бы библиотека со следующими особенностями. 1) Качество. То есть некая репутация типа "А, это библиотека ZYX? Круть!" 2) Разбито на кусочки, которые без труда можно соединить руками, а не при помощи неведомого кубического куба. 3) SciFi(91 знак., 02.10.2017 17:11)
- Кроме того, что он исходник превращает в уродливое говно? Нет. Ну и вызывает скепсис сама концепция того, что я тут кликну пару раз, а оно выплюнет индусский говнокод (по слухам) и всё будет работать. - SciFi(02.10.2017 13:38)
- ага, из меня программист, как из ... (ну вы поняли). :-) Тем не менее - работает же. - Лагунов(02.10.2017 17:13)
- Больше всего, конечно, доставляет так называемая задержка на 2,5 мкс. Кубический обработчик прерывания - тоже милота. Ну и остальные мелочи типа while вместо for, отступы и вообще. - SciFi(02.10.2017 13:24)
- что "развидеть"? - Лагунов(02.10.2017 13:21)
- Как у меня сделано -> Лагунов(725 знак., 02.10.2017 13:12 - 13:23)
- Чаще все же для таких вещей slaveSPI используют отдельную линию INT. В твоем случае SPI наверняка усечен так, что и NSS убран. Конечно, можно сделать всё, это же контроллер. - Доширак(30.09.2017 09:34, )
- у меня был всё же не SPI. - Лагунов(30.09.2017 10:44)
- Такой интерфейс больше на 1-Wire похож, чем на SPI! - AU08(30.09.2017 09:31)
- 1-Wire опять же, реализуется аппаратно на UART-е. А ТС завел базар и исчез, наверное кирпич на голову упал. Что ж, пусть земля ему будет пухом. - _basile(30.09.2017 20:08, )
- да там вообще не поймешь, что. По линии SDO выскакивает импульс при срабатывании кнопки, создает прерывание, и ты должен по линии SCL импульсами вытянуть информацию по SDO. Лагунов(30.09.2017 10:42)
- один в один! сейчас работает так: в обработчике прерываний по линии SCL импульсами вытягиваю информацию по SDO, сбрасываю флаг события. Хочу так: Прерывание произошло, запрещаем прерывание, выставляем флаг, по флагу в фоновой задаче IBAH(386 знак., 02.10.2017 12:27 - 12:31)
- Ну, а впоследствии еще там же в обработчике выдавай побитно выходной байт через программный MISO. Ну там вывод бита, сдвиг выходного байта, какой-нибудь флаг окончания выдачи, обнуление счетчика. Потом флаг ошибки еще присобачишь, когда счетчик Доширак(327 знак., 30.09.2017 09:03, )
- Не, немного не всё :) Доширак(208 знак., 30.09.2017 09:20, )
- Таки да, прерывание по изменению состояния вывода данных вроде чаще в I2C используется :) - AU08(30.09.2017 08:51)
- я работал с микросхемой клавиатуры. Там по линии данных выскакивает импульс, сигнализирующий о факте нажатия. А потом по этой же линии считываешь номер кнопки. - Лагунов(30.09.2017 09:14 - 09:20)