AVR: Сколько тактов занимает обработка прерывания?

Программирование микроконтроллеров AVR, PIC, ARM.
Разработка и изготовление печатных плат для модулей.

AVR: Сколько тактов занимает обработка прерывания?

Сообщение vitalij » 01 мар 2007, 17:37

Ситуация такая- в симуляторе BascomAVR вход и выход из прерывания занимает 100-120 тактов процессора. Загрузил .OBJ файл в AVRstudio симулятор- те же самые 100-120 тактов. При 10Mhz  задержка в 5 микросекунд выглядит  трагично. Пробовал самые простейшие программы и компилировал для различных чипов- ничего не изменяется.....

Варианты (у меня) такие:
1. Я что-то делаю неправильно.
2. Компилятор BascomAVR что-то делает неправильно.
3. Все так и должно быть.

Подскажите пожалуйста, где собака зарыта??
vitalij
 
Сообщения: 73
Зарегистрирован: 30 авг 2006, 14:00
Откуда: Клайпеда, Литва

Сообщение EdGull » 01 мар 2007, 17:44

Ты имеешь ввиду, что твоя подпрограмма выполняемая по прерыванию выполняется 100 тактов?
А вообще прерывания на русском описаны в книге Микроконтроллеры AVR семейств Tiny и Mega... страница 68 последний абзац, перепечатывать много, поэтому мне лень.
если религия не позволяет ее купить, ищи отсканированную.
Аватара пользователя
EdGull
 
Сообщения: 10211
Зарегистрирован: 28 дек 2004, 20:33
Откуда: Тольятти
Skype: Ed_Gull
прог. языки: Bascom AVR Basic
ФИО: Гуль Эдуард Викторович

Сообщение D-M » 01 мар 2007, 18:04

чтобы не быть голословным выложи сюда текст программы или кусок: "подпрограмма обработчик прерывания"
Аватара пользователя
D-M
 
Сообщения: 486
Зарегистрирован: 28 мар 2006, 17:28
Откуда: Пенза

Сообщение Myp » 01 мар 2007, 18:29

ну да вполне нормально если в прерывании чтото есть
а вобще можно почитать в книжке скока тратиться чисто на вход и выход
Аватара пользователя
Myp
скрытый хозяин вселенной :)
 
Сообщения: 18018
Зарегистрирован: 18 сен 2006, 12:26
Откуда: Тверь по прозвищу Дверь
прог. языки: псевдокод =) сила в алгоритме!
ФИО: глубокоуважаемый Фёдор Анатольевич

Сообщение vitalij » 01 мар 2007, 20:19

$regfile = "2313def.dat"
$crystal = 10000000


Config Int0 = Falling
On Int0 Re
Enable Int0
Enable Interrupts

Do
nop
Loop

End

Re:
nop
Return

:D
vitalij
 
Сообщения: 73
Зарегистрирован: 30 авг 2006, 14:00
Откуда: Клайпеда, Литва

Сообщение avr123.nm.ru » 01 мар 2007, 20:39

Согласно  avr123.nm.ru/03.htm  "прерывания в AVR"  и даташиту переход на вектор прерывания должен занимать не менее 4-х тактов (я на память говорю).

+ время на начало выполнения функции обработчика прерывания такое же как время перехода на любую функцию программы которое зависит от того как на АСМе это делает компилятор.
Аватара пользователя
avr123.nm.ru
отсылающий читать курс
 
Сообщения: 14195
Зарегистрирован: 06 ноя 2005, 04:18
Откуда: Москва

Сообщение vitalij » 01 мар 2007, 21:11

но не 60 же тактов   на вход и 60 на выход из прерывания....

:durak:
vitalij
 
Сообщения: 73
Зарегистрирован: 30 авг 2006, 14:00
Откуда: Клайпеда, Литва

Сообщение avr123.nm.ru » 01 мар 2007, 23:27

я ж пишу - от того как это реализовано.  Откройте пример с прерыванием и наверно можно в БАСКОМе увидеть асм - посмотрите как он делает прерывание.  

Пошагайте по АСМу в VMLAB (avr123.nm.ru/z3.htm) и посчитайте.
Аватара пользователя
avr123.nm.ru
отсылающий читать курс
 
Сообщения: 14195
Зарегистрирован: 06 ноя 2005, 04:18
Откуда: Москва

Сообщение vitalij » 02 мар 2007, 02:32

спасибо за совет.

я конечно разберусь, просто думал может кто в симуляторах примечал такой момент. потому и спросил по быстрому.
vitalij
 
Сообщения: 73
Зарегистрирован: 30 авг 2006, 14:00
Откуда: Клайпеда, Литва

Сообщение Myp » 02 мар 2007, 10:30

вы подозревали что симулятор от себя симулирует лишние такты? :)
Аватара пользователя
Myp
скрытый хозяин вселенной :)
 
Сообщения: 18018
Зарегистрирован: 18 сен 2006, 12:26
Откуда: Тверь по прозвищу Дверь
прог. языки: псевдокод =) сила в алгоритме!
ФИО: глубокоуважаемый Фёдор Анатольевич


Вернуться в Микроконтроллеры

Кто сейчас на конференции

Сейчас этот форум просматривают: Bing [Bot] и гости: 14