зависает симуляция в proteus при включении прерываний ((

Вопросы настройки, программирования, прошивки микроконтроллеров и микросхем программируемой логики
Закрыто
rukez
Встал на лапы
Сообщения: 108
Зарегистрирован: Пт дек 17, 2010 04:02:19

зависает симуляция в proteus при включении прерываний ((

Сообщение rukez »

Подскажите куда копать
Запускаю вот такую простенькую программку под атмегой 8535, через полторы секунды после начала протеус зависает (притом как чистый протеус так и симуляция из под авр-студии)
Программа компилируется win-avr (2010) без ворнингов и ошибок :roll:
Если проходить симуляцию по шагам, то протеус попадает в цикл ISR (ADC_vect) и вернуться от туда не может (ADC в модели пробовал отключать от всего - даже вися в воздухе он почему-то попадает в ISR) :kill:
Что я делаю не так? :oops:

Код: Выделить всё

#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;
}
п.с. протеус 7.7 сп2 англицкий, вин7 х86
Реклама
Аватара пользователя
Engineer_Keen
Друг Кота
Сообщения: 3872
Зарегистрирован: Пт янв 29, 2010 10:27:40
Откуда: Москва

Re: зависает симуляция в proteus при включении прерываний ((

Сообщение Engineer_Keen »

rukez писал(а): Если проходить симуляцию по шагам, то протеус попадает в цикл ISR (ADC_vect) и вернуться от туда не может (ADC в модели пробовал отключать от всего - даже вися в воздухе он почему-то попадает в ISR) :kill:
Что я делаю не так? :oops:
Что значит вися в воздухе попадает в ISR? Это же не прерывание по изменению логического уровня, это прерывание АЦП, как АЦП завершит преобразование, так в ISR и попадет. А оно у вас в free running mode судя по строке SFIOR = 0. И кстати, если внимательнее посмотреть симуляцию, то в основном она торчит на строке "0058 RJMP $+0000(0058)", что соответствует циклу while(1), и иногда переходит в ISR АЦП. Так что все в соответствии с кодом :dont_know:
Реклама
a_skr
Вымогатель припоя
Сообщения: 630
Зарегистрирован: Пн июн 14, 2010 13:07:29
Откуда: Жуковский

Re: зависает симуляция в proteus при включении прерываний ((

Сообщение a_skr »

Win XP
Proteus 7.7 SP2
AVRStudio 4.18

ничего не зависает
Закрыто

Вернуться в «Микроконтроллеры и ПЛИС»