ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Четверг
21 ноября
1035321 Топик полностью
fk0, легенда (10.09.2020 15:53, просмотров: 700) ответил FDA на Другие прерывания есть. Но там приём от UART. По идее быстро всё выполняется. Но проверить это легко, временно отключу их и всех делов-то.
Я бы частоту понизил. К чему эта миллисекунда? Если нужно мгновенное точное время -- читаешь из регистра таймера и получаешь. Прерывания могут быть хоть раз в секунду, чем реже -- тем лучше. Лимит снизу -- приемлимое время реакции на событие связанное с таймаутом. Ещё идея: я на PGC и PGD (когда программатор не подключен они могут работать как входы или выходы) выводил два сигнала: на входе в любое прерывание PGC ставился в 1, и ставился в 0 только на выходе из последнего 

прерывания. Перед переходом в SLEEP сигнал PGD ставился в 0, и в 1 при продолжении работы. Это давало очень важную информацию о работе системы в целом: сколько времени процессор проводит в прерываниях прекрасно было видно (при отключенном программаторе) на ножке PGC, на осциллографе. А загрузку процессора -- на ножке PGD. Если почти 100% прерывания, да даже если больше ~четверти -- это сулит проблемы. Если загрузка постоянно 100% то тоже повод задуматься (значит не успевает вовремя отреагировать на события). Здесь же дело не в том, что если у тебя питание от сети, то экономить батарейку нечего и спать незачем. Дело в том, что есть скорей какой-то "биг луп" (big loop) в котором крутится программа. И этот биг-луп будится в конечном счёте только от прерываний (в т.ч. прерываний от таймера). И потом работает пока есть внутренние события для обработки (сгенерированные при обработке других событий, а изначально от аппаратного события). Когда все события обработаны -- можно засыпать. Как-то так. И ясно, что если не засыпает никогда -- время реакции на внешние события начинает увеличиваться вплоть до неприличия. Кроме моментов, конечно, когда есть какие-то долгие вычисления. Или если не засыпает -- есть какой-то баг, какие-то циклы в событийной системе (когда сам себе генерирует и обрабатывает, и так без конца), условно говоря зависание некоторых компонентов (цикл при этом крутится, другие события могут обрабатываться, ватчдог сбрасываться).


Ссылка на старый пост (как можно организовать на PIC):

http://caxapa.ru/279767/

[ZX]