ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Четверг
4 июля
101630 Топик полностью
rezident (06.10.2007 23:39, просмотров: 105) ответил km на Мне надо выполнять действия например через 5 мкс. В прерывании CCR0 пишу код. Компилятор С свой код вставляет - как быть увереным, что общее время выпол. кода не более 5мкс
Блин, km, вы что не можете писать в одной теме? Нахрена каждый раз новую ветку заводить? В третий раз вам отвечаю. Запустите в IAR симулятор, откройте окно View->Register, там будет CYCLECOUNTER. Установите один брейкпоинт на первой ассемблерной инструкции в обработчике прерывания, второй бейкпоинт на команде reti. Запустите вашу программу. Запишите на листке бумаги значение переменной CYCLECOUNTER при останове по первому бейкпоинту. Затем и при останове по второму бейкпоинту запишите на том же листке вторую цифру CYCLECOUNTER. Возьмите калькулятор и вычтите из второй цифры первую. Добавьте к получившемуся числу 6 тактов на вход в прерывание, 5 тактов на выход из прерывания и 1 такт на выборку команды reti. Итоговое число поделите на тактовую частоту MCLK (выраженную в Герцах), которая будет у вас в реальном кристалле. Теперь посмотрите на дисплей калькулятора - вы видите время выполнения процедуры прерывания, выраженное в секундах. Чтобы перевести это число в миллисекунды умножьте его на 1000. Если в процедуре прерывания имеются ветвления, то для выяснения наибольшей длительности нужно задать такие условия, чтобы прогнать программу по самой длинной ветке. Но тут я уже вам не помогу, т.к. исходного кода вы не представили.