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

 
 
 
Reply to this topicStart new topic
rtfcnf
сообщение Sep 23 2016, 12:05
Сообщение #1


Частый гость
**

Группа: Участник
Сообщений: 96
Регистрация: 27-06-08
Из: Москва
Пользователь №: 38 581



Добрый день.
Пишу в IAR под STM32F7 на HAL
Проблема в следующем, есть код в майн
Код
#define ADS131_1_PIN_CS_OFF HAL_GPIO_WritePin(GPIOA, GPIO_PIN_4, GPIO_PIN_SET)
#define ADS131_1_PIN_CS_ON HAL_GPIO_WritePin(GPIOA, GPIO_PIN_4, GPIO_PIN_RESET)
.
.
ADS131_1_Command(0X11);
ADS131_1_SetConfig();
.
.
void ADS131_1_Command(uint8_t vd)
{

  uint8_t data;
  ADS131_1_PIN_CS_ON;
  HAL_SPI_TransmitReceive(&hspi1, &vd, &data, sizeof(data), 0x1);
  ADS131_1_PIN_CS_OFF;    
}

Он работает и микросхема команду правильно воспринимает
Стоит мне перенести строки
#define ADS131_1_PIN_CS_OFF HAL_GPIO_WritePin(GPIOA, GPIO_PIN_4, GPIO_PIN_SET)
#define ADS131_1_PIN_CS_ON HAL_GPIO_WritePin(GPIOA, GPIO_PIN_4, GPIO_PIN_RESET)
в отдельный файл port_def.h
Код
#ifndef    __PORTS_H
#define __PORTS_H  
#define ADS131_1_PIN_CS_ON HAL_GPIO_WritePin(GPIOA, GPIO_PIN_4, GPIO_PIN_SET)
#define ADS131_1_PIN_CS_OFF HAL_GPIO_WritePin(GPIOA, GPIO_PIN_4, GPIO_PIN_RESET)
#endif

Код компилируется, проект собирается, но Код перестаёт работать. Верней работает, но микросхема на него не реагирует, хотя в ассемблере эта функция выглядит также.
Не пойму что не так? Заранее спасибо.

Go to the top of the page
 
+Quote Post
AlexandrY
сообщение Sep 23 2016, 12:22
Сообщение #2


Ally
******

Группа: Модераторы
Сообщений: 6 232
Регистрация: 19-01-05
Пользователь №: 2 050



Цитата(rtfcnf @ Sep 23 2016, 15:05) *
Не пойму что не так? Заранее спасибо.


Забыли подключить port_def.h в тот файл где используете порты.

Go to the top of the page
 
+Quote Post
rtfcnf
сообщение Sep 23 2016, 12:28
Сообщение #3


Частый гость
**

Группа: Участник
Сообщений: 96
Регистрация: 27-06-08
Из: Москва
Пользователь №: 38 581



Извините, что в примере не привел, он подключен.
Go to the top of the page
 
+Quote Post
k155la3
сообщение Sep 23 2016, 12:31
Сообщение #4


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

Группа: Свой
Сообщений: 1 123
Регистрация: 8-03-09
Из: Днепр
Пользователь №: 45 848



а какая необходимость обзывать переменную
#ifndef __PORTS_H
с подчерками впереди ? или и файл так назван ?

Варинингов тоже нет ?

Для отлова измените содержимое макроопределений на свое, например __no_operation() или любое другое.

Похоже что файл опеределений макросов не включается по #ifndef
Проверьте это.


Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Sep 23 2016, 12:46
Сообщение #5


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



Чудес не бывает. Сделайте hex обоих вариантов. Сравните. От переноса места определния текстовой подстановки (макроса) результирующий код меняться не должен - макросы разворачиваются еще до начала компиляции.


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post
rtfcnf
сообщение Sep 23 2016, 13:04
Сообщение #6


Частый гость
**

Группа: Участник
Сообщений: 96
Регистрация: 27-06-08
Из: Москва
Пользователь №: 38 581



Цитата(k155la3 @ Sep 23 2016, 15:31) *
а какая необходимость обзывать переменную
#ifndef __PORTS_H
с подчерками впереди ? или и файл так назван ?

Привычка
Цитата(k155la3 @ Sep 23 2016, 15:31) *
Варинингов тоже нет ?

Нет, нету.

Цитата(k155la3 @ Sep 23 2016, 15:31) *
Похоже что файл опеределений макросов не включается по #ifndef
Проверьте это.

Первым делом проверил.

