Разработки ecoins

Библиотеки для разных контроллеров

tolochko
Сержант
Сообщения: 247
Зарегистрирован: 30.11.2016{, 16:58}
Репутация: 7
Откуда: Днепропетровск

Разработки ecoins

#921

Сообщение tolochko » 04.01.2021{, 21:20}

Спасибо
Я как то по другому думал

vovka1973
Майор
Сообщения: 1060
Зарегистрирован: 14.02.2016{, 14:16}
Репутация: 42
Откуда: kazahstan

Разработки ecoins

#922

Сообщение vovka1973 » 04.01.2021{, 21:25}

tolochko писал(а):
04.01.2021{, 21:06}
А в Меге A0-A5 это какие цифры и где это прописано
так этот можно в flprog смотреть
Изображение

ecoins
Полковник
Сообщения: 2932
Зарегистрирован: 12.02.2016{, 11:40}
Репутация: 453
Откуда: Шатура
Имя: Энвер

Разработки ecoins

#923

Сообщение ecoins » 05.01.2021{, 00:27}

Может кому-то будет полезно.
Несмотря на то, что много занимаемся разными контроллерами, вопрос идентификации контроллера в пользовательской программе был не вполне ясен.
Наконец удалось разобраться к чему привязываться.
В Arduino iDE каждая серия контроллеров ( AVR,DUE,ESP8266,ESP32,STM32F) сопровождаются файлом boards.txt&
В нем каждый контроллер описывается примерно следующим образом:
В них нас интересует пока три строки:
для UNO:
uno.name=Arduino Uno
uno.build.board=AVR_UNO
uno.build.variant=standard

для BLuePill F103C8
GenF1.menu.pnum.BLUEPILL_F103C8=BluePill F103C8
GenF1.menu.pnum.BLUEPILL_F103C8.build.board=BLUEPILL_F103C8
GenF1.menu.pnum.BLUEPILL_F103C8.build.variant=PILL_F103XX
и т.д.
Первая строчка - это то, что мы выбираем при загрузке в Arduino IDE.
Вторая строчка - это идентификатор платы.
К нему добавляется строка ARDUINO_ и получается макрос, по которому можно идентифицировать плату.
Например:
#if defined(ARDUINO_AVR_UNO)
Serial.begin(115200); Serial.println(F("Это плата Arduino UNO"));
#endif

