реклама на сайте
подробности

 
 
> Настройка прерываний в симуляторе IAR
SZ0
сообщение Jan 22 2009, 21:22
Сообщение #1


Местный
***

Группа: Участник
Сообщений: 326
Регистрация: 14-02-06
Пользователь №: 14 331



Каждый раз при входе в симулятор прерывания приходится настраивать заново через Simulator->Interrupts...
При выходе все настройки сбрасываются. Можно ли как-то настроить так, что бы они не сбрасывались?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
dowhile
сообщение Feb 14 2009, 10:23
Сообщение #2


Участник
*

Группа: Новичок
Сообщений: 40
Регистрация: 14-02-09
Пользователь №: 44 853



Помогите пожалуйста. Подскажите как симулировать установку флага ICF1
(стр 137 даташита атмега48) в IAR C-SPY ? Этот флаг не ставится сам в AVRstudio VMLAB PROTEUS
Соответственно прерывание не срабатывает. т.е. как написать макрос установки флага при насчете Таймером1
числа 255 или как написать макрос который просто будет вызывать
прерывание (кто только будет сохранять то что нужно сохранить ???)
Лучше все же флаг взводить если СПАЙ прерывание симулирует при этом.
===============
Смотрел пример макросов прерываний в папке C:\Program Files\IAR\AVR5.20.2\avr\tutor
SetupAdvanced.mac (прицеплен http://www.sharemania.ru/0165742)
К сожалению пока не понял как модифицировать его под мой случай.

Если кто может его "подрихтовать" под мою задачу помогите пожалуйста.
===============
Спсибо !

Проекты IAR и AVRstudio в архиве - http://www.sharemania.ru/0278723

Исходник вот:

Код
#include <ioavr.h>
#include <inavr.h>

volatile unsigned char int_ctr, ctr;

void main(void)
{

  //Set timer 1 in "Phase correct mode".  
  TCCR1A = (1 << WGM11);

  //Set top value of Timer/counter1.
  ICR1 = 0xff;  

  TCCR1B = (1 << WGM13) | (0 << CS11) | (1 << CS10);

              // Enable Timer1 capture event interrupt.
  TIMSK1 |= (1 << ICIE1);

              //Enable interrupts globally.
  __enable_interrupt();
  
  for(;;)
  {
        ctr++;
  }
}


/*        Timer1 Capture Evente interrupt service routine.

This interrupt service routine is run everytime the up-down
counting timer0  reaches TOP (0xff).  */

#pragma vector=TIMER1_CAPT_vect
__interrupt void Timer1CaptureISR(void)
{
    int_ctr++;
}
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 26th June 2025 - 00:48
Рейтинг@Mail.ru


Страница сгенерированна за 0.01372 секунд с 7
ELECTRONIX ©2004-2016