Телесистемы
 Разработка, производство и продажа радиоэлектронной аппаратуры
На главную   | Карта сайта | Пишите нам | В избранное
Требуется программист в Зеленограде
- обработка данных с датчиков; ColdFire; 40 тыс.
e-mail:jobsmp@pochta.ru

Телесистемы | Электроника | Конференция «Микроконтроллеры и их применение»

фундаментальное непонимание

Отправлено fewl 21 сентября 2009, г. 02:32


Здравствуйте.

Есть приложение под avrgcc, в котором я инициализирую порты ввода\вывода. В каких-то случаях запись вроде PORTE = x; работает, а в каких-то МК не реагирует. Помогите, пожалуйста, разобраться в конкретном примере, куски которого я привожу ниже:

Код

[main.c]
int main ()
{
ioinit_ATmega_640();

Dev_Reset();
...
}

[other.c]
void ioinit_ATmega_640 (void)
{
...
PORTE = 0b00100000;
DDRE = 0b00110100;
...
}

void Dev_Reset()
{
PORTE = 0;


if (bit_is_set(PINE, PE5))
{
<сигнализация того, что опустить PE5 не удалось>
return;
}
...
}

Чего я не понимаю? Почему порт не обнуляется в этом случае? Просто, если добавить строчку "PORTE = 0;" в main.c, то всё работает, как нужно (единица сбрасывается).


Составить ответ | Вернуться на конференцию.

Ответы


Отправка ответа
Имя*: 
Пароль: 
E-mail: 
Тема*:

Сообщение:

Ссылка на URL: 
URL изображения: 

если вы незарегистрированный на форуме пользователь, то
для успешного добавления сообщения заполните поле, как указано ниже:
сколько миллиампер в одном ампере ?:

Перейти к списку ответов | Конференция | Раздел "Электроника" | Главная страница | Карта сайта

Rambler's Top100 Рейтинг@Mail.ru
 
Web telesys.ru