Лидеры рейтинга

ID: 226425

Konstantin Shvetski

Модератор

1052

Россия, Северодвинск


ID: 165461

Лангваген Сергей Евгеньевич

Советник

617

Россия, Московская обл.


ID: 401284

Михаил Александров

Академик

509

Россия, Санкт-Петербург


ID: 398750

Елена Васильевна

Специалист

397

Беларусь, Гомель


ID: 137394

Megaloman

Мастер-Эксперт

196

Беларусь, Гомель


ID: 400669

epimkin

Профессионал

162


ID: 259041

Алексеев Владимир Николаевич

Мастер-Эксперт

108

Россия, пос. Теплоозёрск, ЕАО


8.1.8

24.02.2021

JS: 2.2.8
CSS: 4.2.2
jQuery: 3.5.1


 

• С / С++

Создание программ на языках C и C++.

Администратор раздела: CradleA (Академик)


Коцюрбенко Алексей Владимирович
Статус: Старший модератор
Рейтинг: 583
Gluck
Статус: 8-й класс
Рейтинг: 258
Зенченко Константин Николаевич
Статус: Старший модератор
Рейтинг: 234
 

Перейти к консультации №:
 

Консультация онлайн # 200296
Раздел: • С / С++
Автор вопроса: puaro (Посетитель)
Дата: 19.02.2021, 13:19
Поступило ответов: 1

Уважаемые эксперты! Пожалуйста, ответьте на вопрос:
MPLAB X IDE 5.4, XC8, PIC18F14K22.
При симуляции с использованием PICkit3 если установить breakpoint в теле программы, то программа останавливается в этой точке. Если я ее устанавливаю в другом месте программы, все ок. Но если я пытаюсь идти пошагово, то программа выходит в прерывание и все время крутится там. В чем прикол не пойму. Раньше такого не было.

Состояние: Консультация закрыта

Ответ # 280772 от CradleA (Академик)

Здравствуйте, puaro!
При работе с микроконтроллером в пошаговом режиме отладки, периферия микроконтроллера продолжает работать.
Пошаговое выполнение для микроконтроллера медленное и периферия успевает нагенерировать прерывания в которое попадает ваш МК после того или иного шага. К примеру, вы завели таймер на 100 мс установили точку останова в теле программы, делаете шаги со скоростью 50 мс, то на втором шаге вы попадаете в прерывание по таймеру.
Для отладки режима работы с прерываниями, можно настроить трассировочные сообщения, к примеру на UART. И выводить сообщения читая их в реальном времени через терминал.


Консультировал: CradleA (Академик)
Дата отправки: 23.02.2021, 13:28

Рейтинг ответа:

+2

[подробно]

Сообщение
модераторам

Отправлять сообщения
модераторам могут
только участники портала.
ВОЙТИ НА ПОРТАЛ »
регистрация »

Мини-форум консультации № 200296

CradleA

Академик

ID: 325460

1

= общий = |  19.02.2021, 13:51 |  цитировать |  профиль |  личное сообщение

ну значит у вас настроено прерывание какоето.
когда идете пошагово к примеру вотчдог может срабатывать или еще что-то. а когда программа крутится быстро этой сработки не происходит.

=====
to live is to die

puaro

Посетитель

ID: 404726

2

= общий = |  19.02.2021, 14:02 |  цитировать |  профиль |  личное сообщение

Вотчдог и ему подобное покуда все отключено. На этапе отладки это не должно мешать. Прерывание разрешено только Таймеру 2. Он считает до числа, записанного регистр PR2, а по его прерыванию тактируются уже другие счетчики.

CradleA

Академик

ID: 325460

3

= общий = |  19.02.2021, 14:05 |  цитировать |  профиль |  личное сообщение

ну вот вы висите в точке останова а таймер крутится поэтому и попадаете в прерывание.

=====
to live is to die

puaro

Посетитель

ID: 404726

4

= общий = |  19.02.2021, 15:14 |  цитировать |  профиль |  личное сообщение

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

CradleA

Академик

ID: 325460

5

 +2 
 
= общий = |  19.02.2021, 15:16 |  цитировать |  профиль |  личное сообщение

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

=====
to live is to die

puaro

Посетитель

ID: 404726

6

= общий = |  19.02.2021, 15:37 |  цитировать |  профиль |  личное сообщение

Я понял. Если не секрет, какие еще есть способы проверки в реальном времени.Чисто в пошаговом режиме (без PICkit) программа отрабатывает свой алгоритм, но когда запускаешь на макете с реальным железом, программа куда то улетает (причем периодически) и найти это покуда не получается. Поэтому я взял на время PICkit и думал также его приобрести для себя, но вижу, что пользы от него не очень много. Он даже не позволяет поставить несколько точек остановки.

Зенченко Константин Николаевич

Старший модератор

ID: 31795

7

 +1 
 
= общий = |  19.02.2021, 22:07 |  цитировать |  профиль |  личное сообщение
puaro:

Честно говоря, Ваш вопрос ниочем, так чисто риторические, т.е. философские разсуждения: У меня есть код и он тормозит.
smile
Скажите. что не так?
smile

=====
Мне безразлично, что Вы думаете о обо мне, но я рад за Вас - Вы начали думать.
smile

puaro

Посетитель

ID: 404726

8

= общий = |  23.02.2021, 13:16 |  цитировать |  профиль |  личное сообщение

Если вы действительно специалист, то должны прекрасно понимать, о чем я спросил, я достаточно точно описал свою проблему. Я ведь не прошу, чтобы вы за меня ее делали.
Несколько лет назад я впервые взял в руки ПЛК, но был специалист, который давал мне консультации, при чем не очень много, была техподдержка, в итоге пару станков работают.
Сейчас пытаюсь освоить PIC. Уже несколько простых программ написаны и успешно работают.
Если вы можете помочь, помогите пожалуйста, а на флуд у меня нет времени!!

CradleA

Академик

ID: 325460

9

 +2 
 
= общий = |  23.02.2021, 13:23 |  цитировать |  профиль |  личное сообщение
puaro:

Кроме стандартного отладчика можно использовать трассировочные сообщения, которые будут выводиться к примеру в UART.

=====
to live is to die

puaro

Посетитель

ID: 404726

10

= общий = |  23.02.2021, 13:33 |  цитировать |  профиль |  личное сообщение

Спасибо

Возможность оставлять сообщения в мини-форумах консультаций доступна только после входа в систему.
Воспользуйтесь кнопкой входа вверху страницы, если Вы зарегистрированы или пройдите простую процедуру регистрации на Портале.