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

 
 
> управление ножками, keil+mcb1200(lpc1227)
Tsyganoks
сообщение Jul 30 2012, 10:15
Сообщение #1





Группа: Новичок
Сообщений: 7
Регистрация: 7-07-11
Пользователь №: 66 105



Есть контроллер nxp lpc1227. Нужно управлять группой пинов, расположенной на разных портах. Можно определить их так, что на ноге выставлялась 1 после присвоения единицы переменной, а не LPC_GPIO0->SET= PIN[n].
Ну или есть ли какие-нибудь другие способы отойти от этой записи?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
toweroff
сообщение Jul 31 2012, 06:12
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 2 957
Регистрация: 19-09-06
Из: Москва
Пользователь №: 20 514



Я так понимаю, что PIN[x] определено как
Код
#define PIN[x]    (1UL<<x)


тогда MUX_OFF() можно переписать как
Код
LPC_GPIO0->CLR = PIN[6] | PIN[7];
LPC_GPIO2->CLR = PIN[0];


И что-то не совсем я понял вот это:
Код
LPC_GPIO0->SET = PIN[6]&(kanal<<6);
LPC_GPIO0->SET = PIN[7]&(kanal<<6);

Go to the top of the page
 
+Quote Post
Tsyganoks
сообщение Jul 31 2012, 06:54
Сообщение #3





Группа: Новичок
Сообщений: 7
Регистрация: 7-07-11
Пользователь №: 66 105



Цитата(toweroff @ Jul 31 2012, 09:12) *
Я так понимаю, что PIN[x] определено как
Код
#define PIN[x]    (1UL<<x)


тогда MUX_OFF() можно переписать как
Код
LPC_GPIO0->CLR = PIN[6] | PIN[7];
LPC_GPIO2->CLR = PIN[0];


И что-то не совсем я понял вот это:
Код
LPC_GPIO0->SET = PIN[6]&(kanal<<6);
LPC_GPIO0->SET = PIN[7]&(kanal<<6);


Да, можно)

GPIO0_6, GPIO0_7, GPIO2_0 соответствуют А0 А1 А2 на мультиплексоре. я смещаю полученное число на столько бит, на сколько смещен бит PIN[6]. что бы при сравнении, при наличии младшего бита, PIN[6] ставился в 1
Go to the top of the page
 
+Quote Post
toweroff
сообщение Jul 31 2012, 07:13
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 2 957
Регистрация: 19-09-06
Из: Москва
Пользователь №: 20 514



да, все верно
меня что-то смутило смещение и там, и там на 6 бит
Но, в любом случае, нужно маскировать 2-й бит в kanal и переписать вот так:
Код
LPC_GPIO0->SET = ((kanal&0x03)<<6);

одной строкой - два бита сразу
Go to the top of the page
 
+Quote Post
Tsyganoks
сообщение Jul 31 2012, 09:16
Сообщение #5





Группа: Новичок
Сообщений: 7
Регистрация: 7-07-11
Пользователь №: 66 105



Цитата(toweroff @ Jul 31 2012, 10:13) *
да, все верно
меня что-то смутило смещение и там, и там на 6 бит
Но, в любом случае, нужно маскировать 2-й бит в kanal и переписать вот так:
Код
LPC_GPIO0->SET = ((kanal&0x03)<<6);

одной строкой - два бита сразу

А, ну последовательно-это так повезло, я для общего случая писал
Go to the top of the page
 
+Quote Post



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

 


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


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