#if defined(ARDUINO_BLUEPILL_F103C8)
Serial.begin(115200); Serial.println(F("Это плата Голубая таблетка STM32F103C8"));
#endif
------------
Составил таблицу, интересующих контроллеров, которые мы включаем в свои библиотеки:
СпойлерПоказать
Идентификаторы плат.jpg
Идентификаторы плат_2.jpg
Идентификаторы плат_3.jpg
Идентификаторы плат_4.jpg
Идентификаторы плат.pdf
(73.55 КБ) 102 скачивания
Набросал скетч для проверки правильности идентификаторов:
СпойлерПоказать
//------------------------------------------------------- // Тест идентификация типа контроллера //------------------------------------------------------- uint8_t pinLed=PA6; //LED_BUILTIN; bool blink; void setup() { Serial.begin(115200); //---Ожидание готовности Serial с мерцанием светодиода while (!Serial) {delay(100);} //------------------------------------------------------------------------- Serial.println(String(F("\n\n\nBegin ***04.01.21 Test definition mode board***"))); //========================================================================= // Контроллеры AVR //========================================================================= //------------------------------------------------------------------------- #if defined(ARDUINO_AVR_UNO) pinLed=LED_BUILTIN; Serial.println(String(F("Board=AVR_UNO->name:Arduino UNO; variant=standart"))); #endif //------------------------------------------------------------------------- #if defined(ARDUINO_AVR_NANO) pinLed=LED_BUILTIN; Serial.println(String(F("Board=AVR_NANO->name:Arduino Nano; variant=eightanaloginputs"))); #endif //------------------------------------------------------------------------- #if defined(ARDUINO_AVR_PRO) Serial.println(String(F("Board=AVR_PRO->name:Arduino Pro or Pro Mini; variant=eightanaloginputs"))); #endif //------------------------------------------------------------------------- #if defined(ARDUINO_AVR_MINI) pinLed=LED_BUILTIN; Serial.println(String(F("Board=AVR_MINI->name:Arduino Mini; variant=eightanaloginputs"))); #endif //------------------------------------------------------------------------- #if defined(ARDUINO_AVR_MEGA2560) Serial.println(String(F("Board=AVR_MEGA2560->name:Arduino Mega2560; variant=mega"))); #endif //------------------------------------------------------------------------- #if defined(ARDUINO_AVR_ADK) pinLed=LED_BUILTIN; Serial.println(String(F("Board=AVR_ADK->name:Arduino ADK; variant=mega"))); #endif //========================================================================= // Контроллеры DUE //========================================================================= //------------------------------------------------------------------------- #if defined(ARDUINO_SAM_DUE) pinLed=LED_BUILTIN; Serial.println(String(F("Board=SAM_DUE->name:Arduino Due(Programming Port); variant=arduino_due_x"))); #endif //------------------------------------------------------------------------- #if defined(ARDUINO_SAM_DUE) pinLed=LED_BUILTIN; Serial.println(String(F("Board=SAM_DUE->name:Arduino Due(Native USB Port); variant=arduino_due_x"))); #endif //========================================================================= // Контроллеры ESP8266 //========================================================================= //------------------------------------------------------------------------- #if defined(ARDUINO_ESP8266_GENERIC) pinLed=LED_BUILTIN; Serial.println(String(F("Board=ESP8266_GENERIC->name:Generic ESP8266 Module; variant=esp8286"))); #endif //------------------------------------------------------------------------- #if defined(ARDUINO_ESP8266_ESP01) Serial.println(String(F("Board=ESP8285_ESP01->name:Generic ESP8285 Module; variant=esp8285"))); #endif //------------------------------------------------------------------------- #if defined(ARDUINO_ESP8266_NODEMCU) pinLed=LED_BUILTIN; Serial.println(String(F("Board=ESP8266_NODEMCU->name:NodeMCU 0.9 or 1.0 (ESP-12 Module); variant=nodemcu"))); #endif //------------------------------------------------------------------------- #if defined(ARDUINO_ESP8266_WEMOS_D1MINI) Serial.println(String(F("Board=ESP8266_WEMOS_D1MINI->name:LOLIN(WEMOS)D1 R2 & nini; variant=d1_mini"))); #endif //------------------------------------------------------------------------- #if defined(ARDUINO_ESP8266_WEMOS_D1MINIPRO) pinLed=LED_BUILTIN; Serial.println(String(F("Board=ESP8266_WEMOS_D1MINIPRO->name:LOLIN(WEMOS)D1 R2 & nini; variant=d1_mini"))); #endif //------------------------------------------------------------------------- #if defined(ARDUINO_ESP8266_WEMOS_D1MINILITE) Serial.println(String(F("Board=ESP8266_WEMOS_D1MINILITE->name:LOLIN(WEMOS)D1 R2 & nini; variant=d1_mini"))); #endif //------------------------------------------------------------------------- #if defined(ARDUINO_ESP8266_WEMOS_D1R1) pinLed=LED_BUILTIN; Serial.println(String(F("Board=ESP8266_WEMOS_D1R1->name:LOLIN(WEMOS)D1R1; variant=d1"))); #endif //========================================================================= // Контроллеры ESP32 //========================================================================= //------------------------------------------------------------------------- #if defined(ARDUINO_ESP32_DEV) pinLed=2; Serial.println(String(F("Board=ESP32_DEV->name:ESP32 Dev Module or ESP32 Wrover Module; variant=esp32"))); #endif //------------------------------------------------------------------------- #if defined(ARDUINO_ESP32_TTGO_Lora32_V1) pinLed=2; Serial.println(String(F("Board=ESP32_TTGO_Lora32_V1->name:TTGO Lora32-OLED V1; variant=ttgo-lor32_v1"))); #endif //------------------------------------------------------------------------- #if defined(ARDUINO_ESP32_TTGO_T1) pinLed=2; Serial.println(String(F("Board=ESP32_TTGO_T1->name:TTGO T1; variant=ttgo-t1"))); #endif //------------------------------------------------------------------------- #if defined(ARDUINO_NANO32) pinLed=2; Serial.println(String(F("Board=NANO32->name:Nano32; variant=nano32"))); #endif //------------------------------------------------------------------------- #if defined(ARDUINO_LOLIN_D32) Serial.println(String(F("Board=LOLIN_D32->name:LOLIN D32; variant=d32"))); #endif //------------------------------------------------------------------------- #if defined(ARDUINO_LOLIN_D32_PRO) pinLed=2; Serial.println(String(F("Board=LOLIN_D32_PRO->name:LOLIN D32 PRO; variant=d32_pro"))); #endif //------------------------------------------------------------------------- #if defined(ARDUINO_LOLIN32) pinLed=2; Serial.println(String(F("Board=LOLIN32->name:WEMOS LOLIN32; variant=lolin32"))); #endif //------------------------------------------------------------------------- #if defined(ARDUINO_Node32s) pinLed=2; Serial.println(String(F("Board=Node32s->name:Node32s; variant=node32s"))); #endif //------------------------------------------------------------------------- #if defined(ARDUINO_NodeMCU_32S) Serial.println(String(F("Board=NodeMCU_32S->name:NodeMCU-32S; variant=node-32S"))); #endif //------------------------------------------------------------------------- #if defined(ARDUINO_M5Stack_Core_ESP32) pinLed=2; Serial.println(String(F("Board=M5Stack_Core_ESP32->name:M5Stack_Core_ESP32; variant=m5stack_core_esp32"))); #endif //------------------------------------------------------------------------- //#if defined(ARDUINO_D_duino_32) //--Не работает //Serial.println(String(F("Board=D-duino-32->name:D-duino-32; variant=d-duino-32"))); //#endif //------------------------------------------------------------------------- #if defined(ARDUINO_D1_MINI32) pinLed=2; Serial.println(String(F("Board=D1_MIMI32->name:WEMOS D1 MINI ESP32; variant=d1_mini32"))); #endif //========================================================================= // Контроллеры STM32-master STM32F1 //========================================================================= //------------------------------------------------------------------------- #if defined(ARDUINO_MAPLE_MINI) pinLed=LED_BUILTIN; Serial.println(String(F("STM32F1-master: Board=MAPLE_MINI->name:Maple Mini; variant=maple_mini"))); #endif //------------------------------------------------------------------------- #if defined(ARDUINO_MAPLE_REV3) Serial.println(String(F("STM32F1-master: Board=MAPLE_REV3->name:Maple(Rev3); variant=maple"))); #endif //------------------------------------------------------------------------- #if defined(ARDUINO_MAPLE_REV6) pinLed=LED_BUILTIN; Serial.println(String(F("STM32F1-master: Board=MAPLE_REV6->name:Maple(Rev6); variant=maple_ret6"))); #endif //------------------------------------------------------------------------- #if defined(ARDUINO_GENERIC_STM32F103C) pinLed=LED_BUILTIN; Serial.println(String(F("STM32F1-master: Board=GENERIC_STM32F103C->name:Generic STM32F103C series; variant=generic_stm32f103C"))); #endif //========================================================================= // Контроллеры STM32-master STM32F4 //========================================================================= #if defined(ARDUINO_discovery_f4) pinLed=LED_BUILTIN; Serial.println(String(F("STM32F4-master: Board=discovery_f4->name:STM32 Discovery F407; variant=discovery_f407"))); #endif //------------------------------------------------------------------------- #if defined(ARDUINO_blackpill_f401) pinLed=LED_BUILTIN; Serial.println(String(F("STM32F4-master: Board=blackpill_f401->name:Blackpill STM32F401CCU6; variant=blackpill_f401"))); #endif //------------------------------------------------------------------------- #if defined(ARDUINO_disco_F411E) pinLed=LED_BUILTIN; Serial.println(String(F("STM32F4-master: Board=disco_F411E->name:STM32 Discovery F411E; variant=disco_f411"))); #endif //------------------------------------------------------------------------- #if defined(ARDUINO_generic_f407v) pinLed=LED_BUILTIN; Serial.println(String(F("STM32F4-master: Board=generic_f407v->name:Generic STM32F407V series; variant=generic_f407v"))); #endif //------------------------------------------------------------------------- #if defined(ARDUINO_generic_f407v_mini) pinLed=LED_BUILTIN; Serial.println(String(F("STM32F4-master: Board=generic_f407+nimi->name:Generic STM32F407V mini series; variant=generic_f407v"))); #endif //------------------------------------------------------------------------- #if defined(ARDUINO_arch_max) pinLed=LED_BUILTIN; Serial.println(String(F("STM32F4-master: Board=arch_max->name:Seeed Arch max; variant=arch_max"))); #endif //------------------------------------------------------------------------- #if defined(_BOARD_GENERIC_F407V_H_) pinLed=LED_BUILTIN; Serial.println(String(F("STM32F4-master: Board=_BOARD_GENERIC_F407V_H_->name:Generic STM32F407V series; variant=generic_f407v"))); #endif //==================================================================================================== //========================================================================= // Контроллеры STM32duino STM32F1 //========================================================================= #if defined(ARDUINO_BLUEPILL_F103C6) pinLed=LED_BUILTIN; Serial.println(String(F("STM32duino: Board=BLUEPILL_F103C6->name:BluePill F103C6; variant=PILL_F103XX"))); #endif //------------------------------------------------------------------------- #if defined(ARDUINO_BLUEPILL_F103C8) pinLed=LED_BUILTIN; Serial.println(String(F("STM32duino: Board=BLUEPILL_F103C8->name:BluePill F103C8; variant=PILL_F103XX"))); #endif //------------------------------------------------------------------------- #if defined(ARDUINO_BLUEPILL_F103CB) pinLed=LED_BUILTIN; Serial.println(String(F("STM32duino: Board=BLUEPILL_F103CB->name:BluePill F103CB(or C8 with 129k); variant=PILL_F103XX"))); #endif //------------------------------------------------------------------------- #if defined(ARDUINO_BLACKPIIL_F103C8) pinLed=LED_BUILTIN; Serial.println(String(F("STM32duino: Board=BLACKPILL_F103C8->name:BlackPill F103C8; variant=PILL_F103XX"))); #endif //------------------------------------------------------------------------- #if defined(ARDUINO_BLACKPILL_F103CB) pinLed=LED_BUILTIN; Serial.println(String(F("STM32duino: Board=BLACKPILL_F103CB->name:BlackPill F103CB(or C8 with 129k); variant=PILL_F103XX"))); #endif //------------------------------------------------------------------------- #if defined(ARDUINO_GENERIC_F103C4) pinLed=LED_BUILTIN; Serial.println(String(F("STM32duino: Board=GENERIC_F103C4->name:Generic F103C4; variant=Generic_F103Rx"))); #endif //------------------------------------------------------------------------- #if defined(ARDUINO_GENERIC_F103C6) pinLed=LED_BUILTIN; Serial.println(String(F("STM32duino: Board=GENERIC_F103C6->name:Generic F103C6; variant=Generic_F103Rx"))); #endif //------------------------------------------------------------------------- #if defined(ARDUINO_GENERIC_F103C8) pinLed=LED_BUILTIN; Serial.println(String(F("STM32duino: Board=GENERIC_F103C8->name:Generic F103C8; variant=Generic_F103Rx"))); #endif[attachment=2]Идентификаторы плат_2.jpg
//-------------------------------------------------------------------------
#if defined(ARDUINO_GENERIC_F103RE)
pinLed=LED_BUILTIN;
Serial.println(String(F("STM32duino: Board=GENERIC_F103C4->name:Generic F103C4; variant=Generic_F103Rx")));
#endif
//-------------------------------------------------------------------------
#if defined(ARDUINO_GENERIC_F103TE)
pinLed=LED_BUILTIN;
Serial.println(String(F("STM32duino: Board=GENERIC_F103TE->name:Generic F103TE; variant=Generic_F103Tx")));
#endif
//-------------------------------------------------------------------------
#if defined(ARDUINO_GENERIC_F103VE)
pinLed=LED_BUILTIN;
Serial.println(String(F("STM32duino: Board=GENERIC_F103VE->name:Generic F103VE; variant=Generic_F103Vx")));
#endif
//-------------------------------------------------------------------------
#if defined(ARDUINO_GENERIC_F103ZE)
pinLed=LED_BUILTIN;
Serial.println(String(F("STM32duino: Board=GENERIC_F103VE->name:Generic F103ZE; variant=Generic_F103Zx")));
#endif
//-------------------------------------------------------------------------
#if defined(ARDUINO_MAPLEMINI_F103CB)
pinLed=LED_BUILTIN;
Serial.println(String(F("STM32duino: Board=MAPLEMINI_F103CB->name:Maple Mini F103CB; variant=MAPLEMINI_F103CB")));
#endif


