Как прочитать и сбросить значение высокоскоростного счётчика PMP20?
Чтение накопленного значения выполняется только 32-битной командой DMOV, а сброс — командой RST; никакие другие команды с высокоскоростным счётчиком напрямую не работают.
Как это выглядит:
DMOV HSC0 D10— переносит накопленное значение в пару регистров D10, D11.DMOV D20 HSC0— записывает значение в счётчик, старое содержимое заменяется. Так задают начальное смещение при привязке к нулю.RST HSC0— сбрасывает и счётчик, и его накопительный регистр.
Ограничение важное: сравнивать значение счётчика напрямую командами вида «больше или равно» нельзя. Сначала DMOV в обычные регистры, потом сравнение — и обязательно 32-битными командами, потому что счётчик двухсловный. Сравнение 16-битной командой даст правильный результат только до 32 767 импульсов, а дальше начнутся необъяснимые срабатывания.
Типовой фрагмент выглядит так: по постоянно включённому условию идёт команда CNT со счётчиком HSC0 и заведомо большой уставкой, рядом по системному меркеру SM0 — команда DMOV HSC0 D0, а дальше уже 32-битные сравнения D0 с уставками включают нужные выходы. Сброс вешают на отдельный меркер: по его нарастающему фронту выполняется RST.
Прикреплённая документация
Георгий Жуков
Ведущий инженер