Сообщение от DrunyaRuma
|
Для установки INT0 по низкому уровню необходимо:
EICRA = 0;
EIMSK = (1‹‹INT0);
разрешаем прерывание;
Прерывание будет генерироваться даже если порт INT0 будет сконфигурирован как выход.Выложите исходник и схему, если это конечно не коммерческая тайна.Будет время помогу чем смогу.
|
Огромное спасибо
Потихоньку разбираюсь с переходом с меге8 на мегу88 вопросы были (читайте выше) но потихонечку из глупых и бестолковых, как для меня так и для Вас, они обретают какойто смысл. Исходники выложить не могу т.к. увидят башку оторвут, а она мне еще пригодится.
Что касается прерывания
кусок кода под мегу8
void go_to_sleep(void)
{
ent_flag=0;//чистим флаг кнопки Ent
GICR|=0x40;//разрешаем INT0 (кнопка Ent)
GICR&=0x7f;//запрещаем INT1 сдесь более понятно
MCUCR&=0xfc;//устанавливаем INT0 по низкому уровню
а вот тут не очень
//GIFR=0x00;//чистим флаг прерываний
sleep_enable();//уходим в PowerDown
powerdown();
#asm("cli")
ent_flag=1;//была нажата кнопка Ent
GICR&=0x3f;//запрещаем INT0 и INT1
//GIFR=0x00;//чистим флаг прерываний
#asm("sei")
}
Почему под мегу88 EICRA=0
[/code]
И еще под ATMeg'у8 код OCR2=0x00
нужно изменить под Мегу88
OCR2A=0x00
OCR2B=0x00