Ioann_II 0 13 сентября, 2020 Опубликовано 13 сентября, 2020 · Жалоба Времени не было сразу задуматься, почему не получилось на частоте 15кГц (с максимальным делением)... а на выходных задумался... Причина простая - есть обработчик прерывания, который вызывается каждую 1мс, и видимо, при такой частоте, не успевает за 1мс выполнить все необходимые операции. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 184 13 сентября, 2020 Опубликовано 13 сентября, 2020 · Жалоба А зачем вообще включать какие-то прерывания если проснулись и просто ждёте какого-то GPIO-сигнала? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Ioann_II 0 14 сентября, 2020 Опубликовано 14 сентября, 2020 · Жалоба Питание нарастает достаточно медленно, а GPIO имеет зону неопределённости между уровнями 0 и 1, поэтому у меня выбор: или ставить пороговый элемент (сформировать этот GPIO сигнал), либо применить обычную задержку. Пошёл по второму пути. Задержка (1с) основана на прерывании SysTick. Это прерывание единственное, и его я не отключаю. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Сергей Борщ 119 14 сентября, 2020 Опубликовано 14 сентября, 2020 · Жалоба 6 часов назад, Ioann_II сказал: Задержка (1с) основана на прерывании SysTick. Это прерывание единственное, и его я не отключаю. Напишите для этого случая другую задержку на любом свободном таймере: запретите прерывание этого таймера в NVIC, но разрешите в самом таймере, отключите бит SLEEPDEEP, выполните _WFE() и ожидайте события от этого таймера в режиме Sleep. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться