Перейти к содержанию

Отладка В Atmel Studio 6


mappy89

Рекомендуемые сообщения

Парни, каким образом в режиме отладки Atmel Studio 6 зайти в прерывание по таймеру? К примеру: в main строка запускает таймер на выполнение, однако после прохождения данной строки отладчик прыгает в суперцикле while. Можно ли как то настроить отладку, чтобы "промотать" время до срабатывания прерывания по таймеру и зайти в его обработичк? И где найти окно с регистрами контроллера для их ручной установки?

Ссылка на комментарий
Поделиться на другие сайты

Реклама: ООО ТД Промэлектроника, ИНН: 6659197470, Тел: 8 (800) 1000-321

В 4 студии делается элементарно. Справа есть окно с таймерами и всей периферией. Заходите в таймер и ставите вручную флаг прерывания.

Изменено пользователем pryanic

Антон. Блог

HTPC -> foobar2000 -> SMSL M8A -> Nataly 2012 -> Focal JMLab Tantal 515

Ссылка на комментарий
Поделиться на другие сайты

20% скидка на весь каталог электронных компонентов в ТМ Электроникс!

Акция "Лето ближе - цены ниже", успей сделать выгодные покупки!

Плюс весь апрель действует скидка 10% по промокоду APREL24 + 15% кэшбэк и бесплатная доставка!

Перейти на страницу акции

Реклама: ООО ТМ ЭЛЕКТРОНИКС, ИНН: 7806548420, info@tmelectronics.ru, +7(812)4094849

Повторяю, студия у меня 6. Понятия не имею, что там за окошко справа в 4-й. Конкретно как называется окно, как вызвать его через меню?

Ссылка на комментарий
Поделиться на другие сайты

Выбираем схему BMS для корректной работы литий-железофосфатных (LiFePO4) аккумуляторов

 Обязательным условием долгой и стабильной работы Li-FePO4-аккумуляторов, в том числе и производства EVE Energy, является применение специализированных BMS-микросхем. Литий-железофосфатные АКБ отличаются такими характеристиками, как высокая многократность циклов заряда-разряда, безопасность, возможность быстрой зарядки, устойчивость к буферному режиму работы и приемлемая стоимость. Но для этих АКБ, также как и для других, очень важен контроль процесса заряда и разряда, а специализированных микросхем для этого вида аккумуляторов не так много. Инженеры КОМПЭЛ подготовили список имеющихся микросхем и возможных решений от разных производителей. Подробнее>>

Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161

Вот такая штука со всей периферией. Тыкай во что хочешь.

post-122868-0-55183900-1390844937_thumb.png

Изменено пользователем pryanic

Антон. Блог

HTPC -> foobar2000 -> SMSL M8A -> Nataly 2012 -> Focal JMLab Tantal 515

Ссылка на комментарий
Поделиться на другие сайты

А по поводу настройки срабатывания прерываний - можно ли как то проматывать время до наступления прерывания от таймера а не выставляя биты вручную?

Изменено пользователем mappy89
Ссылка на комментарий
Поделиться на другие сайты

Слева от нужной строки, правой кнопкой, поставь точку останова (Breakpoint - insert breakpoint). Дойдя до этого места программа остановится сама.

Ссылка на комментарий
Поделиться на другие сайты

Не получается. После включения разрешения на прерывание по таймеру и установки его предделителя всё равно цикл отладчика бегает по суперциклу while, при этом до возникновения прерывания по таймеру, я так полагаю, ещё куча итераций / либо у меня почему то отладчик не хочет заходить внутрь обработика прерываний

Изменено пользователем mappy89
Ссылка на комментарий
Поделиться на другие сайты

Попробуй поставить фокус (курсор) на начало обработчика прерывания и нажать CTRL+F10, или из меню отладчика "Run to cursor"

P.S Как отлаживаете, пошагово?

Изменено пользователем Syltetooy
Ссылка на комментарий
Поделиться на другие сайты

Это сделано?

В настройках студии отключи маску прерываний.

ОТЛАДКА-ПАРАМЕТРЫ И НАСТРОЙКИ-DEBUGGER-ATMELL DEBUGER-MASK INTERRUPTS WHILE STEPPING-FALSE.

Если студия 6.1, то в инструментах это.

Ссылка на комментарий
Поделиться на другие сайты

donec, сделал как Вы написали.

Сейчас получается зайти в прерывание, производя следующие действия:

1) дошёл пошагово до команды установки предделителя таймера (т.е. по сути его запуска)

2) вручную установил флаг прерывания таймера

3) в шапке обработчика прерывания (ISR ... ) ;жму Run to cursor, после этого я наконецто в обработчике, после прохождения 1 итерации по обработичку прерывания таймера отладчик вновь переходит на зацикленный while main'a

Есть способ как то упростить процедуру?

Ссылка на комментарий
Поделиться на другие сайты

