Как настроить прерывание по высокоскоростному счётчику в PMP20?
Механизм называется «100 сегментов»: счётчику задаётся до ста уставок, и при достижении каждой вызывается своя подпрограмма прерывания. Уставки лежат в блоке двухсловных регистров начиная с HD100 (HD100, HD102, HD104 и далее), метки прерываний закреплены за счётчиками.
Метки: HSC0 — I2000…I2099, HSC2 — I2100…I2199, HSC4 — I2200 и далее, HSC6 — I2300, HSC8 — I2400, HSC10 — I2500, HSC12 — I2600, HSC14 — I2700, HSC16 — I2800, HSC18 — I2900. Номер сегмента N даёт метку «база + N − 1».
Формат команды: CNT HSC0 HD0 HD100 для однофазного режима и CNT_AB HSC0 HD0 HD100 для режима фаз A и B, где второй операнд — значение для сравнения, третий — начало блока уставок.
Режимы задаются системными flash-регистрами: SFD330 выбирает относительный (0) или абсолютный (1) отсчёт, SFD331 — одиночный (0) или циклический (1) режим прерываний, SFD332 включает режим кулачка. В каждом из них бит 0 отвечает за HSC0, бит 1 — за HSC2 и так далее до бита 9 (HSC18). Настройки вступают в силу после выключения и включения питания.
Разница режимов: в относительном уставка сегмента N отсчитывается от точки прерывания сегмента N−1, поэтому уставки могут быть отрицательными и описывать движение назад. В абсолютном прерывание происходит при точном совпадении значения счёта с уставкой.
Правила, о которые чаще всего спотыкаются: во время счёта менять уставки нельзя; условие запуска нельзя снимать — после снятия и повторного включения прерываний не будет, пока счётчик не сброшен; циклический режим работает только вместе с относительным отсчётом.
Прикреплённая документация
Георгий Жуков
Ведущий инженер