Возникла проблема при одновременном использовании таймера и внешнего прерывания! МК ATmega16.
Использую Atmel Studio 6.
Собственно код инициализации:
Код: Выделить всё
// Инициализация портов
DDRD &= ~(1<<0);
DDRD &= ~(1<<1);
DDRD &= ~(1<<2);
DDRD &= ~(1<<3);
PORTD |= (1<<0)|(1<<1)|(1<<2)|(1<<3);
I2CInit();
// Инициализация таймера 0 (~1000 Гц), режим сброса по совпадению, предделитель на 1024
TCCR0 |= (1<<CS02)|(1<<WGM01);
OCR0 = 31;
TIMSK |= (1<<OCIE0);
// Инициализация таймера 1 в режиме Fast PWM
// Инициализация внешних прерываний
MCUCR |= (1<<ISC10)|(1<<ISC11);
GICR |= (1<<INT1);
// Инициализация АЦП
ADMUX |= (1<<REFS0)|(1<<REFS1);
ADCSRA |= (1<<ADEN);При этом в МК бесконечно срабатывает внешнее прерывание, а таймер 0 молчит. Если закомментировать инициализацию внешних прерываний, то прерывание от таймера срабатывает нормально. Подскажите где тут грабли...
В Proteus работают оба прерывания, т.е. идеально. В реальной железке работает только внешнее. Плата на предмет дефектов и замыканий проверялась неоднократно.
