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

 
 
> LPC2214 & IO0PIN, Правильно ли использовать IO0PIN для записи
Shedon
сообщение Jul 20 2006, 17:42
Сообщение #1


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

Группа: Свой
Сообщений: 110
Регистрация: 30-11-04
Из: Nizhny Novgorod
Пользователь №: 1 262



В datasheet на сабжевый контроллер сказано, что IOPIN это read only, и для записи в порт надо использовать IOSET и IOCLR, но в иаровском хедере для LPC2214 регистр IO0PIN определен как read/write, т.е. запись в него разрешена и действительно если в IO0PIN_bit писать биты, то они выставляются на ножках процессора.
Вопрос насколько опасно так делать?
И почему в таком случае в даташите написанно, то он только для чтения?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
makc
сообщение Jul 20 2006, 17:51
Сообщение #2


Гуру
******

Группа: Админы
Сообщений: 3 621
Регистрация: 18-10-04
Из: Москва
Пользователь №: 904



Цитата(Shedon @ Jul 20 2006, 21:42) *
В datasheet на сабжевый контроллер сказано, что IOPIN это read only, и для записи в порт надо использовать IOSET и IOCLR, но в иаровском хедере для LPC2214 регистр IO0PIN определйн как read/write, т.е. запись в него разрешена и действительно если в IO0PIN_bit писать биты, то они выставляются на ножках процессора.
Вопрос насколько опасно так делать?
И почему в таком случае в даташите написанно, то он только для чтения?


У LPC2106 про этот регистр написано следующее (хотя он тоже помечен как ReadOnly):
Цитата
Note: for test purposes, writing to this register stores the value in the output register, bypassing the need to use both the IOSET and IOCLR registers. This feature is of little or no use in an application because it is not possible to write to individual bytes in this register.


Иными словами, как только Вы захотите работать с отдельными битами/группами бит, то IOPIN окажется неподходящим средством для решения этой задачи, т.к. определяет значение сразу всех бит GPIO. Думаю, что по этой причине они убрали из DS на 2214 описание возможности записи в этот регистр и оставили описание работы через IOSET/IOCLR.


--------------------
BR, Makc
В недуге рождены, вскормлены тленом, подлежим распаду. (с) У.Фолкнер.
Go to the top of the page
 
+Quote Post
zltigo
сообщение Jul 20 2006, 18:25
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Цитата(makc @ Jul 20 2006, 20:51) *
У LPC2106 про этот регистр написано следующее (хотя он тоже помечен как ReadOnly):

У LPC213x/4x уже официально, как R/W.
Похоже :-(, я по простоте душевной несколько раз пользовал его на "старых" LPC, как R/W без побочных эффектов.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
makc
сообщение Jul 20 2006, 18:54
Сообщение #4


Гуру
******

Группа: Админы
Сообщений: 3 621
Регистрация: 18-10-04
Из: Москва
Пользователь №: 904



Цитата(zltigo @ Jul 20 2006, 22:25) *
Цитата(makc @ Jul 20 2006, 20:51) *

У LPC2106 про этот регистр написано следующее (хотя он тоже помечен как ReadOnly):

У LPC213x/4x уже официально, как R/W.
Похоже :-(, я по простоте душевной несколько раз пользовал его на "старых" LPC, как R/W без побочных эффектов.



Судя по всему у них периферийные блоки практически одни и те же. Не удивлюсь, если их делали одни и те же люди. Так что может статься, что они просто не потрудились описать заложенный функционал. Хотя лично мне этот функционал IOPIN (на запись в регистр) пока ни разу не требовался.


--------------------
BR, Makc
В недуге рождены, вскормлены тленом, подлежим распаду. (с) У.Фолкнер.
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Jul 21 2006, 07:29
Сообщение #5


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



Цитата(makc @ Jul 20 2006, 21:54) *
Цитата(zltigo @ Jul 20 2006, 22:25) *
Цитата(makc @ Jul 20 2006, 20:51) *

У LPC2106 про этот регистр написано следующее (хотя он тоже помечен как ReadOnly):

У LPC213x/4x уже официально, как R/W.
Похоже :-(, я по простоте душевной несколько раз пользовал его на "старых" LPC, как R/W без побочных эффектов.



Судя по всему у них периферийные блоки практически одни и те же. Не удивлюсь, если их делали одни и те же люди. Так что может статься, что они просто не потрудились описать заложенный функционал. Хотя лично мне этот функционал IOPIN (на запись в регистр) пока ни разу не требовался.
Похоже это недоработка в доке. В усер мануале на 2119/2129/2192/2292/2294 тоже написано что он read only, но дальше сказано так:
Код
Applications that require instanatneous appearance of zeros and ones on the respected parallel port can use direct access to port’s corresponding GPIO Pin Value Register (IOPIN).
Assuming that pins P0.8 to P0.15 are configured as output, write to IO0PIN:
IO0PIN = 0x0000 C700
will produce the same output as following sequence of writes:
IO0SET = 0x0000 C700
IO0CLR = 0x0000 3800


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post



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

 


RSS Текстовая версия Сейчас: 11th August 2025 - 21:47
Рейтинг@Mail.ru


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