Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Микроконтроллеры (MCU) и микропроцессоры (MPU) > AT90S2313


Автор: dimoZa 9.10.2005, 22:13
При захвате счетчика (T/C1) значение посылаеться в порт ICR1, и при попытки чтения значения с этого регистра возникает ошибка: Попытка чтения в запрещенной области. Читаю так:
--//--
in r19, icr1l
in r20, icr1h
--//--
Почему возникает данная ошибка и как возможно узнать/прочитать значения захвата.

Автор: cardinal 10.10.2005, 00:43
Я бы сначала попробовал (от балды) использовать команду mov, а потом если не прокатит читать описание процессора и искать примеры в интернете...

Автор: Hobo 10.10.2005, 06:08
Регистр захвата 16-разрядный регистр доступный только для чтения.
По нарастающему или спадающему фронту (в соответствии с выбором
фронта импульса захвата ICES1) сигнала на выводе ICP текущее значение
таймера/счетчика 1 переписывается в регистр захвата ICR1. В это же
время устанавливается флаг захвата ICF1.
Поскольку регистр захвата является 16-разрядным, для чтения его
значения, чтобы оба байта прочитались одновременно, используется вре-
менный регистр. При чтении младшего байта ICR1L, он посылается в ЦПУ,
а старший байт регистра ICR1H переписывается во временный регистр. При
чтении старшего байта, он принимается из временного регистра. Таким
образом для чтения 16-разрядного регистра первым должен читаться млад-
ший байт.

Автор: dimoZa 10.10.2005, 13:44
Hobo, да это я знаю, читал в даташите, но почему-то он все равно не прочитывает значение, хотя и начинаю читать с младшего байта (ICR1L)

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)