| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Микроконтроллеры (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) |