Вот отрывок кода, который тестирует:
Код:
GetDump:
MOVB #6,@#TMRSTATE ;0x06-> TMRSTATE (остановить таймер, шаг 16мкс)
MOV #99,@#TMRBUF ;99 -> TMRBUF (записать значение в буферный регистр)
Перед вызовом прерывания запрещены вообще.
Как видно, в буферный регистр заносится число 99, затем таймер запускается, ждется число 5 в регистре текущего значения, и начинается протоколирование в память, где оказывается соответственно 5, 4, 3, 2, 1, 0, 98, 97 и т.д.
Так вот, иногда там оказывается 5, 4, 3, 2, 1, 0, 4095, 4094, что может означать ТОЛЬКО ОДНО, что число 99 НЕ прописалось в буферный регистр, а прописалось число 0. Иных вариантов предположить не могу.