Arduino.h:195:0: warning: "PE" redefined

Voodoo Doll
Voodoo Doll аватар
Offline
Зарегистрирован: 18.09.2016

Перехожу с 1.0.5 на 1.8.1

Пока это единственная жалоба в журнале сборки; ещё было отсутствие установки build.board для некоторых из самостоятельно добавленных в boards.txt плат, если это платы на 8/168/328 - понятно что можно приписать там *.build.board=AVR_DUEMILANOVE; но что писать для Crumbuino128 на atmega128? Пока что среда автоматически подставляет значение AVR_CRUMBUINO128, значит ли оно что-то и зависит что-либо от этого, или же можно писать в этом параметре любую чушь, начинающуюся с AVR_?

Но вернёмся к предупреждению "PE переопределено".

\hardware\tools\avr\avr\include\avr\iom8.h:534 - дефайн PE=2

\hardware\arduino\avr\cores\arduino\Arduino.h:195 - дефайн PE=5

Два тупых вопроса:

1. Кому верить?

2. Какого хера?

Voodoo Doll
Voodoo Doll аватар
Offline
Зарегистрирован: 18.09.2016

Voodoo Doll пишет:
\hardware\tools\avr\avr\include\avr\iom8.h

Ессно, имя этого файла зависит от выбранного МК.

Клапауций 112
Клапауций 112 аватар
Offline
Зарегистрирован: 01.03.2017

это конфликт имён констант:

в iom8.h существует константа PE, где 2 - это флаг ошибки контроля четности регистра UCSRA.

в Arduino.h сущеструет константа PE, где 5 - это номер пина D5 Дуино порта PD5 контролера.

т.е. в одном месте PE - это параметр, а в другом - это номер пина.

*как наступить на грабли этого конфликта, я не анализировал.

 

Voodoo Doll
Voodoo Doll аватар
Offline
Зарегистрирован: 18.09.2016

Вот где мне щас все упоминания этого PE искать в последующих инклудах? Нельзя было PErr например назвать? Ну что за индусы, кто так пишет...

при сборке для не-mega8 проблема уходит.

Вопрос - можно ли это оставить как есть или чем-то чревато. Хз как проверить. Вычитать весь код в котором встречается фраза PE - нереально, она слишком короткая, соотв. кода слишком много. Понять за что этот код отвечает - тем более.

Блядь ну внатуре, ну что за ебни. Ну кто так пишет блеать? Зла сука не хватает.

Клапауций 112
Клапауций 112 аватар
Offline
Зарегистрирован: 01.03.2017

Voodoo Doll пишет:

Вопрос - можно ли это оставить как есть или чем-то чревато. Хз как проверить. Вычитать весь код в котором встречается фраза PE - нереально, она слишком короткая, соотв. кода слишком много. Понять за что этот код отвечает - тем более.

не паникуй - всё проще.

закоменти в iom8.h:534 - дефайн PE=2 и в Arduino.h:195 - дефайн PE=5

пробуй скомпиллить - оно тебе ругнётся на serial и PWM и что-то там ещё которому нужны пины номера пинов.

т.е. всё, чем это тебе грозит - у тебя может что-то не так пойти, если ты заюзаешь параметр PE сериала.

*лично я UART M8 <-> UART M16 подключал с дефолтными настройками - оно работает.

wdrakula
wdrakula аватар
Offline
Зарегистрирован: 15.03.2016

Блин! Ну это ж две разные константы, только буквы одинаковые. Та, что в Arduino.h это PORT E, а та, что в iom8.h это parity error, флаг при приеме по UART.

Для экосистемы Ардуино важно то, что в Arduino.h. Если тебе нужно на низком уровне с ком-портом работать, то переименуй PE в UPE, как это сделано в даташите. В дефайне в iom8.h и везде, где юзается в самих avr-glibc.

------------------

Ой! Заметил, что Кла уже ответил.... сорри.

Voodoo Doll
Voodoo Doll аватар
Offline
Зарегистрирован: 18.09.2016

wdrakula пишет:
и везде, где юзается в самих avr-glibc

Ключевое слово "где".

wdrakula
wdrakula аватар
Offline
Зарегистрирован: 15.03.2016

тебе Кла сказал - закомменть дефайн и компиль тебе сам укажет, чего ему теперь не хватает, все места, "где".

----------------------

Ты из Благовещенска ведь? Там все еще можно без визы в Хейхэ катаццо, и дешево пожрать у китайцев?

Voodoo Doll
Voodoo Doll аватар
Offline
Зарегистрирован: 18.09.2016

Дёшево пожрать точно можно, насчёт без визы не знаю. Не поверишь, но ни разу не довелось в Китае побывать :) Народ возит чото, говорят в среднем 4000 туда сюда.