Цитата(Jagupop @ Jul 3 2007, 04:17)

sei();
set_sleep_mode (SLEEP_MODE_IDLE);
cli ();
....
Процессор, вроде как не просыпается... хотя не уверен. А как определить? Подскажите, что неправильно в исходнике?
Видимо WinAVR? Если так, то set_sleep_mode() выбирает режим "сна", но еще не загоняет процессор в сон. Делать надо так:
Код
set_sleep_mode(SLEEP_MODE_IDLE); // выбираем "тип сна"
sleep_enable(); // разрешаем "засыпать"
... // код до засыпания
sleep_cpu(); // заснуть
.... // код после просыпания
И еще. Когда прерывание выводит процессор из спящего режима, то прежде чем перейти к обработчику прерывания, процессор выполнит сначала следующую за командой SLEEP команду. Поэтому следующей командой не стоит сразу ставить CLI, если хотите обеспечить обработку прерывания, а лучше поставить NOP.