|
|
|
Помогите освоить MPLAB X IDE |
|
|
|
Jul 29 2018, 13:30
|
Местный
Группа: Участник
Сообщений: 492
Регистрация: 12-11-11
Пользователь №: 68 264
|
Цитата(Herz @ Jul 28 2018, 19:19) Не пойму, почему у меня не получается видеть значения переменных в окне Watches (или Variables) во время отладки. Вот, к примеру, крутится пару строчек для теста: Код do { U1 = ADC_5 (0, 0); RB0 = ~RB0;
} while (1); Так вот, значение RB0 я могу видеть, а значение U1 - нет. Почему бы это? В некоторых случаях отладчик не может увидеть значение локальной переменной. Я так понял, U1 - локальная переменная в какой-то функции, а RB - порт ввода/вывода. RB объявлен как глобальная переменная по определенному MMIO-адресу, скорее всего. Поэтому и видится без проблем. Объявите U1 глобально и посмотрите. В Keil, для ARM, по крайней мере, это так. Хотя бывает такое, что и локальные переменные видны. Причины разные - оптимизация (при отладке у должна быть в O0), размещение переменной в регистре... Ваша ситуация видится похожей.
Сообщение отредактировал Arlleex - Jul 29 2018, 13:51
|
|
|
|
|
Jul 30 2018, 10:02
|
Гуру
Группа: Модераторы
Сообщений: 10 983
Регистрация: 23-11-05
Пользователь №: 11 287
|
Это очень странно. U1 у меня - переменная, объявленная в функции main, то есть, по сути, глобальная. Попытки объявить её как static, register или auto ничего не изменили. На extern ругается и, как бы, понятно почему. В MPLAB 8.xx не было такой проблемы. Внутри функций виделись локальные переменные, в основной программе - глобальные, как и положено. Сейчас же в каждой функции по-прежнему нет проблем с видимостью её локальных переменных, но вот в main я, почему-то, могу видеть только SFR или, вот, состояние портов.
Как ещё я могу объявить U1 глобальной?
|
|
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|