//========================================================================
//========================================================================
Serial.println(String(F(" End ***Test definition mode board*** pinLed=")) +String(pinLed));
pinMode(pinLed, OUTPUT);
}
//========================================================================
void loop() {
blink=!blink; digitalWrite(pinLed,blink); delay(250);

}
[/attachment]
-----

Сейчас будем дорабатывать свои библиотеки.
Возможно для STM32F1 удастся заложить возможность использования любого ядра Clark и STM32duino.
Первое компилируется и грузится быстрее, можно это делать через USB,
второе и содержит много новых контроллеров, можно работать с регистрами контроллера через библиотеку HAL,
но компилируется долго, загрузка в основном через STLink, через USB можно, но не очень удобно (пока проще не получается).
Вложения
Test_definition_mode_board_v_02_040121.ino
(14.34 КБ) 41 скачивание

o615ye161
Сержант
Сообщения: 198
Зарегистрирован: 19.12.2019{, 14:47}
Репутация: 3
Имя: Сергей

Разработки ecoins

#924

Сообщение o615ye161 » 06.01.2021{, 13:17}

СпойлерПоказать
Arduino: 1.8.13 (Windows 7), Плата:"NodeMCU 0.9 (ESP-12 Module), 80 MHz, Flash, Disabled (new can abort), All SSL ciphers (most compatible), 4MB (FS:none OTA:~1019KB), v2 Lower Memory, Disabled, None, Only Sketch, 115200"

