fatall_error писал(а):
Я конечно не сильно в AVR разбираюсь, только начинаю. Про какую внутреннюю подтяжку Вы спрашиваете?
В AVR можно программно подключить "резистор" сопротивлением 50-100 кОм между любой линией ввода-вывода и питанием. Это и называется внутренним подтягивающим резистором или подтяжкой. Очень удобно для подключения кнопок - минимум внешних деталей. Но сопротивление великовато, поэтому в реальной схеме возможны ложные срабатывания и стоит ставить внешние резисторы. Он включается когда выставлены DDRx=0; PORTx=1;
fatall_error писал(а):
У меня CVA даже при автоматической компиляции проекта выдает все в шеснадцетиричной форме, поэтому я написал в двоичной.
Что еще расписать чтобы понятнее было?
Вот поэтому автогенераторы кода - зло. Вместо кода получается нечитаемая каша. Как будто так сложно заглянуть в даташит и выставить нужные биты вручную. Вообще, везде, где используются отдельные биты, лучше их расписывать битовыми операциями и сдвигами. Разумеется, это не относится к регистрам данных - UDR, SPDR и т.п. - там по смыслу, обычно десятичное или шестнадцатеричное число.
В данном случае хорошо было бы расписать:
Код: Выделить всё
GICR |= (1<<INT0); // разрешаем прерывание INT0
// в оригинале почему-то (1<<ICS00), что недопустимо для INT0
MCUCR = (1<<ICS01); // прерывание INT0 по спаду
MCUCSR = 0;
GIFR = 0b01000000; // сбрасываем флаг прерывания
Да, вместе с комментариями - как минимум это покажет, что вы разбираетесь что делаете. Ну и покажет, чего хотели добиться. Только не надо оставлять комментарии в стиле КО - они бесполезны.
fatall_error писал(а):
Кстати подключил INT0 в разрез между +5 и землей(через резистор) срабатывает прерывание, но выкидывает (прерывание выставил по спаду)
Что значит "выкидывает"? Может в теле прерывания накосячено?
Посадил резистор между землей и питанием и включил INT0 между резистором и +5v& все работает.
Сопротивление вывода в режиме входа крайне велико, поэтому потенциал на нем зависит от чего угодно. Если у=коммутируете на землю и отпускаете кнопку - там остается уровень земли. Если потом замкнете еще раз - ничего не изменится. Тоже самое с питанием. А вот если подтянуть к питанию - при отключенной кнопке на выводе будет лог.1, при замыкании кнопки - лог.0, а при отпускании емкость ввода быстро зарядится через резистор обратно до напряжения питания.