реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> Помогите освоить MPLAB X IDE
Herz
сообщение Jul 25 2018, 18:24
Сообщение #1


Гуру
******

Группа: Модераторы
Сообщений: 10 983
Регистрация: 23-11-05
Пользователь №: 11 287



Пришлось мне, всё-таки, расстаться с MPLAB 8.xx. Однако, при освоении новой среды столкнулся с некоторыми странностями.
К примеру, выставляю Configuration bits, но каждый раз после компиляции или при новом открытии проекта они упорно возвращаются к установленным "по умолчанию". Очередная попытка изменить на нужные мне значения сопровождается предупреждением "Pending change must be programmed". Как это понимать?
Go to the top of the page
 
+Quote Post
=AK=
сообщение Jul 26 2018, 06:27
Сообщение #2


pontificator
******

Группа: Свой
Сообщений: 3 055
Регистрация: 8-02-05
Из: страны Оз
Пользователь №: 2 483



Цитата(Herz @ Jul 26 2018, 03:24) *
выставляю Configuration bits, но каждый раз после компиляции или при новом открытии проекта они упорно возвращаются к установленным "по умолчанию".

А я в последнее время обленился и вообще их не трогаю. Мне их MCC генерит.
Go to the top of the page
 
+Quote Post
Herz
сообщение Jul 26 2018, 09:55
Сообщение #3


Гуру
******

Группа: Модераторы
Сообщений: 10 983
Регистрация: 23-11-05
Пользователь №: 11 287



Вы имеете в виду, что они прописаны в программе? Но в старой MPLAB был хотя бы такой чекбокс: "Configuration bits set in code". А здесь я даже такой возможности не вижу.
Go to the top of the page
 
+Quote Post
=AK=
сообщение Jul 26 2018, 10:45
Сообщение #4


pontificator
******

Группа: Свой
Сообщений: 3 055
Регистрация: 8-02-05
Из: страны Оз
Пользователь №: 2 483



Цитата(Herz @ Jul 26 2018, 18:55) *
Вы имеете в виду, что они прописаны в программе?

MCC генерирует кучу исходников, вокруг которых строится мой проект. В том числе исходник MCC.c, где прописаны фьюзы.

Go to the top of the page
 
+Quote Post
Herz
сообщение Jul 28 2018, 16:19
Сообщение #5


Гуру
******

Группа: Модераторы
Сообщений: 10 983
Регистрация: 23-11-05
Пользователь №: 11 287



Не пойму, почему у меня не получается видеть значения переменных в окне Watches (или Variables) во время отладки.
Вот, к примеру, крутится пару строчек для теста:
Код
do
{
  U1 = ADC_5 (0, 0);
  
RB0 = ~RB0;  

} while (1);

Так вот, значение RB0 я могу видеть, а значение U1 - нет. Почему бы это?
Go to the top of the page
 
+Quote Post
Arlleex
сообщение Jul 29 2018, 13:30
Сообщение #6


Местный
***

Группа: Участник
Сообщений: 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
Go to the top of the page
 
+Quote Post
Herz
сообщение Jul 30 2018, 10:02
Сообщение #7


Гуру
******

Группа: Модераторы
Сообщений: 10 983
Регистрация: 23-11-05
Пользователь №: 11 287



Это очень странно. U1 у меня - переменная, объявленная в функции main, то есть, по сути, глобальная. Попытки объявить её как static, register или auto ничего не изменили. На extern ругается и, как бы, понятно почему.
В MPLAB 8.xx не было такой проблемы. Внутри функций виделись локальные переменные, в основной программе - глобальные, как и положено.
Сейчас же в каждой функции по-прежнему нет проблем с видимостью её локальных переменных, но вот в main я, почему-то, могу видеть только SFR или, вот, состояние портов.

Как ещё я могу объявить U1 глобальной?
Go to the top of the page
 
+Quote Post
ViKo
сообщение Jul 30 2018, 10:11
Сообщение #8


Универсальный солдатик
******

Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362



Цитата(Herz @ Jul 30 2018, 13:02) *
Как ещё я могу объявить U1 глобальной?

Вне функции main.
Go to the top of the page
 
+Quote Post
Herz
сообщение Jul 30 2018, 10:22
Сообщение #9


Гуру
******

Группа: Модераторы
Сообщений: 10 983
Регистрация: 23-11-05
Пользователь №: 11 287



Цитата(ViKo @ Jul 30 2018, 13:11) *
Вне функции main.

Я пытался, это ничего не меняет. Или даже выдаёт ошибку. В зависимости от спецификатора, с которым я пытаюсь объявить переменную. Как бы Вы объявили её?
Go to the top of the page
 
+Quote Post
ViKo
сообщение Jul 30 2018, 10:48
Сообщение #10


Универсальный солдатик
******

Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362



Цитата(Herz @ Jul 30 2018, 13:22) *
Я пытался, это ничего не меняет. Или даже выдаёт ошибку. В зависимости от спецификатора, с которым я пытаюсь объявить переменную. Как бы Вы объявили её?

volatile объявил бы, тогда она была бы всегда.
Go to the top of the page
 
+Quote Post
Herz
сообщение Jul 30 2018, 11:23
Сообщение #11


Гуру
******

Группа: Модераторы
Сообщений: 10 983
Регистрация: 23-11-05
Пользователь №: 11 287



Так действительно помогло, спасибо. Поскольку у меня прерывания не используются, то и о volatile не задумывался...
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 16th April 2024 - 21:02
Рейтинг@Mail.ru


Страница сгенерированна за 0.01468 секунд с 7
ELECTRONIX ©2004-2016