d:/flprog/flprog7.2.2/idev6/portable/packages/esp8266/tools/xtensa-lx106-elf-gcc/2.5.0-4-b40a506/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/bin/ld.exe: sketch\pr2.ino.cpp.o:(.text._Z14_valueUpEventsh+0x24): undefined reference to `makeWord(unsigned short)'

d:/flprog/flprog7.2.2/idev6/portable/packages/esp8266/tools/xtensa-lx106-elf-gcc/2.5.0-4-b40a506/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/bin/ld.exe: sketch\pr2.ino.cpp.o: in function `_valueUpEvents(unsigned char)':

C:\Users\Android\AppData\Local\Temp\flprog\pr2/pr2.ino:898: undefined reference to `makeWord(unsigned short)'

d:/flprog/flprog7.2.2/idev6/portable/packages/esp8266/tools/xtensa-lx106-elf-gcc/2.5.0-4-b40a506/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/bin/ld.exe: C:\Users\Android\AppData\Local\Temp\flprog\pr2/pr2.ino:897: undefined reference to `makeWord(unsigned short)'

d:/flprog/flprog7.2.2/idev6/portable/packages/esp8266/tools/xtensa-lx106-elf-gcc/2.5.0-4-b40a506/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/bin/ld.exe: sketch\pr2.ino.cpp.o: in function `_valueDownEvents(unsigned char)':

C:\Users\Android\AppData\Local\Temp\flprog\pr2/pr2.ino:912: undefined reference to `makeWord(unsigned short)'

d:/flprog/flprog7.2.2/idev6/portable/packages/esp8266/tools/xtensa-lx106-elf-gcc/2.5.0-4-b40a506/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/bin/ld.exe: C:\Users\Android\AppData\Local\Temp\flprog\pr2/pr2.ino:913: undefined reference to `makeWord(unsigned short)'

collect2.exe: error: ld returned 1 exit status

Несколько библиотек найдено для "OneWire.h"

Используется: d:\Flprog\Flprog7.2.2\ideV6\portable\sketchbook\libraries\OneWire

Не используется: d:\Flprog\Flprog7.2.2\ideV6\libraries\RT_50_HW_OneWire-master_PaulStoffregen

Не используется: d:\Flprog\Flprog7.2.2\ideV6\libraries\OneWire

Несколько библиотек найдено для "RT_HW_BASE.h"

Используется: d:\Flprog\Flprog7.2.2\ideV6\libraries\RT_00_HW_BASE_v2.5

Не используется: d:\Flprog\Flprog7.2.2\ideV6\libraries\RT_00_HW_BASE_v3.15

exit status 1

Ошибка компиляции для платы NodeMCU 0.9 (ESP-12 Module).



Этот отчёт будет иметь больше информации с
включенной опцией Файл -> Настройки ->
"Показать подробный вывод во время компиляции"
Здравствуйте, ecoins помогите разобраться в ваших библиотеках какие нужно использовать а какие нет, что нужно удалить и как будет все работать, ваши библиотеки совместимы?
СпойлерПоказать
Arduino: 1.8.13 (Windows 7), Плата:"NodeMCU 0.9 (ESP-12 Module), 80 MHz, Flash, Disabled (new can abort), All SSL ciphers (most compatible), 4MB (FS:none OTA:~1019KB), v2 Lower Memory, Disabled, None, Only Sketch, 115200"

pr4:108:9: error: no matching function for call to 'OneWire::OneWire()'

OneWire ds_210620905_1; //--Создание объекта для ds1820

^

C:\Users\Android\AppData\Local\Temp\flprog\pr4\pr4.ino:108:9: note: candidates are:

In file included from C:\Users\Android\AppData\Local\Temp\flprog\pr4\pr4.ino:12:0:

d:\Flprog\Flprog7.2.2\ideV6\libraries\OneWire/OneWire.h:274:5: note: OneWire::OneWire(uint8_t)

OneWire( uint8_t pin);

^

d:\Flprog\Flprog7.2.2\ideV6\libraries\OneWire/OneWire.h:274:5: note: candidate expects 1 argument, 0 provided

d:\Flprog\Flprog7.2.2\ideV6\libraries\OneWire/OneWire.h:259:7: note: constexpr OneWire::OneWire(const OneWire&)

class OneWire

^

d:\Flprog\Flprog7.2.2\ideV6\libraries\OneWire/OneWire.h:259:7: note: candidate expects 1 argument, 0 provided

d:\Flprog\Flprog7.2.2\ideV6\libraries\OneWire/OneWire.h:259:7: note: constexpr OneWire::OneWire(OneWire&&)

d:\Flprog\Flprog7.2.2\ideV6\libraries\OneWire/OneWire.h:259:7: note: candidate expects 1 argument, 0 provided

C:\Users\Android\AppData\Local\Temp\flprog\pr4\pr4.ino: In function 'void meter_210620905_1()':

pr4:991:162: error: 'class OneWire' has no member named 'begin'

if(step_210620905_1==0) {if((int8_t)pin_210620905_1<0) {return;} period_210620905_1=1000; if(period_210620905_1<1000) {period_210620905_1=1000;} ds_210620905_1.begin(pin_210620905_1); T_210620905_1=-0.1; step_210620905_1++;}

^

Несколько библиотек найдено для "OneWire.h"

Используется: d:\Flprog\Flprog7.2.2\ideV6\libraries\OneWire

Не используется: d:\Flprog\Flprog7.2.2\ideV6\libraries\RT_50_HW_OneWire-master_PaulStoffregen

Несколько библиотек найдено для "RT_HW_BASE.h"

Используется: d:\Flprog\Flprog7.2.2\ideV6\libraries\RT_00_HW_BASE_v2.2

Не используется: d:\Flprog\Flprog7.2.2\ideV6\libraries\RT_00_HW_BASE_v2.5

Не используется: d:\Flprog\Flprog7.2.2\ideV6\libraries\RT_00_HW_BASE_v3.15

exit status 1

no matching function for call to 'OneWire::OneWire()'



Этот отчёт будет иметь больше информации с
включенной опцией Файл -> Настройки ->
"Показать подробный вывод во время компиляции"
Отправлено спустя 30 минут 46 секунд:
СпойлерПоказать
Arduino: 1.8.13 (Windows 7), Плата:"NodeMCU 0.9 (ESP-12 Module), 80 MHz, Flash, Disabled (new can abort), All SSL ciphers (most compatible), 4MB (FS:none OTA:~1019KB), v2 Lower Memory, Disabled, None, Only Sketch, 115200"

d:/flprog/flprog7.2.2/idev6/portable/packages/esp8266/tools/xtensa-lx106-elf-gcc/2.5.0-4-b40a506/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/bin/ld.exe: sketch\pr8.ino.cpp.o:(.text._Z14_valueUpEventsh+0x24): undefined reference to `makeWord(unsigned short)'

