kotriks писал(а):ноги в воздухе висят.
INT0 тоже в воздухе висит?
kotriks писал(а):ноги в воздухе висят.
ARV писал(а):kotriks писал(а):ноги в воздухе висят.
а программно что с ногами? DDR в нулях или нет? Код тестовый или рабочий? Т.е. помимо усыпления что-то делается или перед усыплением делалось?
Код: Выделить всё
// External Interrupt(s) initialization
// INT0: On
EICRA=0x01;
EIMSK=0x01;
EIFR=0x01;
PCICR=0x00;
Код: Выделить всё
interrupt [EXT_INT0] void ext_int0_isr(void)
{
sleep_disable();
}Код: Выделить всё
SMCR |= ((1<<SE) | (0<<SM2) | (1<<SM1) | (1<<SM0));
#asm("sleep")
kotriks писал(а):INT0 тоже в воздухе висит.
uk8amk писал(а):kotriks писал(а):INT0 тоже в воздухе висит.
Ужас.
В таком случае предлагаю вообще отключить прерывания. Это единственная возможность понаблюдать за режимом сна.
Код: Выделить всё
ICRA=0x00;
EIMSK=0x00;
EIFR=0x00;
PCICR=0x00;
я ж вам давно написал: прочесть даташит и сделать ПРАВИЛЬНО!kotriks писал(а):Как мне его будить если нельзя включить прерывание то
Код: Выделить всё
DDRB = 0;
PORTB = 0xFF;В *.h не должно быть фунций. Максимум - их объявления, но сам код функции должен быть только в *.c файлахalexandergb писал(а):Не могу перейти (F11) к функции, которая расположена в *.h.
Код: Выделить всё
SMCR |= ((1<<SE) | (0<<SM2) | (1<<SM1) | (1<<SM0));
#asm("sleep"); Код: Выделить всё
SMCR &= ~(1 << SE);
SMCR |= ((0<<SM2) | (0<<SM0) | (0<<SM0));