Технический форум по робототехнике.
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

avr123.nm.ru » 01 мар 2007, 20:39
Согласно avr123.nm.ru/03.htm "прерывания в AVR" и даташиту переход на вектор прерывания должен занимать не менее 4-х тактов (я на память говорю).
+ время на начало выполнения функции обработчика прерывания такое же как время перехода на любую функцию программы которое зависит от того как на АСМе это делает компилятор.
vitalij » 01 мар 2007, 21:11
но не 60 же тактов на вход и 60 на выход из прерывания....

avr123.nm.ru » 01 мар 2007, 23:27
я ж пишу - от того как это реализовано. Откройте пример с прерыванием и наверно можно в БАСКОМе увидеть асм - посмотрите как он делает прерывание.
Пошагайте по АСМу в VMLAB (avr123.nm.ru/z3.htm) и посчитайте.
vitalij » 02 мар 2007, 02:32
спасибо за совет.
я конечно разберусь, просто думал может кто в симуляторах примечал такой момент. потому и спросил по быстрому.
Myp » 02 мар 2007, 10:30
вы подозревали что симулятор от себя симулирует лишние такты?
