Разработка, производство и продажа радиоэлектронной аппаратуры
|
Требуется программист в Зеленограде - обработка данных с датчиков; 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, то всё работает, как нужно (единица сбрасывается).
Составить ответ | Вернуться на конференцию.
Ответы