реклама на сайте
подробности

 
 
> Не могу пробудить М8 из спящих режимов внешним перыванием(, в даташите написано что можно прбудить М8 низким уровнем сигнала INT0
Electronic)
сообщение Oct 6 2008, 00:09
Сообщение #1


Частый гость
**

Группа: Новичок
Сообщений: 97
Регистрация: 15-04-08
Пользователь №: 36 783



доработал програму для ухода схемы в спящий режиим. всё не плохо потребление 7,5мкА но не могу пробудить внешним перыванием по INT1. в рабочем режиме всё происходит как и задано программно в прерывании, загораются диоды проверочные и т.д. а только уходит в режим PowerDown не пробуждается и не делает прерывание. из Idle так же не выходит. Хотя сделал всё GICR = 0x80;(разрешение прерывания INT1) +подтягивающий резистор PORTD=0x08;(для +5В на INT1) + MCUCR = 0xa0(спящий режим powerdown); + asm("sleep");

вот само прерывание

#pragma interrupt_handler int1_isr:3
void int1_isr(void)
{
//external interupt on INT1
WDTCR=0x1F;
WDTCR=0x0F;
LED_ON;
PORTB = 0x10;
PORTC = 0xfe;
PORTD = 0x0f;
LED_ON;
}
если бы порты конфигуриролись как написано то всё бы на плате светилось после замыкания INT на землю). в рабочем режиме замыкаю INT1 на землю всё светится. после ухода в спячку пробуждатся по этому прерыванию не хочет = на плате темнота))

вот подсказанная мне информация из даташита на М8
"Low level interrupts on INT0/INT1 are detected asynchronously. This implies that these interrupts can be used for waking the part also from sleep modes other than Idle mode."

Подскажите что это может быть!???


--------------------
Самурай без меча - такой же, как самурай с мечом, только без меча
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Electronic)
сообщение Oct 6 2008, 07:48
Сообщение #2


Частый гость
**

Группа: Новичок
Сообщений: 97
Регистрация: 15-04-08
Пользователь №: 36 783



добавлю что в книге написано что контроллер сам выходит из спящего режима по любому прерываю что доступно в данном режиме. или может напутали и всё таки нужна какая то команда?

и вот кусок программы который уводит в режим слип при принятии символа с UART:


unsigned char uart0_rx_isr(void)
{
//uart has received a character in UDR
ch=UDR;
/*вот эта строчка уводит в слип*/
UCSRB=0;WDTCR=0x1F;WDTCR=0x00;/*запрещаю WDT что бы не ресетился*/MCUCR = 0xa0;PORTD=0x08;PORTB=0;PORTC=0;asm("sleep");asm("nop");
/*это продолжение порграммы вам её читать не обязательно*/
if(sb==1){TCCR0=0;sb=0;if(ch>=128){CLI();ST=1; UDR=0;UCSRB=0x08;/*only peredacha*/ch-=128;UDR=('#');d();UDR=('1');d();UDR=ch;UCSRB=0;EP_W(0,ch);lcd_t(ch);while(1);}else{ch=0;sl_count=0;TCC
R1B=0x05;}}
if(ch==42){sb=1;UDR=0;UCSRB=0x90;pause_timer1();/*only priyom*/timer=0;TCCR0 = 0x05;}
}

Сообщение отредактировал Electronic) - Oct 6 2008, 08:15


--------------------
Самурай без меча - такой же, как самурай с мечом, только без меча
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 22nd June 2025 - 12:10
Рейтинг@Mail.ru


Страница сгенерированна за 0.01347 секунд с 7
ELECTRONIX ©2004-2016