Лидеры рейтинга
Модератор
1052
Советник
617
Академик
509
Специалист
397
Мастер-Эксперт
196
Профессионал
162
Мастер-Эксперт
108
8.1.8
24.02.2021
JS: 2.2.8
CSS: 4.2.2
jQuery: 3.5.1
|
Перейти к консультации №: |
|
Уважаемые эксперты! Пожалуйста, ответьте на вопрос:
MPLAB X IDE 5.4, XC8, PIC18F14K22.
При симуляции с использованием PICkit3 если установить breakpoint в теле программы, то программа останавливается в этой точке. Если я ее устанавливаю в другом месте программы, все ок. Но если я пытаюсь идти пошагово, то программа выходит в прерывание и все время крутится там. В чем прикол не пойму. Раньше такого не было.
Состояние: Консультация закрыта
Здравствуйте, puaro!
При работе с микроконтроллером в пошаговом режиме отладки, периферия микроконтроллера продолжает работать.
Пошаговое выполнение для микроконтроллера медленное и периферия успевает нагенерировать прерывания в которое попадает ваш МК после того или иного шага. К примеру, вы завели таймер на 100 мс установили точку останова в теле программы, делаете шаги со скоростью 50 мс, то на втором шаге вы попадаете в прерывание по таймеру.
Для отладки режима работы с прерываниями, можно настроить трассировочные сообщения, к примеру на UART. И выводить сообщения читая их в реальном времени через терминал.
![]() |
Консультировал: CradleA (Академик) Дата отправки: 23.02.2021, 13:28 |
Рейтинг ответа:
+2 Сообщение модераторам Отправлять сообщения |
Академик ID: 325460
0
|
ну значит у вас настроено прерывание какоето. ===== |
Посетитель ID: 404726
0
|
Вотчдог и ему подобное покуда все отключено. На этапе отладки это не должно мешать. Прерывание разрешено только Таймеру 2. Он считает до числа, записанного регистр PR2, а по его прерыванию тактируются уже другие счетчики. |
Академик ID: 325460
0
|
ну вот вы висите в точке останова а таймер крутится поэтому и попадаете в прерывание. ===== |
Посетитель ID: 404726
0
|
А разве, когда переходишь в пошаговый режим таймер не останавливается? |
Академик ID: 325460
+2
|
Таймер не отключается он аппаратно работает и в пошаговом режиме. ===== |
Посетитель ID: 404726
0
|
Я понял. Если не секрет, какие еще есть способы проверки в реальном времени.Чисто в пошаговом режиме (без PICkit) программа отрабатывает свой алгоритм, но когда запускаешь на макете с реальным железом, программа куда то улетает (причем периодически) и найти это покуда не получается. Поэтому я взял на время PICkit и думал также его приобрести для себя, но вижу, что пользы от него не очень много. Он даже не позволяет поставить несколько точек остановки. |
Зенченко Константин Николаевич
Старший модератор ID: 31795
+1
|
puaro: Честно говоря, Ваш вопрос ниочем, так чисто риторические, т.е. философские разсуждения: У меня есть код и он тормозит. ===== |
Посетитель ID: 404726
0
|
Если вы действительно специалист, то должны прекрасно понимать, о чем я спросил, я достаточно точно описал свою проблему. Я ведь не прошу, чтобы вы за меня ее делали. |
Академик ID: 325460
+2
|
puaro: Кроме стандартного отладчика можно использовать трассировочные сообщения, которые будут выводиться к примеру в UART. ===== |
Посетитель ID: 404726
0
|
Спасибо |
Возможность оставлять сообщения в мини-форумах консультаций доступна только после входа в систему.
Воспользуйтесь кнопкой входа вверху страницы, если Вы зарегистрированы или пройдите простую процедуру регистрации на Портале.