Цитата(Палыч @ Feb 12 2009, 15:33)

В AVRStudio Ваш пример работает... Несколько замечаний по самой программе:
1. Запрешать прерывания в обработчике прерываний не имеет смысла: при входе в него - прерывания запрещены; при выходе - разрешаются вновь.
2. Устанавливать таким образом: EICRA &= ~(1<<0); уровень сигнала - несколько странно (уровень определяется двумя битами)
3. Если уровень ни INT0 стал низким и не меняется, то при выходе из прерывания - тут же произайдёт новое прерывание по INT0 (правда, успеет выполниться одна команда основного цикла). Т.е., обычно, в прерывании по уровню что-то делают с условием срабатывания.
4. Если меняете EICRA, то делают это до разрешения прерывания в EIMSK и очищают флаг прерывания (см. даташит).
Спасибо что попробовали в AVRStudio, но хочется то что бы в IAR заработало...
По пункту 2 полностью согласен.
По пункту 3 попрошу уточнить.
Если EICRA=0x00 т.е. 0 и 1 биты в 0. Как только разрешены глобальные прерывания, происходит соответсвенно обработка INT0, в теле обработки я например устанавливаю EIMSK 0 бит в 0, и запрещаю прерывания для INT0, тогда зацикливаться не будет? я правильно думаю?
Вообщем то пока писал проверил.
Добавил в обработку прерывания запрет для всех INT EIMSK=0x00;
В CVAVR помогло. В IAR нет...

Цитата(clpe @ Feb 12 2009, 15:56)

DDRE=0xFF; //конфигурируем порты
DDRF=0xFF;
DDRB = 0xFF; - без этой строки работает
Простите а Вы в чем компилировали/проверяли?
у меня нет

DDRB = 0xFF; - без этой строки работает
совершенно безобидная на мой взгляд строка...