Разработка, производство и продажа радиоэлектронной аппаратуры
|
Требуется программист в Зеленограде - обработка данных с датчиков; ColdFire; 40 тыс.
e-mail: jobsmp@pochta.ru
|
Скажите , а можно как-то в 16ти разрядном таймере AVR программно вызвать механизмы захвата значения счетчика в регистры ICRnH, ICRnL?
Отправлено
Двоешник (193.200.150.82) 12 сентября 2012, г. 11:29
Мне нужно по внешнему прерыванию получить текущие значения таймера для нужд программы ,но регистры 16ти разрядные и доступ к ним осуществляется специфически. Я посмотрел листинг на асме и обратил внимание на довольно большую конструкцию чтения / записи специализированных 16 ти разрядных регистров таймера. Желательно не терять время на это внутри прерывания.
Я так понял ,что захват осуществляется либо по измененям на ноге ICPnлибо по изменениям выхода компаратора. Нельзя ли как-то имитировать изменения выхода компаратора (ну не знаю, может флаг прерывание от него выставить или ICFn флаг), чтоб аппаратно "схватить" текущее 16ти разрядное значение таймера?
Спасибо!
---
К сож. ноги компаратора и ICP заняты.
Составить ответ | Вернуться на конференцию
Ответы
- 16битные регистры в AVR имеют буфер. поэтому можно спокойно считывать. Одновременно со считыванием младшего байта в буфер будет помещен старший, который и будет считан при последующем чтении старшего байта. - mandigit (пустое, 12.09.2012, 21:12:18 85.141.221.5)
- А напрямую прочитать TCNTxx религия не позволяет? - argus98 (пустое, 12.09.2012, 12:19:5 81.22.205.230)
- Ответ: (+) - Двоешник (603 байт, 12.09.2012, 12:28:24 193.200.150.82)
- Ну как-бы да. Перепишите обработчик на ассемблере и уложитесь в 3 команды, включая RETI (если достаточно получения результата в регистрах). - Точка опоры (пустое, 12.09.2012, 11:55:50 79.120.63.4)
- Какая там большая конструкция, тем более внутри прерывания? In r1,TCNT1l потом In r2,TCBT1h две команды. Чтобы не вклинилось прерывание, их обрамляют командами cli и sei? точненн, не sei a то, что было до cli. Из-за этого большая конструкция? - maik-vs (пустое, 12.09.2012, 11:46:25 46.159.91.225)
- cli не нужен - argus98 (пустое, 12.09.2012, 12:20:45 81.22.205.230)