|
ATmega8: симуляция прерываний в ISIS (Proteus), Не работает симуляция прерывания INT0 |
|
|
|
Jan 3 2007, 10:43
|
Группа: Новичок
Сообщений: 10
Регистрация: 31-07-06
Пользователь №: 19 211

|
Может кто-нибудь сталкивался: есть тестовая программка написанная на C (IAR) для ATmega8, которая включает прерывание INT0, генерирует его программно и обрабатывает. В AVR Studio симуляция проходит успешно: ручное изменения значения PIND PD2 приводит к прерыванию, также нормально работает программная генерация прерывания. При симуляции в Proteus ни один из вариантов не работает (даже не становится на бряке в обработчике прерывания). Все настройки контроллера установлены по дефолту, копание в них ни к чему не привело. :-( В чем может быть проблема?
Исходный код:
#include <ioavr.h> #include <inavr.h>
#include <avr_macros.h>
int main() { int a; CLEARBIT(DDRD, PD2); // INT0 as input MCUCR = 0x01; // INT0 at any change of signal level SETBIT(GICR, INT0); // INT0 enabled SETBIT(SREG, 7); // interrupts are enabled __enable_interrupt(); SETBIT(DDRD, PD7); // PD7 as output CLEARBIT(PORTD, PD7); if (!TESTBIT(PORTD, PD7)) SETBIT(PORTD, PD7); while(true) { a++; if (a == 0) { SETBIT(DDRD, PD2); // PD2 (INT0) as output SETBIT(PORTD, PD2); CLEARBIT(PORTD, PD2); CLEARBIT(DDRD, PD2); // PD2 (INT0) as input } } return 0; }
#pragma vector = INT0_vect __interrupt void Int0(void) { CLEARBIT(GIFR, INTF0); PORTD ^= (0x01 << PD7); }
|
|
|
|
|
 |
Ответов
|
Mar 14 2007, 12:42
|
Местный
  
Группа: Свой
Сообщений: 204
Регистрация: 5-01-06
Пользователь №: 12 860

|
У меня о моделях ATMEGA в протеусе осталось самое плохое впечатление. Началось с того, что он не отрабатывает на меге-8 rcall далее 4К, пришлось менять на call.... SPI не работает.... и т.д. и т.п. На пики пока не собираюсь переходить
|
|
|
|
|
Mar 14 2007, 16:18
|
Знающий
   
Группа: Свой
Сообщений: 543
Регистрация: 22-10-05
Пользователь №: 9 984

|
Цитата(ivstech @ Mar 14 2007, 12:42)  У меня о моделях ATMEGA в протеусе осталось самое плохое впечатление. Началось с того, что он не отрабатывает на меге-8 rcall далее 4К, пришлось менять на call.... команды rcall и rjmp по природе своей не дают перехода более 4кбайт или 2кслов  +Пополню список в меге16 нет прерывния INT2
|
|
|
|
|
Mar 14 2007, 20:01
|

Ambidexter
    
Группа: Свой
Сообщений: 1 589
Регистрация: 22-06-06
Из: Oxford, UK
Пользователь №: 18 282

|
Цитата(bodja74 @ Mar 14 2007, 13:18)  команды rcall и rjmp по природе своей не дают перехода более 4кбайт или 2кслов  Поправлю малёк. В AVRstudio есть режим "wrap relative jump", который позволяет МК с не более чем 8Кбайтами (4Клова) флеши на борту осуществлять переходы на 4Клова, т.е. одного джампа хватает на прыжок через всю память из любого места. Фича спорная, с моей точки зрения даже немного вредная, привыкнешь так, потом переходишь на 64К и облом, ставь длинные джампы и коллы, но она есть, ничего не попишешь.
--------------------
Делай сразу хорошо, плохо само получится
|
|
|
|
Сообщений в этой теме
nvhleb ATmega8: симуляция прерываний в ISIS (Proteus) Jan 3 2007, 10:43 nvhleb Совсем забыл, версия Proteus 6.9 SP5 от kazus.ru. Jan 3 2007, 13:32 nvhleb Есои не трудно, киньте pls. avr.dll от proteus 6.7... Jan 3 2007, 14:29 bodja74 В протеусе режим at any change of signal level (пр... Jan 3 2007, 16:12 nvhleb Прикольно ) Действительно, интересная фича... Хоть... Jan 3 2007, 17:03 bodja74 Цитата(nvhleb @ Jan 3 2007, 17:03) Прикол... Jan 3 2007, 17:36 nvhleb Читал, но там описано очень мало багов/ограничений... Jan 3 2007, 18:10 bodja74 Протеус начинал с пиков,и кто с ними работает его ... Jan 3 2007, 18:46 nvhleb bodja74, спасибо огромное за консультацию!
Аб... Jan 3 2007, 21:42 AndryG Продолжая список глюков AVR в Proteus ...
... на... Mar 5 2007, 11:56 #alex_ Цитата(AndryG @ Mar 5 2007, 13:56) Продол... Mar 6 2007, 21:02 DeXteR Цитата(bodja74 @ Jan 3 2007, 19:46) Проте... Mar 14 2007, 12:15 DeXteR Цитата(ivstech @ Mar 14 2007, 13:42) У ме... Mar 14 2007, 19:56
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|