Зачем Вам код? Свои действия в общем виде я описал (установка предделителя таймера и последующий переход по установке флага прерывания), представьте что всё то же я выполняю на ассемблерею Отсюда вопрос, можно ли упростить процедуру или нет?

Ссылка на комментарий
Поделиться на другие сайты

Элементарно, ставим курсор в нужном месте и нажимаем Run to cursor, только интересно кто без кода скажет дойдет туда программа или нет? Может там какие-то внешние условия нужно задавать.

Ссылка на комментарий
Поделиться на другие сайты

Если по какой то причине нельзя показывать код, обычно пишут аналогичный, при помощи которого удасться воссоздать "ошибку". Но утруждать себя или нет дело каждого...

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

Так что остается всего лишь навести курсор и нажать на кнопку, не так уж и трудно..

Удачи :bye:

Изменено пользователем Syltetooy
Ссылка на комментарий
Поделиться на другие сайты

А долго ждать то? )) Чет после действия Run to cursor в обработчике, если я вручную не выставлю флаг прерывания, у меня отладчик как бы "замораживается", приходится снова жать Shift+ F5 и начинать отладку с нуля

Изменено пользователем mappy89
Ссылка на комментарий
Поделиться на другие сайты

Предделитель, источник тактирования, режим работы таймера, маска флагов прерываний (переполнение/совпадение), глобальное разрешение прерываний - все установлено правильно?

Ссылка на комментарий
Поделиться на другие сайты

Все таймеры настроены правильно, проверял в железе и в симуляторе. Но отладка внутри прерываний только посл ручной установки флагов =(

Ссылка на комментарий
Поделиться на другие сайты

Таймер счет ведет? Это должно быть заметно при пошаговой отладке. Для ускорения процессов можно временно выбрать большую частоту тактирования таймера. По сути прерывания от таймера случаются редко (по сравнению с основным кодом) и при ручной отладке их приходится "долго" ждать. Не плохо "попасть" в то место программы (времени), когда событие от таймера/счетчика должно наступить и пройти этот момент вручную, проверив поведение программы и отладчика. Поставь точку останова в цикле. И тогда можешь проскакивать время циклами. В каждом проходе прогамма будет тормозить на точке останова, а ты сможешь сфокусировать внимание на поведение таймера и его флагов.

Ссылка на комментарий
Поделиться на другие сайты

http://easyelectronics.ru/avr-uchebnyj-kurs-otladka-programm-chast-1.html

Ускоряй процессы

Многие процессы на трассировке идут весьма длительно. Например, в режиме скоростного прогона (F5) эмуляция секунды на моем компе (AThlonXP 1300+/512DDRPC3200) идет около минуты, если не больше. Разумеется ждать столько западло.

Но зачем ждать? если алгоритм задержки верен, то что нам мешает взять и уменьшить время с секунд до десятков миллисекунд?

Если задержка сделана на таймере, то можно временно уменьшить предделители таймеров в 1. Или даже выставить другие значения уставок. Главное, не забыть вернуть все как было.

Антон. Блог

HTPC -> foobar2000 -> SMSL M8A -> Nataly 2012 -> Focal JMLab Tantal 515

Ссылка на комментарий
Поделиться на другие сайты

Всем спасибо.

так как только вчера познакомился с отладчиком, задам ещё пару вопросов:

1) после прохождения по строке : VAR[(counter/8)+8]&=~(1<<(counter%8)); выдаёт страницу с сообщением No source available, как этого избежать?

2) Почему то не могу поменять значение одной переменно, не меняется ни программно, не вручную. Переменная используется в нескольких таймерах, объявлена глобально со спецификатором volatile, в чём может быть дело?

Ссылка на комментарий
Поделиться на другие сайты

  • 1 месяц спустя...

Это сделано?

В настройках студии отключи маску прерываний.

ОТЛАДКА-ПАРАМЕТРЫ И НАСТРОЙКИ-DEBUGGER-ATMELL DEBUGER-MASK INTERRUPTS WHILE STEPPING-FALSE.

Если студия 6.1, то в инструментах это.

Спасибо большое за совет. Две недели ковырялся с дебаггером и в прерывания заходил только вручную установкой курсора на начало прерывания.

После этого совета за 10 минут разобрался с кодом (ну и принцип работы с прерывания наконец-то понял).

Ссылка на комментарий
Поделиться на другие сайты

No source available

Может помочь отключение оптимизации (-Os заменить на -O0)

Ругался на отсутствие форматирования исходного кода (включая отсутствие осмысленных комментариев и наличие неубранного после конфигуратора мусора) не менее 15 раз.

Часть моих наработок.

Ссылка на комментарий
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.
Примечание: Ваш пост будет проверен модератором, прежде чем станет видимым.

Гость
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Ответить в этой теме...

×   Вставлено с форматированием.   Восстановить форматирование

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Загрузка...
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...