d:/flprog/flprog7.2.2/idev6/portable/packages/esp8266/tools/xtensa-lx106-elf-gcc/2.5.0-4-b40a506/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/bin/ld.exe: sketch\pr8.ino.cpp.o: in function `_valueUpEvents(unsigned char)':

C:\Users\Android\AppData\Local\Temp\flprog\pr8/pr8.ino:898: undefined reference to `makeWord(unsigned short)'

d:/flprog/flprog7.2.2/idev6/portable/packages/esp8266/tools/xtensa-lx106-elf-gcc/2.5.0-4-b40a506/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/bin/ld.exe: C:\Users\Android\AppData\Local\Temp\flprog\pr8/pr8.ino:897: undefined reference to `makeWord(unsigned short)'

d:/flprog/flprog7.2.2/idev6/portable/packages/esp8266/tools/xtensa-lx106-elf-gcc/2.5.0-4-b40a506/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/bin/ld.exe: sketch\pr8.ino.cpp.o: in function `_valueDownEvents(unsigned char)':

C:\Users\Android\AppData\Local\Temp\flprog\pr8/pr8.ino:912: undefined reference to `makeWord(unsigned short)'

d:/flprog/flprog7.2.2/idev6/portable/packages/esp8266/tools/xtensa-lx106-elf-gcc/2.5.0-4-b40a506/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/bin/ld.exe: C:\Users\Android\AppData\Local\Temp\flprog\pr8/pr8.ino:913: undefined reference to `makeWord(unsigned short)'

collect2.exe: error: ld returned 1 exit status

exit status 1

Ошибка компиляции для платы NodeMCU 0.9 (ESP-12 Module).



Этот отчёт будет иметь больше информации с
включенной опцией Файл -> Настройки ->
"Показать подробный вывод во время компиляции"
Удалил папки из libraries

Отправлено спустя 5 часов 14 минут 14 секунд:
СпойлерПоказать
Arduino: 1.8.13 (Windows 7), Плата:"NodeMCU 0.9 (ESP-12 Module), 80 MHz, Flash, Disabled (new can abort), All SSL ciphers (most compatible), 4MB (FS:none OTA:~1019KB), v2 Lower Memory, Disabled, None, Only Sketch, 115200"

d:/flprog/flp7.3.0/idev6/portable/packages/esp8266/tools/xtensa-lx106-elf-gcc/2.5.0-4-b40a506/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/bin/ld.exe: sketch\pr3.ino.cpp.o:(.text._Z14_valueUpEventsh+0x1c): undefined reference to `makeWord(unsigned short)'

d:/flprog/flp7.3.0/idev6/portable/packages/esp8266/tools/xtensa-lx106-elf-gcc/2.5.0-4-b40a506/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/bin/ld.exe: sketch\pr3.ino.cpp.o: in function `_valueUpEvents(unsigned char)':

C:\Users\Android\AppData\Local\Temp\flprog\pr3/pr3.ino:879: undefined reference to `makeWord(unsigned short)'

d:/flprog/flp7.3.0/idev6/portable/packages/esp8266/tools/xtensa-lx106-elf-gcc/2.5.0-4-b40a506/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/bin/ld.exe: C:\Users\Android\AppData\Local\Temp\flprog\pr3/pr3.ino:878: undefined reference to `makeWord(unsigned short)'

d:/flprog/flp7.3.0/idev6/portable/packages/esp8266/tools/xtensa-lx106-elf-gcc/2.5.0-4-b40a506/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/bin/ld.exe: sketch\pr3.ino.cpp.o: in function `_valueDownEvents(unsigned char)':

C:\Users\Android\AppData\Local\Temp\flprog\pr3/pr3.ino:893: undefined reference to `makeWord(unsigned short)'

