Запускаю вот такую простенькую программку под атмегой 8535, через полторы секунды после начала протеус зависает (притом как чистый протеус так и симуляция из под авр-студии)
Программа компилируется win-avr (2010) без ворнингов и ошибок
Если проходить симуляцию по шагам, то протеус попадает в цикл ISR (ADC_vect) и вернуться от туда не может (ADC в модели пробовал отключать от всего - даже вися в воздухе он почему-то попадает в ISR)
Что я делаю не так?
Код: Выделить всё
#include <avr/io.h>
#include <avr/interrupt.h>
int main( void )
{
PORTB = 0;
DDRB = 0xff;
TIMSK = 0;
TCCR0 = (1<<WGM01)|(1<<WGM00)|(1<<COM01)|(0<<COM00)|(0<<CS02)|(1<<CS01)|(1<<CS00);
TCNT0 = 0;
OCR0 = 0;
ADMUX = (0<<REFS1)|(1<<REFS0)|(1<<ADLAR)|(0<<MUX3)|(0<<MUX2)|(0<<MUX1)|(0<<MUX0);
ADCSRA = (1<<ADEN)|(1<<ADSC)|(1<<ADATE)|(1<<ADIE)|(1<<ADPS2)|(1<<ADPS1)|(1<<ADPS0);
SFIOR = 0;
sei();
while(1)
{
}
return 0;
}
ISR (ADC_vect)
{
OCR0 = ADCH;
}