Простой вопрос, а ставит меня в тупик :)

Дим-мычъ
Offline
Зарегистрирован: 20.03.2021

Komandir пишет:

Можно создать файл(ы) plaform.local.txt (и boards.local.txt) и перекрыть опции оригинальных файлов.

Спасибо, буду разбираться

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

и я рисунком выше о том жеж глаголил )))

sadman41
Offline
Зарегистрирован: 19.10.2016

Вот это давит оптимизацию, будучи записанным первой строке в компилируемом юните:

#pragma GCC optimize ("O0")

Дим-мычъ
Offline
Зарегистрирован: 20.03.2021

sadman41 пишет:
Вот это давит оптимизацию, будучи записанным первой строке в компилируемом юните: #pragma GCC optimize ("O0")

Спасибо! Но , похоже не полностью отключает.С этой строчкой код увеличивается с 2052 байт до 2468 байт и, при этом код без volatile всё же не работает.(см. #45)

Если же, отключить в файле boards.txt ,то скетч увеличивается аж до 9480 байт(!) но при этом работает без volatile, хотя пишет варнинги, что оптимизатор отключен

Komandir
Komandir аватар
Offline
Зарегистрирован: 18.08.2018

Дим-мычъ

sadman41 пишет:
...в компилируемом юните...

Все остальные включения компилируются с -O3 из platform.txt.

Дим-мычъ
Offline
Зарегистрирован: 20.03.2021

Komandir пишет:

Дим-мычъ

sadman41 пишет:
...в компилируемом юните...

Все остальные включения компилируются с -O3 из platform.txt.

Спасибо за разъяснение

Я наверно не правильно понимаю слово "юнит".  Думал, что это весь скетч. Даже в Википедии смотрел))

В языках программирования Си и Си++ единица трансляции (англ. translation unit) — подаваемый на вход компилятора исходный текст (файл с расширением .c или .cpp) со всеми включёнными в него файлами

Возможно здесь имеется ввиду нечто другое, чего я не знаю...

Вообще числа в байтах, после компиляции, вернее их большая "разность"при разных режимах удручает. Придётся с этим разбираться, иначе покоя не будет)) Возможно, что-то не правильно делаю, будем думать

sadman41
Offline
Зарегистрирован: 19.10.2016

В .ino вы делаете include .h файлу. Т.е. действие распространяется только на него. Сопутствующий ему .c /.cpp файл компилируется самостоятельно, вне рамок работы с .ino

Т.е., по большому счёту, прагму нужно понатыкать везде.

Дим-мычъ
Offline
Зарегистрирован: 20.03.2021

sadman41 пишет:
В .ino вы делаете include .h файлу. Т.е. действие распространяется только на него. Сопутствующий ему .c /.cpp файл компилируется самостоятельно, вне рамок работы с .ino Т.е., по большому счёту, прагму нужно понатыкать везде.

Спасибо за разъяснения, буду разбираться с работой компилятора, раньше не об этом много не задумывался,

не осознавал, что происходит.

Если будут ещё вопросы, уже создам свою отдельную тему, т.к. ТС эти вопросы вижу не интересуют, а я и так влез не совсем к месту.

 

Delta213
Delta213 аватар
Offline
Зарегистрирован: 26.08.2022

Извините за совсем уж нубский вопрос, сам не нашел решения. Как в протеусе правильно подключить терминал для отладки? Подключаю к PD0 PD1 и прямо, и в перекрёст, не выводит ничего по сериал.принт.

Дим-мычъ
Offline
Зарегистрирован: 20.03.2021

Delta213 пишет:

Извините за совсем уж нубский вопрос, сам не нашел решения. Как в протеусе правильно подключить терминал для отладки? Подключаю к PD0 PD1 и прямо, и в перекрёст, не выводит ничего по сериал.принт.

 Настроить ещё терминал надо .  И частота процессора в Протеусе  должна соответствовать частоте в скетче

Delta213
Delta213 аватар
Offline
Зарегистрирован: 26.08.2022

Дим-мычъ пишет:

 Настроить ещё терминал надо .  И частота процессора в Протеусе  должна соответствовать частоте в скетче

Что-то у меня не настраивается, в протеусовский терминал не шлет ничего, а в ардуино иде шлет. Но сейчас я не об этом хочу спросить, с этим позже разберусь.

Вот есть разные способы вызвать энергосбережение на авр, у меня задача при включении по i2c записать во внешний девайс настройки и отвалиться в спячку. Делал на нано, использовал библу LowPower.h, строка перевода в спячку:

LowPower.powerDown(SLEEP_FOREVER, ADC_OFF, BOD_OFF); // уходим в спячку

Не знаю, мне проверить нечем, но вроде бы работает. Теперь переделал контроллер на MH-Tiny ATtiny88 Micro, и вот эта библа на нем не работает, ладно, поискал как еще можно в сон уходить, нашел вот такие варианты:

#include <avr/sleep.h>
set_sleep_mode(SLEEP_MODE_PWR_DOWN);
sleep_enable();
// или так, не знаю как правильней.
// sleep_mode();

//еще вариант
#include <avr/power.h>
power_all_disable();

С ними компилируется, заливается, но похоже в сон не уходит, пока из цикла выхожу по exit(0); но это как-то не правильно.

Delta213
Delta213 аватар
Offline
Зарегистрирован: 26.08.2022

Знатоки, помогите, дайте совет! Вот есть 4 девайса с одним адресом i2c, адрес не меняется, жестко запаян и не подобраться к ногам выбора. Надо во все четыре писать одно и то-же, изменять пару ячеек, как это правильно сделать? Можно конечно на каждый девайс поставить по контроллеру, можно как-то коммутировать и2с, а можно-ли просто запараллелить? Данные -то для всех одинаковы, в одни и те-же ячейки пишутся.

зы

И ответьте пожалуйста насчет глубокого засыпания, пост выше.

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

i2c - это выходы с открытым коллектором (стоком), так что заведомо ничего не сгорит, если подключить параллельно.

Поэтому - что мешает попробовать?

 

Delta213
Delta213 аватар
Offline
Зарегистрирован: 26.08.2022

andriano пишет:

i2c - это выходы с открытым коллектором (стоком), так что заведомо ничего не сгорит, если подключить параллельно.

Дело не в токах и напряжении, дело в том что шина двунаправленная, и если мастер делает запрос, то отвечать будут все, не пойдет параллелить. Вернее можно только SCL, а SDA надо коммутировать чем-то двунаправленным, типа сд4066, 4016, 74НС4051.

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

Delta213 пишет:

Дело не в токах и напряжении, дело в том что шина двунаправленная, и если мастер делает запрос, то отвечать будут все, не пойдет параллелить. Вернее можно только SCL, а SDA надо коммутировать чем-то двунаправленным, типа сд4066, 4016, 74НС4051.

Шина двунаправленная, нор читать с нее мы ничего не собираемся, только писать.

Но что-то там есть в случае, когда ведомому нужно подтормозить ведущего. 

Но, в любом случае, ничто не мешает попробовать именно в параллель.

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

andriano пишет:

Но, в любом случае, ничто не мешает попробовать именно в параллель.

и сдаётся мне это будет работать...