d:/flprog/flp7.3.0/idev6/portable/packages/esp8266/tools/xtensa-lx106-elf-gcc/2.5.0-4-b40a506/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/bin/ld.exe: C:\Users\Android\AppData\Local\Temp\flprog\pr3/pr3.ino:894: undefined reference to `makeWord(unsigned short)'

collect2.exe: error: ld returned 1 exit status

Несколько библиотек найдено для "OneWire.h"

Используется: d:\Flprog\Flp7.3.0\ideV6\portable\sketchbook\libraries\OneWire

Не используется: d:\Flprog\Flp7.3.0\ideV6\libraries\OneWire

exit status 1

Ошибка компиляции для платы NodeMCU 0.9 (ESP-12 Module).



Этот отчёт будет иметь больше информации с
включенной опцией Файл -> Настройки ->
"Показать подробный вывод во время компиляции"
На версии 7.3.0
Вложения
Безымянный1.png
test v2.5 ink_ecoins.flp
(2.51 МБ) 34 скачивания
Безымянный.png

ecoins
Полковник
Сообщения: 2932
Зарегистрирован: 12.02.2016{, 11:40}
Репутация: 453
Откуда: Шатура
Имя: Энвер

Разработки ecoins

#925

Сообщение ecoins » 06.01.2021{, 21:52}

o615ye161 писал(а):
06.01.2021{, 19:02}
Здравствуйте, ecoins помогите разобраться в ваших библиотеках какие нужно использовать а какие нет, что нужно удалить и как будет все работать, ваши библиотеки совместимы?
1.Первая проблема из-за того, что блок ecoins использует другую библиотеку OneWire.h.
Чтобы исправить ситуацию, требуется удалить из директории \ide6\libraries\ директорию OneWire.
Со временем мы решим эту проблему (выбор нужной библиотеки).
Как альтернатива -можете использовать другой ПБ блок ds1820 - например стандартный, он вполне пригоден для работы.
2.Более общая проблема - Вы увеличиваете проект, но в нем совсем не заложены инструменты для отладки.
Первое, что требуется - это возможность отключать платы (по флажку "Не компилировать платы").
Так Вы сможете последовательно не только идентифицировать проблему, но и превратить процесс отладки от простого к сложному.
Сейчас это сложно сделать, так как назначение клемм разбросано по платам - хорошо сделать их в первой плате.
Как пример, я начал делать это на Вашем проекте - выкладываю с доработками.
test v2.6 ink_ecoins.flp
(5.06 МБ) 54 скачивания
Дальше попробуйте самостоятельно.
3.Общая проблем - проект оформлять поаккуратнее и по возможности с пояснениями для самого себя.
Тогда начнется проявляться структура проекта, которую Вы может быть и измените в пользу более простой и понятной и т.д.
-------------------------
Предложения могут казаться избыточными.
Наши представления об этом -даже самые простые проекты после нескольких итераций могут становиться громоздкими и непонятными.
Лучше сразу проектировать "правильно" - 1.Отдельное определение переменных и клемм. 2.Управление вызова плат по времени. 3.Предусматривать возможности (лучше с использованием специальных ПБ) последовательной отладки проекта.
------------------------
Успехов.

o615ye161
Сержант
Сообщения: 198
Зарегистрирован: 19.12.2019{, 14:47}
Репутация: 3
Имя: Сергей

Разработки ecoins

#926

Сообщение o615ye161 » 06.01.2021{, 22:37}

ecoins писал(а):
06.01.2021{, 21:52}
Вы увеличиваете проект, но в нем совсем не заложены инструменты для отладки.
Первое, что требуется - это возможность отключать платы (по флажку "Не компилировать платы").
Где же найти все описания к блокам какие инструменты как и в каком месте применять, ведь это только вы знаете для чего нужен каждый инструмент, в моем случае у меня не достаточно опыта в программировании да и знаний соответствующих, скажу честно после работы с диспетчером задач уже не хочется работать в FIProg по стандарту как это придумано изначально, но отсутствие полной информации по вашим блокам иногда приводит к недоумению.Спасибо за отзывчивость и помощь!

Отправлено спустя 4 минуты 5 секунд:
ecoins писал(а):
06.01.2021{, 21:52}
так как назначение клемм разбросано по платам - хорошо сделать их в первой плате.
Я так понимаю что нужно делать все равно переменные которые потом нужно соединить с клеммой, а почему тогда сразу не делать все на переменных?

ecoins
Полковник
Сообщения: 2932
Зарегистрирован: 12.02.2016{, 11:40}
Репутация: 453
Откуда: Шатура
Имя: Энвер

Разработки ecoins

#927

Сообщение ecoins » 06.01.2021{, 23:35}

o615ye161 писал(а):
06.01.2021{, 22:41}
Я так понимаю что нужно делать все равно переменные которые потом нужно соединить с клеммой, а почему тогда сразу не делать все на переменных?
В вашем случае да. Пока Вы не пройдёте навыки отладки.
Потом будет проще и по отложенным платам этого можно избежать.
Сохранять можно и в структурах, но в Вашем случае наверное лучше пойти по более простому пути.
В итоге Вы сможете запускать проект последовательно запуская платы.
Контрольные результаты (например показания датчиков) можно смотреть на блоках lcd.
Проще всего начинать с платы диспетчер и lcd, который и будет инструментом отладки.
На первом этапе достаточно увидеть мерцающий символ в первой позиции - это значит что проект уже работает.
Для удобства можно подключить дополнительный дисплей на дополнительной плате.
Когда проект отлажен, эту плату можно просто отключить (не компилировать).
У Вас все получится - немного терпения, настойчивость и не стесняться следовать рекомендациям, даже если они кажутся бессмысленными. В начале попробуйте, а потом примите решения по приемлемости для Вас этих рекомендаций.

ecoins
Полковник
Сообщения: 2932
Зарегистрирован: 12.02.2016{, 11:40}
Репутация: 453
Откуда: Шатура
Имя: Энвер

Разработки ecoins

#928

Сообщение ecoins » 06.01.2021{, 23:37}

GDAN7777 писал(а):
06.01.2021{, 22:51}
100% правда.Жаль автор не хочет прислушаться к критике о довести дело до конца.Еще бы неоценимую услугу оказала бы функция типа stopwatch по образу avr studio,чтобы можно было устанавливать breakpointыи отслеживать время выполнения,пускай даже и в СИшном коде.Но это скорее к автору программы.
Это не совсем так. Больше пробуйте и перед Вами откроется бездна информации - уже имеющаяся и встроенная в блоки и библиотеки и дополнительная, доступная иными методами.

ecoins
Полковник
Сообщения: 2932
Зарегистрирован: 12.02.2016{, 11:40}
Репутация: 453
Откуда: Шатура
Имя: Энвер

Разработки ecoins

#929

Сообщение ecoins » 09.01.2021{, 09:46}

GDAN7777 писал(а):
09.01.2021{, 03:51}
Выделенное каким конкретно образом реализуется?Что-то типа флагового стэка с изменяемым вектором или как?
Стек не используется. Все гораздо проще - хотя простота эта полировалась долго...
Есть реализация и автономном блоке - там есть код, можно посмотреть.
RT_HW_BASE_7xx_25.12.20.ubl
(1.02 МБ) 57 скачиваний
В библиотеке RT_HW_BASE.h в файле RT_HW_BASE_10_01_Real Time примерно тоже с комментариями.

ecoins
Полковник
Сообщения: 2932
Зарегистрирован: 12.02.2016{, 11:40}
Репутация: 453
Откуда: Шатура
Имя: Энвер

Разработки ecoins

#930

Сообщение ecoins » 10.01.2021{, 00:39}

Вопрос:
Как из программы очистить монитор порта?
Можно как-то так: for(byte i=0;i<160;i++) {Serial.write('\n');}
но не красиво. Наверное есть служебный код (возможно где-нибудь в начале таблицы ASCII).

ecoins
Полковник
Сообщения: 2932
Зарегистрирован: 12.02.2016{, 11:40}
Репутация: 453
Откуда: Шатура
Имя: Энвер

Разработки ecoins

#931

Сообщение ecoins » 10.01.2021{, 18:06}

На заметку: Управление реле от ESP8266 (или другой контроллер 3.3в).
Понадобилось управлять от ESP8266 блоком их двуx реле.
Реле_2 внешний вид.jpg
Реле_2 внешний вид.jpg (45.79 КБ) 1138 просмотров

Блок позволяет подавать раздельно питание на оптрон (Vcc 3.3в) и на реле(RY-Vcc 5в)
Работало все не устойчиво.
Оказалось, что ток через оптроны был пороговый, транзисторы Q1,Q2 открывались не полностью и на реле было всего 4в.
Реле_2 схема.jpg
Замена резисторов R1,R4 c 1к на 470ом решило проблему.

ecoins
Полковник
Сообщения: 2932
Зарегистрирован: 12.02.2016{, 11:40}
Репутация: 453
Откуда: Шатура
Имя: Энвер

Разработки ecoins

#932

Сообщение ecoins » 10.01.2021{, 18:32}

Проект: Инкубатор детского клуба "Мегавольт" (г.Жуковский).
Так получилось, что ecoins поучаствовало в проекте "Инкубатор на 4 места".
Разработчик проекта член детского клуба "Мегавольт" (г.Жуковский) Дмитрий 11лет.
Делали они его настойчиво и с азартом.
Проект выполнен на ESP8266.
Инкубатор работает в автоматическом режиме.
Наблюдение за техпроцессом осуществляется через пульт на смартфон с установленной Remote XY.
Предусмотрено ручной режим с пульта для тестирования оборудования.
В этом посте фото проекта.
IMG_2994.jpg
Unknown.jpeg
СпойлерПоказать
IMG_2995.jpg
СпойлерПоказать
IMG_2996.jpg
СпойлерПоказать
IMG_2994.jpg
IMG_2998.jpg
Проект в основном автономный (используются только, две доп.библиотеки LCD(русский) и DHT22).
и построен на подходах к проектированию ecoins (в т.ч. и планировщик задач).
-----------------------
Если будет интерес, можно выложить и сам проект.
Вложения
IMG_2999.jpg

o615ye161
Сержант
Сообщения: 198
Зарегистрирован: 19.12.2019{, 14:47}
Репутация: 3
Имя: Сергей

Разработки ecoins

#933

Сообщение o615ye161 » 11.01.2021{, 23:10}

ecoins писал(а):
10.01.2021{, 18:32}
Если будет интерес, можно выложить и сам проект.
интересно

Отправлено спустя 8 минут 19 секунд:
А вот мой проектик инкубатора,не получается сделать на экране LCD с блоками ecoins двухстраничный режим работы LCD2004 главный экран и при нажатии комбинации кнопок включение второй страницы, а главная при этом отключалась. при старте контроллера выводится все в кучу(информация главного экрана и второй страницы) после одного входа и выхода по комбинации кнопок все работает. подскажите как на блоках ecoins этот режим реализовать?
Вложения
test v2.6 ink_ecoins.zip
(383.03 КБ) 47 скачиваний

ecoins
Полковник
Сообщения: 2932
Зарегистрирован: 12.02.2016{, 11:40}
Репутация: 453
Откуда: Шатура
Имя: Энвер

Разработки ecoins

#934

Сообщение ecoins » 12.01.2021{, 03:24}

ecoins писал(а):
06.01.2021{, 23:35}
У Вас все получится - немного терпения, настойчивость и не стесняться следовать рекомендациям, даже если они кажутся бессмысленными. В начале попробуйте, а потом примите решения по приемлемости для Вас этих рекомендаций.
В вышеприведенном посте были предложены рекомендации по освоению подходов к проектированию ecoins.
Один из них - уже на стадии раннего проектирования в проект закладываются инструменты отладки проекта.
o615ye161 писал(а):
11.01.2021{, 23:18}
А вот мой проектик инкубатора,не получается сделать на экране LCD с блоками ecoins двухстраничный режим работы LCD2004 главный экран и при нажатии комбинации кнопок включение второй страницы, а главная при этом отключалась. при старте контроллера выводится все в кучу(информация главного экрана и второй страницы) после одного входа и выхода по комбинации кнопок все работает. подскажите как на блоках ecoins этот режим реализовать?
Я посмотрю что у Вас сейчас за проблемы, то это будет в версии FLPrpg 7.3.0.
Вы уже в этой версии работаете?

ecoins
Полковник
Сообщения: 2932
Зарегистрирован: 12.02.2016{, 11:40}
Репутация: 453
Откуда: Шатура
Имя: Энвер

Разработки ecoins

#935

Сообщение ecoins » 12.01.2021{, 03:32}

o615ye161 писал(а):
11.01.2021{, 23:18}
интересно
ecoins писал(а):
10.01.2021{, 18:32}
Так получилось, что ecoins поучаствовало в проекте "Инкубатор на 4 места".
Разработчик проекта член детского клуба "Мегавольт" (г.Жуковский) Дмитрий 11лет.
Версия проекта с нашими доработками.
BASE_Инкубатор_Дима_v11_WiFi_RXY_070121.flp
(3.66 МБ) 68 скачиваний
RT_10_HW_LCD44780_v0.4_xxx.zip
(37.66 КБ) 62 скачивания
RT_21_HW_DHTx_v3.1.zip
(8.6 КБ) 52 скачивания
RXY_ссылка.txt
(63 байт) 56 скачиваний

ecoins
Полковник
Сообщения: 2932
Зарегистрирован: 12.02.2016{, 11:40}
Репутация: 453
Откуда: Шатура
Имя: Энвер

Разработки ecoins

#936

Сообщение ecoins » 12.01.2021{, 09:43}

ecoins писал(а):
12.01.2021{, 03:24}
Я посмотрю что у Вас сейчас за проблемы, то это будет в версии FLPrpg 7.3.0.
Вы уже в этой версии работаете?
Посмотрел Ваш проект.
Гораздо лучше и понятней, чем предыдущая версия.
Переключение дисплея работает - это просто проверил.
Для отладки на переменную меню подаю значение от кнопки и все на дисплее нормально переключается - т.е. Вам покопаться в логике проекта требуется.
----------------------
Общее соображение по проекту:
Значительная часть проекта посвящена манипуляциями с кнопками, меню и дисплеем. И логика управления всем этим получается сложная и громоздкая.
Да и в управлении требует некоторой сноровки - когда-то коротко нажать, когда длительно и т.п.
Если ресурсы позволяют, я рекомендовал бы основные параметры оставить на LCD, а управление перевести на смартфон - тем более, что Вы ESP8266 используете и можно связываться через Wi-Fi.
Наиболее походящим решение является KaScada.
Есть некоторый порог для вхождения, но попробовав один раз Вы ощутите принципиально иные возможности и вероятно измените представления о подходах к проектированию подобных систем.
------
Успехов.

o615ye161
Сержант
Сообщения: 198
Зарегистрирован: 19.12.2019{, 14:47}
Репутация: 3
Имя: Сергей

Разработки ecoins

#937

Сообщение o615ye161 » 12.01.2021{, 10:02}

ecoins писал(а):
12.01.2021{, 03:24}
версии FLPrpg 7.3.0.
Вы уже в этой версии работаете?
Проект как раз создан в версии FLPrpg 7.3.0.

Отправлено спустя 10 минут 50 секунд:
ecoins писал(а):
12.01.2021{, 09:43}
Для отладки на переменную меню подаю значение от кнопки и все на дисплее нормально переключается - т.е. Вам покопаться в логике проекта требуется.
В этом проекте блоки второй страницы я убрал временно, так как произошел глюк Flprog 7.3.0 поэтому скинул проект до глюка, а вообще проект сделан только на30-40% где то

Отправлено спустя 8 минут 46 секунд:
ecoins писал(а):
12.01.2021{, 09:43}
Значительная часть проекта посвящена манипуляциями с кнопками, меню и дисплеем. И логика управления всем этим получается сложная и громоздкая.
Это потому что устройство должно работать и управляться на месте без привязки к сервисам, это профессиональное устройство, сам инкубировал и результат получился 94%, это очень высокая выводимость, управление через интернет тоже будет но оно не в приоритете по управлению, инкубация достаточно сложный процесс, имеет значение сколько яиц инкубируется, при инкубации к примеру 40шт режимы и ход инкубации одни, а более 150 совершенно другие так как зародыш с 14 дня начинает сам активно выделять тепло и если применять режим как для 40шт, то можно все загубить, зародыш не переносит даже кратковременного перегрева и это сказывается на выводимости либо вылупляются с уродствами, не втянутый желток, либо вообще не может выбраться из скорлупы, также происходят замирания зародыша на выводе, я через это прошел

Отправлено спустя 6 минут 19 секунд:
ecoins писал(а):
12.01.2021{, 09:43}
Есть некоторый порог для вхождения, но попробовав один раз Вы ощутите принципиально иные возможности и вероятно измените представления о подходах к проектированию подобных систем.
я уже все сервисы применял и есть много нюансов в работе устройства, поэтому основное управление должно быть на самом контроллере,так как потерять 300-1000шт яиц это недопустимо, отсюда и такие требования к управлению, а по кнопкам все просто 1 долгое вход в меню, 2 длинное включает переворот лотков,2 короткое включает освещение ,3,4 короткое ручной режим поворота лотков для приведения лотков в горизонт, на первый взгляд сложно, а на самом деле все просто и логично

Аватара пользователя
Rovki
Полковник
Сообщения: 4875
Зарегистрирован: 22.04.2016{, 17:25}
Репутация: 269
Откуда: Чехов
Имя: Анатолий
Контактная информация:

Разработки ecoins

#938

Сообщение Rovki » 12.01.2021{, 10:46}

Так алгоритм то в контроллере , а чем задать и отображать можно и на смарте ,на надежность не повлияет ,естественно все заданные режимы и уставки должны быть энергонезависимые .
Электронщик до мозга костей и не только

o615ye161
Сержант
Сообщения: 198
Зарегистрирован: 19.12.2019{, 14:47}
Репутация: 3
Имя: Сергей

Разработки ecoins

#939

Сообщение o615ye161 » 12.01.2021{, 11:01}

Rovki писал(а):
12.01.2021{, 10:46}
Так алгоритм то в контроллере , а чем задать и отображать можно и на смарте ,на надежность не повлияет ,естественно все заданные режимы и уставки должны быть энергонезависимые .
В режиме точки доступа возникают подтормаживания ( вся программа на самой ESP, и несколько одновременно работающих интерфейсов) возможно это из за самой ESP8266, в режиме облака происходят отваливания, единственный способ работы более стабильный это блютус и то иногда пропадают проекты, а это при инкубации тоже не допустимо, инкубатор это не станок, если есть риск то лучше в этом случае не рисковать, в данном случае все удаленные программы можно применять только для мониторинга, на производствах в инкубаториях такой способ не применяют ну только если Siemens

ecoins
Полковник
Сообщения: 2932
Зарегистрирован: 12.02.2016{, 11:40}
Репутация: 453
Откуда: Шатура
Имя: Энвер

Разработки ecoins

#940

Сообщение ecoins » 12.01.2021{, 11:59}

o615ye161 писал(а):
12.01.2021{, 11:01}
В режиме точки доступа возникают подтормаживания ( вся программа на самой ESP, и несколько одновременно работающих интерфейсов) возможно это из за самой ESP8266, в режиме облака происходят отваливания, единственный способ работы более стабильный это блютус и то иногда пропадают проекты, а это при инкубации тоже не допустимо, инкубатор это не станок, если есть риск то лучше в этом случае не рисковать, в данном случае все удаленные программы можно применять только для мониторинга, на производствах в инкубаториях такой способ не применяют ну только если Siemens
Смартфон или планшет всего лишь "показометр" - на работу контроллера вообще не влияет.
Еще рекомендация - делать проект на MEGA2560 или STM32F103c (128 кБайт). В них кроме терминала еще три дополнительных UART.
Можете одновременно использовать и LCD, и KaScada, и еще что-то (например Nextion).

Закрыто

Вернуться в «Команда ecoins»