vitalyn (12.03.2014 09:49, просмотров: 42) ответил SciFi на 70 микросекунд? Вы в этом прерывании траекторию считаете с двойной точностью и тригонометрией что ли? Расчёты можно и нужно проводить в фоновом режиме, складывая данные в буфер. Прерывание должно всего лишь вынимать готовые данные из буфера, а это
Нет, данные посчитаны ещё за время отработки предыдущей пачки. Там есть несколько засад. Во-первых, там ещё много прерываний приходится от разных источников отрабатывать. Во-вторых, у этого дурацкого SAM7A3 после того, как счётчик числа импульсов посчитал их и уронил свой выход в 0, тем самым запретив генерацию импульсов, он оказывается в ступоре. Дело в том, что у него сигнал SWTRG синхронный, т.е. пока не появится клок на входе его невозможно сбросить, в том числе, установить выход в 1, чтобы эти клоки появились. Приходится:
1) остановить первый счётчик
2) переключать второму вход на системный клок
3) дёрнуть SWTRG
4) немного подождать и остановить,
5) переключать ему вход на выход с первого счётчика
6) задать параметры обоим счётчикам (заранее насчитанные!) и перезапустить.