Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: колличество тактов
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > Cредства разработки для МК > IAR
sKWO
Здраствуйте все!!
Подскажите пожалуйста сколько тактов в ИАРе для АВР занимает вызов прерывания и возврат из него?
ЕСЛИ ТАКОЙ ВОПРОС УЖЕ БЫЛ ТО ИЗВЕНИТЕ!
и ещё:
_EXTERN_C char __low_level_init() {
//настройка периферии
/* Return 1 to indicate that normal segment */
/* initialization should be performed. If */
/* normal segment initialization should not */
/* be performed, return 0. */
return 1;
}
_END_EXTERN_C

Что это нам даёт и почему так?
Насколько я понял если инициализация прошла успешно то возвращает 1, если нет то 0. А для чего это нужно?
Заранее спасибо.
stoker
Цитата(sKWO @ Jul 28 2007, 23:00) *
Здраствуйте все!!
Подскажите пожалуйста сколько тактов в ИАРе для АВР занимает вызов прерывания и возврат из него?


Незнаю с каким чипом вы работаете, но у меня когда то был такой же вопрос.
Взято из даташита на ATMega8:
Цитата
Interrupt Response Time:
The interrupt execution response for all the enabled AVR interrupts is four clock cycles
minimum. After four clock cycles, the Program Vector address for the actual interrupt
handling routine is executed. During this 4-clock cycle period, the Program Counter is
pushed onto the Stack. The Vector is normally a jump to the interrupt routine, and this
jump takes three clock cycles. If an interrupt occurs during execution of a multi-cycle
instruction, this instruction is completed before the interrupt is served. If an interrupt
occurs when the MCU is in sleep mode, the interrupt execution response time is
increased by four clock cycles. This increase comes in addition to the start-up time from
the selected sleep mode.
A return from an interrupt handling routine takes four clock cycles. During these four
clock cycles, the Program Counter (2 bytes) is popped back from the Stack, the Stack
Pointer is incremented by 2, and the I-bit in SREG is set.

Надеюсь поможет.
IgorKossak
Цитата(sKWO @ Jul 28 2007, 22:00) *
return 1;
Что это нам даёт и почему так?

Если возвращается 1, то далее производится инициализация/обнуление сегментов в ОЗУ.
Если 0 - инициализация/обнуление не производится.
Там же в комментарии всё написано.
Rst7
Цитата(stoker @ Jul 28 2007, 22:37) *
Незнаю с каким чипом вы работаете, но у меня когда то был такой же вопрос.
Взято из даташита на ATMega8:

Надеюсь поможет.


Я так понимаю, человека интересует вопрос накладных расходов именно компилятора. Эти расходы зависят от количества используемых регистров, модели проца. Можно конечно вывести общую формулу, но проще посмотреть в .lst-файл и посчитать количество тактов на оверхед. И конечно они суммируются со значением из ДШ.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.