AlexMI 18 3 часа назад Опубликовано 3 часа назад · Жалоба 46 минут назад, ДЕЙЛ сказал: Работать всё будет, но операционка будет тупить, если, например, таймер TIM1 будет генерировать прерывание 10000 раз в секунду или по I2C будем получать 50 кБ в секунду. Не, это так не работает. Или "многозадачность" на прерываниях, или RTOS, одновременно эти подходы использовать точно не стоит. А какой лучше это от конкретной задачи зависит, универсального решения нет. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
kochevkv 1 2 часа назад Опубликовано 2 часа назад (изменено) · Жалоба 1 hour ago, ДЕЙЛ said: Я не создавал. Здесь поднялся вопрос о нагромождении кода в обработчике прерывания. Считаю, что в любых прерываниях нужно находиться минимально возможное время. Забежал, флаг сбросил, пин выставил, байт прочитал и назад. Да там больше половины это метки времени для теста. Остальное макросы где регистры читаются и устанавливаются. Условно на четных циклах я устанавливаю один период, на нечетных - другой. Сброс флагов. И чтение буфера SPI. Переменные компилятор сократит если упрусь в быстродействие. С учетом того что код в кэше там накладные расходы несколько циклов от 500 МГц. Ну сделаю я часть в цикле, но все равно гарантированное время нужно будет чтобы обработать все что надо, пропуски недопустимы, это выборка сигнала. Хоть в прерывании это будет, хоть в цикле - без разницы. При этом выборке я так могу задать максимальный приоритет и пусть другие подождут. А в цикле часики сработают на отрисовку в прерывании и хана выборке (в случае если мне нужна доп.обработка которую я в прерывание добавлю еще). 6 hours ago, ДЕЙЛ said: Возможно, частота тактирования CPU относительно низкая У cpu - 500 МГц. У таймера 75. Изменено 2 часа назад пользователем kochevkv Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться