roboforum.ru

Технический форум по робототехнике.

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

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

vitalij » 01 мар 2007, 17:37

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

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

Подскажите пожалуйста, где собака зарыта??

EdGull » 01 мар 2007, 17:44

Ты имеешь ввиду, что твоя подпрограмма выполняемая по прерыванию выполняется 100 тактов?
А вообще прерывания на русском описаны в книге Микроконтроллеры AVR семейств Tiny и Mega... страница 68 последний абзац, перепечатывать много, поэтому мне лень.
если религия не позволяет ее купить, ищи отсканированную.

D-M » 01 мар 2007, 18:04

чтобы не быть голословным выложи сюда текст программы или кусок: "подпрограмма обработчик прерывания"

Myp » 01 мар 2007, 18:29

ну да вполне нормально если в прерывании чтото есть
а вобще можно почитать в книжке скока тратиться чисто на вход и выход

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

avr123.nm.ru » 01 мар 2007, 20:39

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

+ время на начало выполнения функции обработчика прерывания такое же как время перехода на любую функцию программы которое зависит от того как на АСМе это делает компилятор.

vitalij » 01 мар 2007, 21:11

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

:durak:

avr123.nm.ru » 01 мар 2007, 23:27

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

Пошагайте по АСМу в VMLAB (avr123.nm.ru/z3.htm) и посчитайте.

vitalij » 02 мар 2007, 02:32

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

я конечно разберусь, просто думал может кто в симуляторах примечал такой момент. потому и спросил по быстрому.

Myp » 02 мар 2007, 10:30

вы подозревали что симулятор от себя симулирует лишние такты? :)


Rambler\'s Top100 Mail.ru counter