[an error occurred while processing this directive]
До и после < ставь пробелы(+)
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)

миниатюрный аудио-видеорекордер mAVR

Отправлено :) 28 сентября 2005 г. 09:35
В ответ на: Тваю мать! Какая же, это борда для программеров, если она даже сишный код не переваривает??? отправлено <font color=gray>Trashy</font> 28 сентября 2005 г. 08:45

Вот такой цикл:
do{
PowerDown(); //Enable internal ADC
ADMUX = 0xE0;
ADCSRA = 0x87;
TestOn;
BataryVolume = StartADC();
// _WDR();
TestOFF;
ADMUX = 0x00;
}while(BataryVolume < BataryBorder);

Пробуждение по INT0.Так вот, если нажать и удерживать кнопку на INT0(при BataryVolume < BataryBorder), то мега уходит в непонятный ступор и реанимации не подлежит.
Удалось глюк обойти таким образом, добавлением строчки while(!(PIND & (1 < < PD2)));, то есть, ждать пока не отпустят кнопку:
void PowerDown(void)
{
WDTCR = 0x00;
PORTA = 0x00;
PORTB = 0x00;
PORTC = 0x00;
PORTD = B(0,0,0,0,0,0,0,0);
DDRA = B(0,0,0,0,0,0,1,0);
DDRB = B(0,0,0,0,0,0,0,0);
DDRC = B(0,0,0,0,0,0,0,0);
DDRD = B(0,0,0,1,0,0,0,0);
MCUCR = 0x20; //Power-down
ClrBit(GIFR,INTF0);
SetBit(GICR,INT0);
_SEI();
SetBit(MCUCR,SE);
_SLEEP();
_CLI();
ClrBit(GICR,INT0);
ClrBit(GIFR,INTF0);
ClrBit(MCUCR,SE);
while(!(PIND & (1 < < PD2)));
// WDTCR = 0x0F;
}
Кто-нить может объяснить, почему эта хрень не может пахать при постоянном удержании кнопки?

Составить ответ  |||  Конференция  |||  Архив

Ответы


Отправка ответа

Имя (обязательно): 
Пароль: 
E-mail: 
NoIX ключ Запомнить

Тема (обязательно):
Сообщение:

Ссылка на URL: 
Название ссылки: 

URL изображения: 


Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание  |||  Без кадра

E-mail: info@telesys.ru