реклама на сайте
подробности

 
 
> Непонятки с регистрами, Регистры только для записи
Daermon
сообщение Nov 13 2007, 06:27
Сообщение #1


Участник
*

Группа: Новичок
Сообщений: 36
Регистрация: 26-10-07
Пользователь №: 31 739



AT91rm9200

Не могу понять почему все работает smile.gif

Пишу в IAR4.42
Создал класс таймер.
Создаю 3 экземпляра класса Timer в Main()
для каждого экземпляра вызываю функцию bool Timer::Init(AT91PS_TC TC_pt, unsigned int Timer_ID, unsigned int Mode, ptrIRQ_fn pIRQTx) которая запускает соответствующий таймер на заданое время.

Вот подобные строки с регистрами только для записи присутствуют в функции Init.
AT91C_BASE_PMC->PMC_PCER = ( 1UL<<Timer_ID ) ;

Так вот. Если эта функция вызывается последовательно для 3х таймеров, то получается каждый последующий должен затереть разрешение для предыдущего...

...А все таймеры работают!!! В чем дело и как правильно работать с регистрами Write only???
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
sergeeff
сообщение Nov 13 2007, 07:01
Сообщение #2


Профессионал
*****

Группа: Свой
Сообщений: 1 481
Регистрация: 10-04-05
Пользователь №: 4 007



Работа с такого типа регистрами очень проста, если четко уяснить одну вещь - не один регистр служит для осуществления операции enable/disable (типа 1 - enable, 0 - disable), а применяются пары регистров. В твоем случае - PMC_PCER и PMC_PCDR. И активным сигналом для сброса/разрешения всегда является 1 в соответствующем разряде.
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 28th July 2025 - 23:25
Рейтинг@Mail.ru


Страница сгенерированна за 0.01348 секунд с 7
ELECTRONIX ©2004-2016