Перейти к содержанию
    

LPC2214 & IO0PIN

В datasheet на сабжевый контроллер сказано, что IOPIN это read only, и для записи в порт надо использовать IOSET и IOCLR, но в иаровском хедере для LPC2214 регистр IO0PIN определен как read/write, т.е. запись в него разрешена и действительно если в IO0PIN_bit писать биты, то они выставляются на ножках процессора.

Вопрос насколько опасно так делать?

И почему в таком случае в даташите написанно, то он только для чтения?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В 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.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Думаю что во всех LPC-процах регистры IOPIN доступны для чтения/записи. Через них удобно делать инверсию. Без них жутко неудобно. Вобщем этот регистр является содержимым порта. Точнее тех его бит, которые настроены как GPIO. А в мануалах иногда встречается лажа.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

У LPC213x/4x уже официально, как R/W.

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

У LPC213x/4x уже официально, как R/W.

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

 

 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Хотя лично мне этот функционал IOPIN (на запись в регистр) пока ни разу не требовался.

Да, обходится можно почти безболезненно.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

У 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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Я задал этот же вопрос в саппорт филипса, вот их ответ:

Philips Semiconductors answer:

Yes, The write cabability was intented for test purposes so that is why it was not in the documentation since the IOSET and IOCLR are most often used to set port pin states. But, there is no problem writing to IO0PIN.

 

Regards

 

Jim E.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

вот их ответ:

Что, в общем, и следовало ожидать....

 

Отзывчивые люди - быстро ответили. Филипсу "+1". Как-то я отвык последнее время от быстрых и разумных ответов.

А тут получается, что можно будет пообщаться при необходимости.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...