-
- Уважаемый SciFi, объясните мне в какой последовательно и что разрешить/запретить, что бы все работало - IBAH(02.10.2017 12:32 - 12:36, ссылка)
- Польщён, конечно, но сейчас нет ни времени, ни желания вытягивать подробности и вести за ручку. Полностью солидарен с ллойдом --> SciFi(53 знак., 02.10.2017 12:41 - 12:46, ссылка)
- Я именно так и хочу, как говорит лойд. У меня не получается победить контроллер прерываний! как по прерыванию запретить прерывания, а потом разрешить? - IBAH(02.10.2017 12:46)
- И ещё. Даже само прерывание не нужно, не разрешайте его вообще. Сигнал на ноге поднимет флаг PENDING, этот флаг нам и нужен - NVIC_GetPendingIRQ(). Сбрасываем этот флаг NVIC_ClearPendingIRQ() и обрабатываем событие. - SciFi(02.10.2017 12:55)
- Зачем запрещать? - SciFi(02.10.2017 12:48)
- Чтобы сигнал на этом входе не вызвал новое прерывание. Хочу так - Прерывание возникло, запрещаем прерывание, пользуемся ногой по своему усмотрению (в фонвой задаче), разрешаем прерывание. - IBAH(02.10.2017 12:57)
- Тогда нужно так, как я написал чуть выше. В общих чертах: SciFi(234 знак., 02.10.2017 13:01, ссылка)
- бл, все концепция рушится... у меня ядро спит и будится от системного таймера, уарта и этого прерывания. - IBAH(02.10.2017 13:18)
- Тогда нужно так, как я написал чуть выше. В общих чертах: SciFi(234 знак., 02.10.2017 13:01, ссылка)
- Чтобы сигнал на этом входе не вызвал новое прерывание. Хочу так - Прерывание возникло, запрещаем прерывание, пользуемся ногой по своему усмотрению (в фонвой задаче), разрешаем прерывание. - IBAH(02.10.2017 12:57)
- Я именно так и хочу, как говорит лойд. У меня не получается победить контроллер прерываний! как по прерыванию запретить прерывания, а потом разрешить? - IBAH(02.10.2017 12:46)
- Польщён, конечно, но сейчас нет ни времени, ни желания вытягивать подробности и вести за ручку. Полностью солидарен с ллойдом --> SciFi(53 знак., 02.10.2017 12:41 - 12:46, ссылка)
- "Считываешь с этой же ноги"? То есть, реализуя slaveSPI, ты повесил прерывания на линию данных? Так не делают, вешай прерывания на выбранный фронт SCK, прерывайся, считывай бит MOSI, сдвигай байт получаемых данных, инкрементируй счетчик принятых Доширак(29 знак., 30.09.2017 08:42, )
- я работал с микросхемой клавиатуры. Там по линии данных выскакивает импульс, сигнализирующий о факте нажатия. А потом по этой же линии считываешь номер кнопки. - Лагунов(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)
- у меня Куб в аналогичной задаче всё настроил и сделал. Я только в файле stm32l4xx_it.c в void EXTI0_IRQHandler(void) вставил свою функцию и всё. - Лагунов(30.09.2017 07:33)
- Какой МК? Я бы для начала посмотрел, как очищается бит запроса прерывания. - Dingo(29.09.2017 18:54 - 18:58)
- Для начала надо схему смотреть, что Hives(85 знак., 30.09.2017 07:25, )
- А как же обещанная команда телепатов ? ТС вредно заниматься МК, если он не знает, что такое аппаратный SPI. - _basile(30.09.2017 07:41, )
- Может у него все аппаратные закончились (совсем), а выбор кристалла религия использовать не позволяет? Или просто хочется штаны через голову одевать? - AU08(30.09.2017 07:54)
- [0xff] Ну что ж вы сразу так! "Все мы учились понемногу чему-нибудь и как-нибудь"(с). Но я бы порекомендовал ТС всё же более дружелюбное место в интернетах поискать. - Dingo(30.09.2017 07:48)
- Согласен! Такие, как SciFi, любого могут достать :) - AU08(30.09.2017 08:38 - 08:52)
- А как же обещанная команда телепатов ? ТС вредно заниматься МК, если он не знает, что такое аппаратный SPI. - _basile(30.09.2017 07:41, )
- Для начала надо схему смотреть, что Hives(85 знак., 30.09.2017 07:25, )
- Как-то очень сложнааа. lloyd(214 знак., 29.09.2017 18:54)
- Уважаемый SciFi, объясните мне в какой последовательно и что разрешить/запретить, что бы все работало - IBAH(02.10.2017 12:32 - 12:36, ссылка)