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

 
 
 
Reply to this topicStart new topic
> Непонятки с регистрами, Регистры только для записи
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
Leen
сообщение Nov 13 2007, 06:36
Сообщение #2


Частый гость
**

Группа: Свой
Сообщений: 172
Регистрация: 5-08-06
Из: Владивосток
Пользователь №: 19 343



Дык... Маны читать надо... Регистр только для записи - это такая фиговина, которая действует моментом, при этом у него есть уровень, который он ловит. Например: если регистр включения клоков выполняет заданное действие по лог 1 в бите (включить клоки), то при записи в него 0b00001001 он включит клоки для номеров 0 и 3, а все остальные оставит, как было. Если потом записать в него 0b00001100, то он включит клоки для номеров 2 и 3, но так как номер 3 уже тактируется, то ему (номеру) бледно-фиолетово. А если записать в регистр 0b00000000, то просто ничего не произойдет. Для запрещения клоков есть второй регистр - выключения клоков. Он тоже write-only, и работает так же. Есть еще третий регистр - статусный, read-only, в нем если в бите 1, клоки включены, если 0 - выключены. Например после того, что я написал, в статусе после первой записи будет 0b00001001, после второй - 0b00001101.
Go to the top of the page
 
+Quote Post
sergeeff
сообщение Nov 13 2007, 07:01
Сообщение #3


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

Группа: Свой
Сообщений: 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.01359 секунд с 7
ELECTRONIX ©2004-2016