Спящий режим Mega8 WinAVR

Вопросы настройки, программирования, прошивки микроконтроллеров и микросхем программируемой логики
Аватара пользователя
Neekeetos
Держит паяльник хвостом
Сообщения: 993
Зарегистрирован: Пн сен 18, 2006 11:16:05
Откуда: Тула
Контактная информация:

Сообщение Neekeetos »

Aheir писал(а):Требование грамотно и по-русски излагать свои мысли относится ко всем темам на этом Форуме!
Я с этим согласен,однако НЕ согласен с людьми которые не участвуют в обсуждении темы а лишь влезают со своими замечаниями по поводу опечаток, мне кажется это убивает обсуждение на корню. Разве обсуждение собственно темы не важнее грамотности реплик участников?

ЗЫ Я специально проверил последние сообщения тов. Худгуна, все они были аналогичного характера, то есть он как бы всех поправляет НЕ КАСАЯСЬ ТЕМЫ ОБСУЖДЕНИЯ, это вы называете активным участием в форуме? Я считаю что такое "участие" мешает больше неграмотного влезшего в собственно обсуждение, поэтому и ответил ему.
Реклама
Аватара пользователя
OBIVAN
Встал на лапы
Сообщения: 84
Зарегистрирован: Вт ноя 25, 2008 18:56:41

Сообщение OBIVAN »

Неужели моя ошибка привела к неправельному пониманию сообщения :o .Hudgun Вы наверное учитель русского языка а не электронщик!!!
Реклама
Аватара пользователя
ooogo
Это не хвост, это антенна
Сообщения: 1306
Зарегистрирован: Вс янв 18, 2009 20:51:02

Re: Спящий режим Mega8 WinAVR

Сообщение ooogo »

Подскажите в чем может быть загвоздка, при выходе из спящего режима (power down) по внешнему прерыванию INT1, программа зацикливается

Код: Выделить всё

if(sleep_mode)	
  	{	
    sleep_mode=0;
    PORTB=0xFF;          //тушим все разряды
    PORTD=0;
    set_sleep_mode(SLEEP_MODE_PWR_DOWN);
    cli();
    sleep_enable();

    //MCUCR=(1<<SE)|(1<<SM1);      //разрешаем переход в спящий режим "пауэр даун"
    TIMSK=0;          //запретить прерывание по переполнению таймера2
    GICR=(1<<INT1);        //разрешаем внешнее прерывание INT1
    GIFR=(1<<INTF1);        //обнуляем флаг внешнего прерывания ИНТ1
    sei();
    sleep_cpu();
    sleep_disable();
    
    //asm("SLEEP");        	//засыпаем
    //cli();
    //MCUCR=0;          //запрещаем переход в спящий режим 
    GICR=0;          	//запрешаем внешнее прерывание INT1
    GIFR=(1<<INTF1);        //обнуляем флаг внешнего прерывания ИНТ1
    TIFR=(1<<TOV2);        //обнуляем флаг прерывания по переполнению таймера2
    //sei();
    
    
    pr=1;
    digit_out[0] = 14;//знак"t"
    digit_out[1] = 14;
    digit_out[2] = 14;
    digit_out[3] = 14;
    
    TIMSK=(1<<TOIE2);        //разрешить прерывание по переполнению таймера2

  	};
после выхода из спящего режима на дисплее "tttt" и прога ни на что не реагирует, но раз индикация идет, то прерывания по переполнению таймера2 выполняются.
Закрыто

Вернуться в «Микроконтроллеры и ПЛИС»