Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: PINSELx и PINMODEx
Форум разработчиков электроники ELECTRONIX.ru > Сайт и форум > В помощь начинающему > ARM, 32bit
Novichok1
Доброго времени суток!
Недавно начал знакомиться с микроконтроллерами (LPC2478), и среди прочего у меня возникло недопонимание функций регистров PINSELx и PINMODEx, и как с ними обращаться. Как понимаю, PINSEL0 изменяет функции пинов, но как именно, для меня остается пока загадкой; также нет точного представления для чего нужны остальные PINSELx и PINMODEx.
Я понимаю, что вопрос может быть глупый, но ответа я пока не нашел, надеюсь на вашу помощь.
toweroff
Цитата(Novichok1 @ Jul 23 2009, 12:09) *
Доброго времени суток!
Недавно начал знакомиться с микроконтроллерами (LPC2478), и среди прочего у меня возникло недопонимание функций регистров PINSELx и PINMODEx, и как с ними обращаться. Как понимаю, PINSEL0 изменяет функции пинов, но как именно, для меня остается пока загадкой; также нет точного представления для чего нужны остальные PINSELx и PINMODEx.
Я понимаю, что вопрос может быть глупый, но ответа я пока не нашел, надеюсь на вашу помощь.


так в даташите все нерусским по белому... Каждый PINSELx конфигурит 32/4=8 пинов какого-то порта (по 4 функции на пин)
PINMODE задает режим работы pull-up и pull-down на каждый пин порта... Читайте мануал
richie
Аппаратуры много в камне запихано, а ног мало. Максимально мозможно что конкретная нога может быть использоваться
в одной из 4 аппаратур (см. UserManual на семейтво чипов, таблички с каждым PINSELx, два бита конфигурируют 1 ногу).
После ресета, до конфигурирования портов, все пиня стандартно являются GPIO (ввод-вывод), т.е. все PINSELx = 0x00000000,
где x - 0,1,2,3 и т.д.
Novichok1
Тогда выходит, что для конфигурирования P2.10 для второй функции этого пина EINT0 мы должны выпонить что-то похожее на следующее:
PINSEL9=0x00000200,
что неправильно.
А в мануале выведено следующее

PINSEL0 = 0x20000000; //Select the EINT0 function in the pin connect block

Что по идее должно значить, что у нулевого порта восьмая ножка настроена на вторую функцию.
(0x20000000 = 10 0000 0000 0000 0000 0000 0000 0000)
Это при условии, что одну один PINSEL конфигурирует 8 пинов(4 бита на пин при полной загрузке регистра, что помоему тоже неправильно).
А при условии, что один пин конфигурирует 2 бита, как писал Richie, и как написано в мануале, то у нулевого порта 15 ножка сконфигурирована на третью функцию.

Вот я и не понимаю, как происходит собственно настройка функций пиновsad.gif
LessNik
Цитата(Novichok1 @ Jul 23 2009, 13:26) *
А в мануале выведено следующее

PINSEL0 = 0x20000000; //Select the EINT0 function in the pin connect block

Что по идее должно значить, что у нулевого порта восьмая ножка настроена на вторую функцию.
(0x20000000 = 10 0000 0000 0000 0000 0000 0000 0000)


1. В каком мануале? В LPC24XX User manual Rev. 03 — 15 January 2009 PINSEL4 биты 21:20 должны быть равны 01 для ~EINT0
2. Где это написано "PINSEL0 = 0x20000000; //Select the EINT0 function in the pin connect block" ?
Novichok1
О, теперь все ясно! Спасибо большое всем откликнувшимся! Вы мне очень помогли!
To LessNik:
Вычитал это в мануале на семейство LPC23:lpc2300_book_v2.smile.gif
LessNik
Цитата(Novichok1 @ Jul 23 2009, 15:19) *
О, теперь все ясно! Спасибо большое всем откликнувшимся! Вы мне очень помогли!
To LessNik:
Вычитал это в мануале на семейство LPC23:lpc2300_book_v2.smile.gif


В следующий раз, если цитируете что-то, приводите документ, чтобы не сбивать с толку людей.
У Вас микроконтроллер LPC2478 - семейство LPC24XX , а LPC23:lpc2300_book_v2 описывает другое семейство микроконтроллеров
=> читайте LPC24XX User manual и всё получится wink.gif
Novichok1
Ну да, полностью с Вами согласен!)
Novichok1
А вы не могли бы еще на один вопрос ответить?)
http://electronix.ru/forum/index.php?showt...=65478&st=0
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.