Цитата(Сергей Борщ @ Sep 23 2016, 15:46) *
Чудес не бывает. Сделайте hex обоих вариантов. Сравните. От переноса места определния текстовой подстановки (макроса) результирующий код меняться не должен - макросы разворачиваются еще до начала компиляции.

Упс, а hex разные.


Сообщение отредактировал rtfcnf - Sep 23 2016, 12:55
Go to the top of the page
 
+Quote Post
ViKo
сообщение Sep 23 2016, 13:57
Сообщение #7


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

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



Так у вас SET и RESET перепутаны. sm.gif
Go to the top of the page
 
+Quote Post
k155la3
сообщение Sep 23 2016, 15:22
Сообщение #8


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

Группа: Свой
Сообщений: 1 123
Регистрация: 8-03-09
Из: Днепр
Пользователь №: 45 848



Цитата(rtfcnf @ Sep 23 2016, 16:04) *
. . . .
Упс, а hex разные.


Чтоб не лезть в hex, можете диффером сравнить lst или asm или ... файлы из проектов "где хорошо" и "где плохо".

Проверьте очередность по h-файлам - это иногда имеет значение.

HAL макросы -функции работают на "базовой" адресации для периферии, которая процессоро-зависимая.
Если за "базу" берется неправильный для данного процессора адрес,
синтаксической ошибки не будет. Но и работать (правильно) тоже.


Go to the top of the page
 
+Quote Post
rtfcnf
сообщение Sep 24 2016, 05:24
Сообщение #9


Частый гость
**

Группа: Участник
Сообщений: 96
Регистрация: 27-06-08
Из: Москва
Пользователь №: 38 581



Цитата(ViKo @ Sep 23 2016, 16:57) *
Так у вас SET и RESET перепутаны. sm.gif

Собственное соглашение, ON - активный уровень, для чипа к которому подключен пин.
k155la3, спасибо, проект и плата на работе так что до понедельника попробовать не смогу.

Сообщение отредактировал rtfcnf - Sep 24 2016, 05:26
Go to the top of the page
 
+Quote Post
ViKo
сообщение Sep 24 2016, 06:14
Сообщение #10


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

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



Цитата(rtfcnf @ Sep 24 2016, 08:24) *
Собственное соглашение, ON - активный уровень, для чипа к которому подключен пин.

Сравните по буквам ваши соглашения в дефайнах внутри исходника и во внешнем файле.
Go to the top of the page
 
+Quote Post
k155la3
сообщение Sep 24 2016, 08:17
Сообщение #11


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

Группа: Свой
Сообщений: 1 123
Регистрация: 8-03-09
Из: Днепр
Пользователь №: 45 848



Цитата(ViKo @ Sep 24 2016, 09:14) *
Сравните по буквам ваши соглашения в дефайнах внутри исходника и во внешнем файле.


Виндузная утилита fc.exe - в текстовом и бинарном режиме или диффер.

Go to the top of the page
 
+Quote Post
alag57
сообщение Sep 24 2016, 08:29
Сообщение #12


Частый гость
**

Группа: Участник
Сообщений: 130
Регистрация: 26-06-06
Из: Березовский
Пользователь №: 18 355



Цитата(ViKo @ Sep 24 2016, 11:14) *
Сравните по буквам ваши соглашения в дефайнах внутри исходника и во внешнем файле.

ТС не видит.
Цитата
main.c
#define ADS131_1_PIN_CS_OFF HAL_GPIO_WritePin(GPIOA, GPIO_PIN_4, GPIO_PIN_SET)
port_def.h
#define ADS131_1_PIN_CS_ON HAL_GPIO_WritePin(GPIOA, GPIO_PIN_4, GPIO_PIN_SET)
Go to the top of the page
 
+Quote Post
k155la3
сообщение Sep 24 2016, 12:36
Сообщение #13


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

Группа: Свой
Сообщений: 1 123
Регистрация: 8-03-09
Из: Днепр
Пользователь №: 45 848



Цитата(alag57 @ Sep 24 2016, 11:29) *
ТС не видит.


респект sm.gif

ЭТО наверное ОНО и ЕСТЬ исм !
Надо пользоваться осцилографом для отладки и даже поиска очепяток.
Go to the top of the page
 
+Quote Post
rtfcnf
сообщение Sep 25 2016, 08:20
Сообщение #14


Частый гость
**

Группа: Участник
Сообщений: 96
Регистрация: 27-06-08
Из: Москва
Пользователь №: 38 581



Большое спасибо, всем.
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 27th June 2025 - 22:00
Рейтинг@Mail.ru


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