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

 
 
 
Reply to this topicStart new topic
> Манипулирование выводом, LPC2368
FormatCft
сообщение Nov 11 2008, 21:00
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 331
Регистрация: 22-07-08
Из: Р О С С И Я
Пользователь №: 39 145



Код
int main (void)
{    
//off ETM
PINSEL10 = 0;
//GPIO Port 1.10
cbi(PINSEL2, 20);
cbi(PINSEL2, 21);
//P1.10 as out
sbi(IO1DIR, 10);    
//I want to set out
sbi(IO1SET, 10); //<- do not work
}

Может кто-то сталкивался с таким?
Изначально порт висит в третьем состоянии.
Заранее спасибо за ответы.
Go to the top of the page
 
+Quote Post
zltigo
сообщение Nov 12 2008, 00:14
Сообщение #2


Гуру
******

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



Цитата(FormatCft @ Nov 12 2008, 00:00) *
Заранее спасибо за ответы.

Не использовать бездумно некий cbi()


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
FormatCft
сообщение Nov 12 2008, 06:44
Сообщение #3


Местный
***

Группа: Свой
Сообщений: 331
Регистрация: 22-07-08
Из: Р О С С И Я
Пользователь №: 39 145



Цитата(zltigo @ Nov 12 2008, 05:14) *
Не использовать бездумно некий cbi()

По идее пинсел трогать не нужно. Уже включена именно та функция, которая нужно.
Работает одинаково, что с определением пинсел, что без.
Другие порты без проблем работают.
Забыл сказать, что когда мы определяем направление порта, порт переходит из 3-го состояния и определяется выходом. Причем становится в землю. И ни как не получается его поставить в 1.
Навсякий случай приведу описание cbi, sbi взятые из FreeRTOS.
#ifndef sbi
#define sbi(x,y) x|=(1 << (y))
#endif

#ifndef cbi
#define cbi(x,y) x&=~(1 << (y))
#endif

Мужики. Есть какие-нибудь идеи? Принимаются самые смелые идеи.
Go to the top of the page
 
+Quote Post
ssergy
сообщение Nov 12 2008, 11:45
Сообщение #4


Участник
*

Группа: Участник
Сообщений: 21
Регистрация: 29-01-06
Пользователь №: 13 730



А режим работы порта (нормальный или быстрый) выбирать не пробовали?
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Nov 12 2008, 12:16
Сообщение #5


Гуру
******

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



Цитата(FormatCft @ Nov 12 2008, 00:00) *
Код
sbi(IO1SET, 10); //<- do not work
Зачем вы делаете |= с IO1SET? Почитайте принцип работы этого регистра. Хотя причина не в этом.


--------------------
На любой вопрос даю любой ответ
"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 Текстовая версия Сейчас: 20th June 2025 - 01:45
Рейтинг@Mail.ru


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