Условие всегда ложно PORTG

Вопрос или проблема

Я пытаюсь скомпилировать этот код, и я получаю ПРЕДУПРЕЖДЕНИЕ и ОШИБКУ. Я использую компилятор PIC-C. Я использую PIC24FJ256GA410. У меня есть светодиод на контакте G0, и у меня есть подтягивающий резистор на контакте G13. Почему я получаю эту ошибку?

Я ожидал, что этот цикл будет выполняться до тех пор, пока PIN 13 не будет низким (заменил подтягивающий резистор на резистор с посадкой).

Компиляция C:\Users\uslucas1\OneDrive - ABB\Documents\CCS C Projects\testing port на 14-Ноя-24 в 12:44
>>> Предупреждение 204 "C:\Users\uslucas1\OneDrive - ABB\Documents\CCS C Projects\testing port.c" Строка 11(1,1): Условие всегда ЛОЖНО   PORTG
*** Ошибка 12 "C:\Users\uslucas1\OneDrive - ABB\Documents\CCS C Projects\testing port.c" Строка 11(20,21): Неопределённый идентификатор
      1 Ошибок,  1 Предупреждений.
#include "24FJ256GA410.h"

#define PORTG_TRIS   set_tris_g(0xE008)         // Все контакты выходные, кроме G3, G13-15
выходы низкие

#define MVI_SELECT   (PORTG & 0x2000)           // Проверить, высок ли бит 13 порта PORTG

void main()
{
  PORTG_TRIS;  // Установить направление контактов PORTG

  while(MVI_SELECT)
  {
    output_high(PIN_G0);  // Установить PIN_G0 высокий
  }

}

Ответ или решение

Код на языке программирования C, использующий компилятор PIC-C для микроконтроллера PIC24FJ256GA410, столкнулся с предупреждением и ошибкой при компиляции. Рассмотрим подробнее причины, которые могут привести к предупреждению "Condition always FALSE" и ошибке "Undefined identifier".

Ошибка "Condition always FALSE"

Предупреждение "Condition always FALSE" связано с выражением MVI_SELECT, которое определено как (PORTG & 0x2000). В контексте данной программы это предполагает проверку 13-го бита на состояние HIGH. Тем не менее, если компилятор определяет, что этот бит не может быть установлен, он выдает предупреждение о том, что условие всегда будет ложным.

Причины возникновения:

  1. Неверные настройки порта: Убедитесь, что конфигурация порта G правильная и что 13-й бит (G13) действительно предназначен для чтения входного сигнала. В случае, если G13 настроен как выходной, данный бит никогда не будет HIGH, что приведет к возникновению предупреждения.

  2. Доступ к неопределенному идентификатору: В данном коде могло возникнуть также несоответствие с объектом PORTG, который может не быть доступен из-за отсутствия необходимого заголовочного файла или неправильной его конфигурации. Если компилятор не распознает PORTG, он не сможет интерпретировать операции с ним, что также может вызвать ошибку компиляции.

Ошибка "Undefined identifier"

Ошибка "Undefined identifier" указывает на то, что программа пытается использовать идентификатор, который не был определен в текущем контексте. В данном случае это касается использования PORTG или других методов, таких как output_high.

Возможные решения:

  1. Проверьте настройки пинов: Убедитесь, что все необходимые пины правильно сконфигурированы, особенно G0 и G13. Для этого необходимо устанавливать правильные направления для этих пинов в функции set_tris_g.

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

  3. Использование правильных функций: Если PORTG недоступен, проверьте, возможно ли использование других доступных переменных или функций, предоставляемых вашим компиляционным окружением.

Пример исправленного кода

#include "24FJ256GA410.h"

#define PORTG_TRIS   set_tris_g(0xE008)         // Настройка направления PORTG: все выходы, кроме G3, G13-15
#define MVI_SELECT   (PORTGbits.RG13)            // Проверка состояния бита 13 порта G

void main()
{
  PORTG_TRIS;  // Установка направления портов

  while(MVI_SELECT)  // Цикл выполняется, пока G13 высокий
  {
    output_high(PIN_G0);  // Установка PIN_G0 в HIGH
  }

}

Заключение

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

Оцените материал
Добавить комментарий

Капча загружается...