Требуется объединить два скетча

AlexAndryF
Offline
Зарегистрирован: 28.06.2020

Добрый день.

Необходимо объединить в один скетч два нижеуказанных скетча. Под Ардуино микро или мини, мега2560, нано или предлагать варианты.

https://github.com/povlhp/iBus2PPM

https://github.com/qba667/MAVLinkToIbus

Насколько это реально и что будет стоить?

man9913
Offline
Зарегистрирован: 19.03.2016
brokly
brokly аватар
Offline
Зарегистрирован: 08.02.2014

от 5 тыр.

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

ого! тут творения самого qba667 адаптировать берутся )))

AlexAndryF
Offline
Зарегистрирован: 28.06.2020

Вы предлагаете это сделать за 5000руб?

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

AlexAndryF пишет:

Вы предлагаете это сделать за 5000руб?

Вы бы определились, что именно "желать изволите", на уровне блок-схемы, а то непонятки )))

PS флайскай перешитый на 14 каналов имеется

AlexAndryF
Offline
Зарегистрирован: 28.06.2020

Данные проекты были разработаны для радиоуправляемых моделей с применением контроллера АПМ.

Да, перепрошитый флайскай имеется.

АПМ 2.8 тоже имеется.

Все настроил, все работает.

Сейчас определенные команды от пульта на контроллер идут через IBUS2PPM. Протокол IBUS контроллеру АПМ не знаком поэтому и используется конвертер IBUS2PPM.

А параметры телеметрии идут через MavlinkTOIbus. Причем через него контроллер АПМ только пока может передавать показания датчиков. Вот так это выглядит.

 

 

 

 

Требуется совместить оба проекта в один, чтобы АПМ с его помощью мог передавать параметры телеметрии на пульт через порт приемника SENS, и при помощи его же поступали команды с пульта через порт приемника SERVO на АПМ в виде PPM сигнала.

Если знакомы с протоколом Mavlink. то задача вообще сделать так, чтобы с пульта можно было отправить  определенную комбинацию команд, а эта плата эту комбинацию определяет, как команду "идти в точку А" и передает эту команду затем в АПМ (параметры этой точки уже заранее находятся в памяти контроллера АПМ) и АПМ перемещает модель в эту точку. Эту команду можно считать только с порта SERVO, а там сигнал IBUS. В АПМ можно отправить только по протоколу Mavlink. Поэтому и нужно данное устройство.

У кого есть какие-нибудь предложения?

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

PPM на 1 ногу APM.2.8, 2 и 3 перемкнуты, так?
Со стандартного порта телеметрии загоняете в IBUS приёмника, через конвертер.
На раздельных контроллерах всё работает?

Похоже, что реализовать хотите прикормочный кораблик, делал всё в рамках стандартной конфигурации.

Непонятно как в вашей схеме GS передаст координаты флайскаю

Да, прошивка АПМ может принять только 8 каналов PPM или я чего то не знаю )))

AlexAndryF
Offline
Зарегистрирован: 28.06.2020

Все верно. Раздельно они работают. Но через РРМ АПМ воспринимает только ШИМ сигнал. Аппаратура через IBUS может передавать все 14 каналов и через IBUS2PPM АПМ их все видит. Я сейчас сделал так чтобы приопределенной комбинации команд плата с IBUS2PPM распознала команду отправки на точку, но IBUS2PPM не может никак передать эту команду в АПМ, это сможет сделать только Mavlinktoibus через порт телеметрии. Для чего я и хочу их слить воедино.

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

канал сенсоров, он только обратный. понимает до 16 устройств, полноценная телеметрия завязывается на GS а не на аппаратуру управления, GS и ведёт аппарат на точку, я в качестве GS использовал программу TOWER, это типовое решение

AlexAndryF
Offline
Зарегистрирован: 28.06.2020

Я сейчас для работы с АПМ использую программу Мишен планер. АПМ принимает команды и передаёт данные через порт телеметрии по протоколу mavlink.

AlexAndryF
Offline
Зарегистрирован: 28.06.2020

В создаваемом блоке будет конечно же не весь функционал, а только команда "идти на точку А". И все.

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

AlexAndryF пишет:
Я сейчас для работы с АПМ использую программу Мишен планер. АПМ принимает команды и передаёт данные через порт телеметрии по протоколу mavlink.

Вы не поверите, но я тоже, а других прошивок и не знаю...
Что за прошивка в нём?

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

AlexAndryF пишет:
В создаваемом блоке будет конечно же не весь функционал, а только команда "идти на точку А". И все.

у нас разное представление, как это работает в действительности...
Мне представляется так:

По каналу телеметрии APM гонит данные GPS, высоту и данные с каналов PWM, программа GS сохраняет эти данные в лог и как только поступила команда с 7 канала отмечает WP. (если это настроено в мишинпланере) При активации с GS полётного задания идти на точку A к примеру GS и берёт на себя управление, получает от APM текущие координаты, вычисляет требуемые корректировки курса и управляет, вычислительной мощности на борту ведь явно маловато, хотя могу и ошибаться, до технических подробностей не докапывался, работает и ладно, все полётные задания хранятся в программе GS по такой схеме

непонятно каким чудным образом думаете реализовать функции GS в передатчике флайскай, у него мозгов кот наплакал

PS Мишин планер - титанический труд программиста, возможностями программы владею на пару процентов, не обессудь, многого могу и не знать

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

А совместить можно попробовать, на 328PB, у неё 2 последовательных порта, но надо смотреть скетчи, не пересекаются ли по ресурсам

AlexAndryF
Offline
Зарегистрирован: 28.06.2020

Это уже не в моих силах, поэтому и ищу того кто возьмётся за это.

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

AlexAndryF пишет:
Это уже не в моих силах, поэтому и ищу того кто возьмётся за это.

Брокли точно сможет, если это вообще теоретически возможно )))

AlexAndryF
Offline
Зарегистрирован: 28.06.2020

АПМ запоминает точку по команде сам, без участия Мишен планера.

brokly
brokly аватар
Offline
Зарегистрирован: 08.02.2014

ua6em пишет:

Брокли точно сможет, если это вообще теоретически возможно )))

Нет, уважаемые, простите. Не возьмусь. Я не в теме. 

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

del

AlexAndryF
Offline
Зарегистрирован: 28.06.2020

Есть еще один проект https://github.com/docice/MavLink2iBUS2PPM правда не могу его запустить, нет необходимой для нее платы, да и дороговата она выходит. Так вот, в этом проекте вроде реализован, тот функционал, который я хочу получить (без отправки на точку). Поэтому хочу найти так же человека, который сможет адаптировать тот проект к примеру под ардуино мега2560 или про микро, вообщем под что то недорогое.

AlexAndryF
Offline
Зарегистрирован: 28.06.2020

Как мне объяснили, что там проблемка в библиотеке PulsePosition

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

AlexAndryF пишет:

Как мне объяснили, что там проблемка в библиотеке PulsePosition

Отставить!!!

Там уже всё сделано!

Вход пин 13, выход PPM пин 5

AlexAndryF
Offline
Зарегистрирован: 28.06.2020

А плата только Teensy 3.1 и выше? А ардуино попроще может можно использовать?

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

AlexAndryF пишет:

А плата только Teensy 3.1 и выше? А ардуино попроще может можно использовать?

автор пишет, что рабочая конфигурация

Working definition:

#elif defined(ARDUINO_AVR_YUN) || defined(ARDUINO_AVR_LEONARDO) || defined(__AVR_ATmega32U4__)

#define ALTSS_USE_TIMER1
#define INPUT_CAPTURE_PIN	  4 // receive
#define OUTPUT_COMPARE_A_PIN  9 // transmit

As input capture pin 4 must be used and as output compare pin 9 must be used.

То-есть принимает по IBUS, преобразовывает в PPM, далее упаковывает в Mavlink
Всё должно работать без верхней ардуины микры

32U4 любая, про микро в частности

Там еще ПО приёмника вроде надо обновить...
Лучше спрашивать на тематическом форуме, мои познания в сей области весьма скромны

 

AlexAndryF
Offline
Зарегистрирован: 28.06.2020

Когда я пробую залить в Ардуино про микро, выходит ошибка.

MavLink2iBUS2PPM:21:23: error: 'Serial1' was not declared in this scope
 
C:\Users\ALBERT\Dropbox\Кораблик\Прошивки\IBUS\эксперементы\MavLink2iBUS2PPM-proba\MavLink2iBUS2PPM\MavLink2iBUS2PPM.ino:138:3: note: in expansion of macro 'mavlinkSerial'
 
C:\Users\ALBERT\Dropbox\Кораблик\Прошивки\IBUS\эксперементы\MavLink2iBUS2PPM-proba\MavLink2iBUS2PPM\MavLink2iBUS2PPM.ino: In function 'void setupRx()':
 
MavLink2iBUS2PPM:22:20: error: 'Serial2' was not declared in this scope
 
C:\Users\ALBERT\Dropbox\Кораблик\Прошивки\IBUS\эксперементы\MavLink2iBUS2PPM-proba\MavLink2iBUS2PPM\MavLink2iBUS2PPM.ino:157:3: note: in expansion of macro 'ibusSerial'
 
C:\Users\ALBERT\Dropbox\Кораблик\Прошивки\IBUS\эксперементы\MavLink2iBUS2PPM-proba\MavLink2iBUS2PPM\MavLink2iBUS2PPM.ino: In function 'void readRx()':
 
MavLink2iBUS2PPM:22:20: error: 'Serial2' was not declared in this scope
 
C:\Users\ALBERT\Dropbox\Кораблик\Прошивки\IBUS\эксперементы\MavLink2iBUS2PPM-proba\MavLink2iBUS2PPM\MavLink2iBUS2PPM.ino:167:19: note: in expansion of macro 'ibusSerial'
 
C:\Users\ALBERT\Dropbox\Кораблик\Прошивки\IBUS\эксперементы\MavLink2iBUS2PPM-proba\MavLink2iBUS2PPM\MavLink2iBUS2PPM.ino: In function 'void mavlink_receive()':
 
MavLink2iBUS2PPM:21:23: error: 'Serial1' was not declared in this scope
 
C:\Users\ALBERT\Dropbox\Кораблик\Прошивки\IBUS\эксперементы\MavLink2iBUS2PPM-proba\MavLink2iBUS2PPM\MavLink2iBUS2PPM.ino:275:9: note: in expansion of macro 'mavlinkSerial'
 
C:\Users\ALBERT\Dropbox\Кораблик\Прошивки\IBUS\эксперементы\MavLink2iBUS2PPM-proba\MavLink2iBUS2PPM\MavLink2iBUS2PPM.ino: In function 'void hb_control()':
 
MavLink2iBUS2PPM:21:23: error: 'Serial1' was not declared in this scope
 
C:\Users\ALBERT\Dropbox\Кораблик\Прошивки\IBUS\эксперементы\MavLink2iBUS2PPM-proba\MavLink2iBUS2PPM\MavLink2iBUS2PPM.ino:360:7: note: in expansion of macro 'mavlinkSerial'
 
Используем библиотеку PulsePosition версии 1.0 из папки: C:\Users\ALBERT\Documents\Arduino\libraries\PulsePosition 
Используем библиотеку GCS_MAVLink в папке: C:\Program Files\Arduino\libraries\GCS_MAVLink (legacy)
exit status 1
'Serial1' was not declared in this scope
 
AlexAndryF
Offline
Зарегистрирован: 28.06.2020

При загрузке в ардуино мега 2560 вылазит уже вот это

Arduino: 1.8.10 (Windows 7), Плата:"Arduino/Genuino Mega or Mega 2560, ATmega2560 (Mega 2560)"
 
C:\arduino-1.8.10\arduino-builder -dump-prefs -logger=machine -hardware C:\arduino-1.8.10\hardware -hardware C:\Users\Manager\AppData\Local\Arduino15\packages -tools C:\arduino-1.8.10\tools-builder -tools C:\arduino-1.8.10\hardware\tools\avr -tools C:\Users\Manager\AppData\Local\Arduino15\packages -built-in-libraries C:\arduino-1.8.10\libraries -libraries C:\Users\Manager\Documents\Arduino\libraries -fqbn=arduino:avr:mega:cpu=atmega2560 -ide-version=10810 -build-path C:\Users\Manager\AppData\Local\Temp\arduino_build_636263 -warnings=none -build-cache C:\Users\Manager\AppData\Local\Temp\arduino_cache_31591 -prefs=build.warn_data_percentage=75 -prefs=runtime.tools.avr-gcc.path=C:\arduino-1.8.10\hardware\tools\avr -prefs=runtime.tools.avr-gcc-7.3.0-atmel3.6.1-arduino5.path=C:\arduino-1.8.10\hardware\tools\avr -prefs=runtime.tools.avrdude.path=C:\arduino-1.8.10\hardware\tools\avr -prefs=runtime.tools.avrdude-6.3.0-arduino17.path=C:\arduino-1.8.10\hardware\tools\avr -prefs=runtime.tools.arduinoOTA.path=C:\arduino-1.8.10\hardware\tools\avr -prefs=runtime.tools.arduinoOTA-1.3.0.path=C:\arduino-1.8.10\hardware\tools\avr -verbose C:\Users\Manager\Downloads\MavLink2iBUS2PPM-master\MavLink2iBUS2PPM-master\MavLink2iBUS2PPM\MavLink2iBUS2PPM.ino
C:\arduino-1.8.10\arduino-builder -compile -logger=machine -hardware C:\arduino-1.8.10\hardware -hardware C:\Users\Manager\AppData\Local\Arduino15\packages -tools C:\arduino-1.8.10\tools-builder -tools C:\arduino-1.8.10\hardware\tools\avr -tools C:\Users\Manager\AppData\Local\Arduino15\packages -built-in-libraries C:\arduino-1.8.10\libraries -libraries C:\Users\Manager\Documents\Arduino\libraries -fqbn=arduino:avr:mega:cpu=atmega2560 -ide-version=10810 -build-path C:\Users\Manager\AppData\Local\Temp\arduino_build_636263 -warnings=none -build-cache C:\Users\Manager\AppData\Local\Temp\arduino_cache_31591 -prefs=build.warn_data_percentage=75 -prefs=runtime.tools.avr-gcc.path=C:\arduino-1.8.10\hardware\tools\avr -prefs=runtime.tools.avr-gcc-7.3.0-atmel3.6.1-arduino5.path=C:\arduino-1.8.10\hardware\tools\avr -prefs=runtime.tools.avrdude.path=C:\arduino-1.8.10\hardware\tools\avr -prefs=runtime.tools.avrdude-6.3.0-arduino17.path=C:\arduino-1.8.10\hardware\tools\avr -prefs=runtime.tools.arduinoOTA.path=C:\arduino-1.8.10\hardware\tools\avr -prefs=runtime.tools.arduinoOTA-1.3.0.path=C:\arduino-1.8.10\hardware\tools\avr -verbose C:\Users\Manager\Downloads\MavLink2iBUS2PPM-master\MavLink2iBUS2PPM-master\MavLink2iBUS2PPM\MavLink2iBUS2PPM.ino
Using board 'mega' from platform in folder: C:\arduino-1.8.10\hardware\arduino\avr
Using core 'arduino' from platform in folder: C:\arduino-1.8.10\hardware\arduino\avr
Detecting libraries used...
"C:\\arduino-1.8.10\\hardware\\tools\\avr/bin/avr-g++" -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -Wno-error=narrowing -flto -w -x c++ -E -CC -mmcu=atmega2560 -DF_CPU=16000000L -DARDUINO=10810 -DARDUINO_AVR_MEGA2560 -DARDUINO_ARCH_AVR "-IC:\\arduino-1.8.10\\hardware\\arduino\\avr\\cores\\arduino" "-IC:\\arduino-1.8.10\\hardware\\arduino\\avr\\variants\\mega" "C:\\Users\\Manager\\AppData\\Local\\Temp\\arduino_build_636263\\sketch\\MavLink2iBUS2PPM.ino.cpp" -o nul
Alternatives for PulsePosition.h: [PulsePosition@1.0]
ResolveLibrary(PulsePosition.h)
  -> candidates: [PulsePosition@1.0]
"C:\\arduino-1.8.10\\hardware\\tools\\avr/bin/avr-g++" -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -Wno-error=narrowing -flto -w -x c++ -E -CC -mmcu=atmega2560 -DF_CPU=16000000L -DARDUINO=10810 -DARDUINO_AVR_MEGA2560 -DARDUINO_ARCH_AVR "-IC:\\arduino-1.8.10\\hardware\\arduino\\avr\\cores\\arduino" "-IC:\\arduino-1.8.10\\hardware\\arduino\\avr\\variants\\mega" "-IC:\\arduino-1.8.10\\libraries\\PulsePosition" "C:\\Users\\Manager\\AppData\\Local\\Temp\\arduino_build_636263\\sketch\\MavLink2iBUS2PPM.ino.cpp" -o nul
Alternatives for GCS_MAVLink.h: [GCS_MAVLink]
ResolveLibrary(GCS_MAVLink.h)
  -> candidates: [GCS_MAVLink]
"C:\\arduino-1.8.10\\hardware\\tools\\avr/bin/avr-g++" -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -Wno-error=narrowing -flto -w -x c++ -E -CC -mmcu=atmega2560 -DF_CPU=16000000L -DARDUINO=10810 -DARDUINO_AVR_MEGA2560 -DARDUINO_ARCH_AVR "-IC:\\arduino-1.8.10\\hardware\\arduino\\avr\\cores\\arduino" "-IC:\\arduino-1.8.10\\hardware\\arduino\\avr\\variants\\mega" "-IC:\\arduino-1.8.10\\libraries\\PulsePosition" "-IC:\\arduino-1.8.10\\libraries\\GCS_MAVLink" "C:\\Users\\Manager\\AppData\\Local\\Temp\\arduino_build_636263\\sketch\\MavLink2iBUS2PPM.ino.cpp" -o nul
Alternatives for FastSerial.h: [FastSerialLeo]
ResolveLibrary(FastSerial.h)
  -> candidates: [FastSerialLeo]
"C:\\arduino-1.8.10\\hardware\\tools\\avr/bin/avr-g++" -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -Wno-error=narrowing -flto -w -x c++ -E -CC -mmcu=atmega2560 -DF_CPU=16000000L -DARDUINO=10810 -DARDUINO_AVR_MEGA2560 -DARDUINO_ARCH_AVR "-IC:\\arduino-1.8.10\\hardware\\arduino\\avr\\cores\\arduino" "-IC:\\arduino-1.8.10\\hardware\\arduino\\avr\\variants\\mega" "-IC:\\arduino-1.8.10\\libraries\\PulsePosition" "-IC:\\arduino-1.8.10\\libraries\\GCS_MAVLink" "-IC:\\arduino-1.8.10\\libraries\\FastSerialLeo" "C:\\Users\\Manager\\AppData\\Local\\Temp\\arduino_build_636263\\sketch\\MavLink2iBUS2PPM.ino.cpp" -o nul
"C:\\arduino-1.8.10\\hardware\\tools\\avr/bin/avr-g++" -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -Wno-error=narrowing -flto -w -x c++ -E -CC -mmcu=atmega2560 -DF_CPU=16000000L -DARDUINO=10810 -DARDUINO_AVR_MEGA2560 -DARDUINO_ARCH_AVR "-IC:\\arduino-1.8.10\\hardware\\arduino\\avr\\cores\\arduino" "-IC:\\arduino-1.8.10\\hardware\\arduino\\avr\\variants\\mega" "-IC:\\arduino-1.8.10\\libraries\\PulsePosition" "-IC:\\arduino-1.8.10\\libraries\\GCS_MAVLink" "-IC:\\arduino-1.8.10\\libraries\\FastSerialLeo" "C:\\arduino-1.8.10\\libraries\\PulsePosition\\PulsePosition.cpp" -o nul
"C:\\arduino-1.8.10\\hardware\\tools\\avr/bin/avr-g++" -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -Wno-error=narrowing -flto -w -x c++ -E -CC -mmcu=atmega2560 -DF_CPU=16000000L -DARDUINO=10810 -DARDUINO_AVR_MEGA2560 -DARDUINO_ARCH_AVR "-IC:\\arduino-1.8.10\\hardware\\arduino\\avr\\cores\\arduino" "-IC:\\arduino-1.8.10\\hardware\\arduino\\avr\\variants\\mega" "-IC:\\arduino-1.8.10\\libraries\\PulsePosition" "-IC:\\arduino-1.8.10\\libraries\\GCS_MAVLink" "-IC:\\arduino-1.8.10\\libraries\\FastSerialLeo" "C:\\arduino-1.8.10\\libraries\\GCS_MAVLink\\GCS_MAVLink.cpp" -o nul
"C:\\arduino-1.8.10\\hardware\\tools\\avr/bin/avr-g++" -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -Wno-error=narrowing -flto -w -x c++ -E -CC -mmcu=atmega2560 -DF_CPU=16000000L -DARDUINO=10810 -DARDUINO_AVR_MEGA2560 -DARDUINO_ARCH_AVR "-IC:\\arduino-1.8.10\\hardware\\arduino\\avr\\cores\\arduino" "-IC:\\arduino-1.8.10\\hardware\\arduino\\avr\\variants\\mega" "-IC:\\arduino-1.8.10\\libraries\\PulsePosition" "-IC:\\arduino-1.8.10\\libraries\\GCS_MAVLink" "-IC:\\arduino-1.8.10\\libraries\\FastSerialLeo" "C:\\arduino-1.8.10\\libraries\\FastSerialLeo\\BetterStream.cpp" -o nul
"C:\\arduino-1.8.10\\hardware\\tools\\avr/bin/avr-g++" -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -Wno-error=narrowing -flto -w -x c++ -E -CC -mmcu=atmega2560 -DF_CPU=16000000L -DARDUINO=10810 -DARDUINO_AVR_MEGA2560 -DARDUINO_ARCH_AVR "-IC:\\arduino-1.8.10\\hardware\\arduino\\avr\\cores\\arduino" "-IC:\\arduino-1.8.10\\hardware\\arduino\\avr\\variants\\mega" "-IC:\\arduino-1.8.10\\libraries\\PulsePosition" "-IC:\\arduino-1.8.10\\libraries\\GCS_MAVLink" "-IC:\\arduino-1.8.10\\libraries\\FastSerialLeo" "C:\\arduino-1.8.10\\libraries\\FastSerialLeo\\FastSerial.cpp" -o nul
"C:\\arduino-1.8.10\\hardware\\tools\\avr/bin/avr-g++" -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -Wno-error=narrowing -flto -w -x c++ -E -CC -mmcu=atmega2560 -DF_CPU=16000000L -DARDUINO=10810 -DARDUINO_AVR_MEGA2560 -DARDUINO_ARCH_AVR "-IC:\\arduino-1.8.10\\hardware\\arduino\\avr\\cores\\arduino" "-IC:\\arduino-1.8.10\\hardware\\arduino\\avr\\variants\\mega" "-IC:\\arduino-1.8.10\\libraries\\PulsePosition" "-IC:\\arduino-1.8.10\\libraries\\GCS_MAVLink" "-IC:\\arduino-1.8.10\\libraries\\FastSerialLeo" "C:\\arduino-1.8.10\\libraries\\FastSerialLeo\\MyStream.cpp" -o nul
"C:\\arduino-1.8.10\\hardware\\tools\\avr/bin/avr-g++" -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -Wno-error=narrowing -flto -w -x c++ -E -CC -mmcu=atmega2560 -DF_CPU=16000000L -DARDUINO=10810 -DARDUINO_AVR_MEGA2560 -DARDUINO_ARCH_AVR "-IC:\\arduino-1.8.10\\hardware\\arduino\\avr\\cores\\arduino" "-IC:\\arduino-1.8.10\\hardware\\arduino\\avr\\variants\\mega" "-IC:\\arduino-1.8.10\\libraries\\PulsePosition" "-IC:\\arduino-1.8.10\\libraries\\GCS_MAVLink" "-IC:\\arduino-1.8.10\\libraries\\FastSerialLeo" "C:\\arduino-1.8.10\\libraries\\FastSerialLeo\\ftoa_engine.S" -o nul
"C:\\arduino-1.8.10\\hardware\\tools\\avr/bin/avr-g++" -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -Wno-error=narrowing -flto -w -x c++ -E -CC -mmcu=atmega2560 -DF_CPU=16000000L -DARDUINO=10810 -DARDUINO_AVR_MEGA2560 -DARDUINO_ARCH_AVR "-IC:\\arduino-1.8.10\\hardware\\arduino\\avr\\cores\\arduino" "-IC:\\arduino-1.8.10\\hardware\\arduino\\avr\\variants\\mega" "-IC:\\arduino-1.8.10\\libraries\\PulsePosition" "-IC:\\arduino-1.8.10\\libraries\\GCS_MAVLink" "-IC:\\arduino-1.8.10\\libraries\\FastSerialLeo" "C:\\arduino-1.8.10\\libraries\\FastSerialLeo\\ultoa_invert.S" -o nul
"C:\\arduino-1.8.10\\hardware\\tools\\avr/bin/avr-g++" -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -Wno-error=narrowing -flto -w -x c++ -E -CC -mmcu=atmega2560 -DF_CPU=16000000L -DARDUINO=10810 -DARDUINO_AVR_MEGA2560 -DARDUINO_ARCH_AVR "-IC:\\arduino-1.8.10\\hardware\\arduino\\avr\\cores\\arduino" "-IC:\\arduino-1.8.10\\hardware\\arduino\\avr\\variants\\mega" "-IC:\\arduino-1.8.10\\libraries\\PulsePosition" "-IC:\\arduino-1.8.10\\libraries\\GCS_MAVLink" "-IC:\\arduino-1.8.10\\libraries\\FastSerialLeo" "C:\\arduino-1.8.10\\libraries\\FastSerialLeo\\vprintf.cpp" -o nul
Generating function prototypes...
"C:\\arduino-1.8.10\\hardware\\tools\\avr/bin/avr-g++" -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -Wno-error=narrowing -flto -w -x c++ -E -CC -mmcu=atmega2560 -DF_CPU=16000000L -DARDUINO=10810 -DARDUINO_AVR_MEGA2560 -DARDUINO_ARCH_AVR "-IC:\\arduino-1.8.10\\hardware\\arduino\\avr\\cores\\arduino" "-IC:\\arduino-1.8.10\\hardware\\arduino\\avr\\variants\\mega" "-IC:\\arduino-1.8.10\\libraries\\PulsePosition" "-IC:\\arduino-1.8.10\\libraries\\GCS_MAVLink" "-IC:\\arduino-1.8.10\\libraries\\FastSerialLeo" "C:\\Users\\Manager\\AppData\\Local\\Temp\\arduino_build_636263\\sketch\\MavLink2iBUS2PPM.ino.cpp" -o "C:\\Users\\Manager\\AppData\\Local\\Temp\\arduino_build_636263\\preproc\\ctags_target_for_gcc_minus_e.cpp"
"C:\\arduino-1.8.10\\tools-builder\\ctags\\5.8-arduino11/ctags" -u --language-force=c++ -f - --c++-kinds=svpf --fields=KSTtzns --line-directives "C:\\Users\\Manager\\AppData\\Local\\Temp\\arduino_build_636263\\preproc\\ctags_target_for_gcc_minus_e.cpp"
Компиляция скетча...
"C:\\arduino-1.8.10\\hardware\\tools\\avr/bin/avr-g++" -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -Wno-error=narrowing -MMD -flto -mmcu=atmega2560 -DF_CPU=16000000L -DARDUINO=10810 -DARDUINO_AVR_MEGA2560 -DARDUINO_ARCH_AVR "-IC:\\arduino-1.8.10\\hardware\\arduino\\avr\\cores\\arduino" "-IC:\\arduino-1.8.10\\hardware\\arduino\\avr\\variants\\mega" "-IC:\\arduino-1.8.10\\libraries\\PulsePosition" "-IC:\\arduino-1.8.10\\libraries\\GCS_MAVLink" "-IC:\\arduino-1.8.10\\libraries\\FastSerialLeo" "C:\\Users\\Manager\\AppData\\Local\\Temp\\arduino_build_636263\\sketch\\MavLink2iBUS2PPM.ino.cpp" -o "C:\\Users\\Manager\\AppData\\Local\\Temp\\arduino_build_636263\\sketch\\MavLink2iBUS2PPM.ino.cpp.o"
Compiling libraries...
Compiling library "PulsePosition"
"C:\\arduino-1.8.10\\hardware\\tools\\avr/bin/avr-g++" -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -Wno-error=narrowing -MMD -flto -mmcu=atmega2560 -DF_CPU=16000000L -DARDUINO=10810 -DARDUINO_AVR_MEGA2560 -DARDUINO_ARCH_AVR "-IC:\\arduino-1.8.10\\hardware\\arduino\\avr\\cores\\arduino" "-IC:\\arduino-1.8.10\\hardware\\arduino\\avr\\variants\\mega" "-IC:\\arduino-1.8.10\\libraries\\PulsePosition" "-IC:\\arduino-1.8.10\\libraries\\GCS_MAVLink" "-IC:\\arduino-1.8.10\\libraries\\FastSerialLeo" "C:\\arduino-1.8.10\\libraries\\PulsePosition\\PulsePosition.cpp" -o "C:\\Users\\Manager\\AppData\\Local\\Temp\\arduino_build_636263\\libraries\\PulsePosition\\PulsePosition.cpp.o"
C:\arduino-1.8.10\libraries\PulsePosition\PulsePosition.cpp: In constructor 'PulsePositionOutput::PulsePositionOutput()':
 
C:\arduino-1.8.10\libraries\PulsePosition\PulsePosition.cpp:83:65: error: 'CLOCKS_PER_MICROSECOND' was not declared in this scope
 
 #define TX_MINIMUM_FRAME_CLOCKS   (uint32_t)(TX_MINIMUM_FRAME * CLOCKS_PER_MICROSECOND)
 
                                                                 ^
 
C:\arduino-1.8.10\libraries\PulsePosition\PulsePosition.cpp:109:19: note: in expansion of macro 'TX_MINIMUM_FRAME_CLOCKS'
 
  pulse_width[0] = TX_MINIMUM_FRAME_CLOCKS;
 
                   ^~~~~~~~~~~~~~~~~~~~~~~
 
C:\arduino-1.8.10\libraries\PulsePosition\PulsePosition.cpp: In constructor 'PulsePositionOutput::PulsePositionOutput(int)':
 
C:\arduino-1.8.10\libraries\PulsePosition\PulsePosition.cpp:83:65: error: 'CLOCKS_PER_MICROSECOND' was not declared in this scope
 
 #define TX_MINIMUM_FRAME_CLOCKS   (uint32_t)(TX_MINIMUM_FRAME * CLOCKS_PER_MICROSECOND)
 
                                                                 ^
 
C:\arduino-1.8.10\libraries\PulsePosition\PulsePosition.cpp:119:19: note: in expansion of macro 'TX_MINIMUM_FRAME_CLOCKS'
 
  pulse_width[0] = TX_MINIMUM_FRAME_CLOCKS;
 
                   ^~~~~~~~~~~~~~~~~~~~~~~
 
C:\arduino-1.8.10\libraries\PulsePosition\PulsePosition.cpp: In member function 'bool PulsePositionOutput::begin(uint8_t, uint8_t)':
 
C:\arduino-1.8.10\libraries\PulsePosition\PulsePosition.cpp:142:6: error: 'FTM0_MOD' was not declared in this scope
 
  if (FTM0_MOD != 0xFFFF || (FTM0_SC & 0x7F) != FTM0_SC_VALUE) {
 
      ^~~~~~~~
 
C:\arduino-1.8.10\libraries\PulsePosition\PulsePosition.cpp:142:29: error: 'FTM0_SC' was not declared in this scope
 
  if (FTM0_MOD != 0xFFFF || (FTM0_SC & 0x7F) != FTM0_SC_VALUE) {
 
                             ^~~~~~~
 
C:\arduino-1.8.10\libraries\PulsePosition\PulsePosition.cpp:88:24: error: 'FTM_SC_TOIE' was not declared in this scope
 
 #define FTM0_SC_VALUE (FTM_SC_TOIE | FTM_SC_CLKS(1) | FTM_SC_PS(0))
 
                        ^
 
C:\arduino-1.8.10\libraries\PulsePosition\PulsePosition.cpp:142:48: note: in expansion of macro 'FTM0_SC_VALUE'
 
  if (FTM0_MOD != 0xFFFF || (FTM0_SC & 0x7F) != FTM0_SC_VALUE) {
 
                                                ^~~~~~~~~~~~~
 
C:\arduino-1.8.10\libraries\PulsePosition\PulsePosition.cpp:88:24: note: suggested alternative: 'FTM0_SC_VALUE'
 
 #define FTM0_SC_VALUE (FTM_SC_TOIE | FTM_SC_CLKS(1) | FTM_SC_PS(0))
 
                        ^
 
C:\arduino-1.8.10\libraries\PulsePosition\PulsePosition.cpp:142:48: note: in expansion of macro 'FTM0_SC_VALUE'
 
  if (FTM0_MOD != 0xFFFF || (FTM0_SC & 0x7F) != FTM0_SC_VALUE) {
 
                                                ^~~~~~~~~~~~~
 
C:\arduino-1.8.10\libraries\PulsePosition\PulsePosition.cpp:88:38: error: 'FTM_SC_CLKS' was not declared in this scope
 
 #define FTM0_SC_VALUE (FTM_SC_TOIE | FTM_SC_CLKS(1) | FTM_SC_PS(0))
 
                                      ^
 
C:\arduino-1.8.10\libraries\PulsePosition\PulsePosition.cpp:142:48: note: in expansion of macro 'FTM0_SC_VALUE'
 
  if (FTM0_MOD != 0xFFFF || (FTM0_SC & 0x7F) != FTM0_SC_VALUE) {
 
                                                ^~~~~~~~~~~~~
 
C:\arduino-1.8.10\libraries\PulsePosition\PulsePosition.cpp:88:38: note: suggested alternative: 'FTM0_SC_VALUE'
 
 #define FTM0_SC_VALUE (FTM_SC_TOIE | FTM_SC_CLKS(1) | FTM_SC_PS(0))
 
                                      ^
 
C:\arduino-1.8.10\libraries\PulsePosition\PulsePosition.cpp:142:48: note: in expansion of macro 'FTM0_SC_VALUE'
 
  if (FTM0_MOD != 0xFFFF || (FTM0_SC & 0x7F) != FTM0_SC_VALUE) {
 
                                                ^~~~~~~~~~~~~
 
C:\arduino-1.8.10\libraries\PulsePosition\PulsePosition.cpp:88:55: error: 'FTM_SC_PS' was not declared in this scope
 
 #define FTM0_SC_VALUE (FTM_SC_TOIE | FTM_SC_CLKS(1) | FTM_SC_PS(0))
 
                                                       ^
 
C:\arduino-1.8.10\libraries\PulsePosition\PulsePosition.cpp:142:48: note: in expansion of macro 'FTM0_SC_VALUE'
 
  if (FTM0_MOD != 0xFFFF || (FTM0_SC & 0x7F) != FTM0_SC_VALUE) {
 
                                                ^~~~~~~~~~~~~
 
C:\arduino-1.8.10\libraries\PulsePosition\PulsePosition.cpp:144:3: error: 'FTM0_CNT' was not declared in this scope
 
   FTM0_CNT = 0;
 
   ^~~~~~~~
 
C:\arduino-1.8.10\libraries\PulsePosition\PulsePosition.cpp:152:33: error: 'FTM0_C4SC' was not declared in this scope
 
    case  6: channel = 4; reg = &FTM0_C4SC; break;
 
                                 ^~~~~~~~~
 
C:\arduino-1.8.10\libraries\PulsePosition\PulsePosition.cpp:153:33: error: 'FTM0_C2SC' was not declared in this scope
 
    case  9: channel = 2; reg = &FTM0_C2SC; break;
 
                                 ^~~~~~~~~
 
C:\arduino-1.8.10\libraries\PulsePosition\PulsePosition.cpp:154:33: error: 'FTM0_C3SC' was not declared in this scope
 
    case 10: channel = 3; reg = &FTM0_C3SC; break;
 
                                 ^~~~~~~~~
 
C:\arduino-1.8.10\libraries\PulsePosition\PulsePosition.cpp:155:33: error: 'FTM0_C5SC' was not declared in this scope
 
    case 20: channel = 5; reg = &FTM0_C5SC; break;
 
                                 ^~~~~~~~~
 
C:\arduino-1.8.10\libraries\PulsePosition\PulsePosition.cpp:156:33: error: 'FTM0_C0SC' was not declared in this scope
 
    case 22: channel = 0; reg = &FTM0_C0SC; break;
 
                                 ^~~~~~~~~
 
C:\arduino-1.8.10\libraries\PulsePosition\PulsePosition.cpp:157:33: error: 'FTM0_C1SC' was not declared in this scope
 
    case 23: channel = 1; reg = &FTM0_C1SC; break;
 
                                 ^~~~~~~~~
 
C:\arduino-1.8.10\libraries\PulsePosition\PulsePosition.cpp:169:3: error: 'FRAME_PIN_SET' was not declared in this scope
 
   FRAME_PIN_SET();
 
   ^~~~~~~~~~~~~
 
C:\arduino-1.8.10\libraries\PulsePosition\PulsePosition.cpp:178:2: error: 'CSC_CHANGE' was not declared in this scope
 
  CSC_CHANGE(ftm, cscSet); // set on compare match & interrupt
 
  ^~~~~~~~~~
 
C:\arduino-1.8.10\libraries\PulsePosition\PulsePosition.cpp:178:2: note: suggested alternative: 'CHANGE'
 
  CSC_CHANGE(ftm, cscSet); // set on compare match & interrupt
 
  ^~~~~~~~~~
 
  CHANGE
 
C:\arduino-1.8.10\libraries\PulsePosition\PulsePosition.cpp:181:3: error: 'portConfigRegister' was not declared in this scope
 
  *portConfigRegister(txPin) = PORT_PCR_MUX(4) | PORT_PCR_DSE | PORT_PCR_SRE;
 
   ^~~~~~~~~~~~~~~~~~
 
C:\arduino-1.8.10\libraries\PulsePosition\PulsePosition.cpp:181:3: note: suggested alternative: 'portModeRegister'
 
  *portConfigRegister(txPin) = PORT_PCR_MUX(4) | PORT_PCR_DSE | PORT_PCR_SRE;
 
   ^~~~~~~~~~~~~~~~~~
 
   portModeRegister
 
C:\arduino-1.8.10\libraries\PulsePosition\PulsePosition.cpp:181:31: error: 'PORT_PCR_MUX' was not declared in this scope
 
  *portConfigRegister(txPin) = PORT_PCR_MUX(4) | PORT_PCR_DSE | PORT_PCR_SRE;
 
                               ^~~~~~~~~~~~
 
C:\arduino-1.8.10\libraries\PulsePosition\PulsePosition.cpp:181:31: note: suggested alternative: 'UINTPTR_MAX'
 
  *portConfigRegister(txPin) = PORT_PCR_MUX(4) | PORT_PCR_DSE | PORT_PCR_SRE;
 
                               ^~~~~~~~~~~~
 
                               UINTPTR_MAX
 
C:\arduino-1.8.10\libraries\PulsePosition\PulsePosition.cpp:181:49: error: 'PORT_PCR_DSE' was not declared in this scope
 
  *portConfigRegister(txPin) = PORT_PCR_MUX(4) | PORT_PCR_DSE | PORT_PCR_SRE;
 
                                                 ^~~~~~~~~~~~
 
C:\arduino-1.8.10\libraries\PulsePosition\PulsePosition.cpp:181:64: error: 'PORT_PCR_SRE' was not declared in this scope
 
  *portConfigRegister(txPin) = PORT_PCR_MUX(4) | PORT_PCR_DSE | PORT_PCR_SRE;
 
                                                                ^~~~~~~~~~~~
 
C:\arduino-1.8.10\libraries\PulsePosition\PulsePosition.cpp:182:20: error: 'IRQ_FTM0' was not declared in this scope
 
  NVIC_SET_PRIORITY(IRQ_FTM0, 32);
 
                    ^~~~~~~~
 
C:\arduino-1.8.10\libraries\PulsePosition\PulsePosition.cpp:182:2: error: 'NVIC_SET_PRIORITY' was not declared in this scope
 
  NVIC_SET_PRIORITY(IRQ_FTM0, 32);
 
  ^~~~~~~~~~~~~~~~~
 
C:\arduino-1.8.10\libraries\PulsePosition\PulsePosition.cpp:183:2: error: 'NVIC_ENABLE_IRQ' was not declared in this scope
 
  NVIC_ENABLE_IRQ(IRQ_FTM0);
 
  ^~~~~~~~~~~~~~~
 
C:\arduino-1.8.10\libraries\PulsePosition\PulsePosition.cpp: In member function 'bool PulsePositionOutput::write(uint8_t, float)':
 
C:\arduino-1.8.10\libraries\PulsePosition\PulsePosition.cpp:193:26: error: 'CLOCKS_PER_MICROSECOND' was not declared in this scope
 
  clocks = microseconds * CLOCKS_PER_MICROSECOND;
 
                          ^~~~~~~~~~~~~~~~~~~~~~
 
C:\arduino-1.8.10\libraries\PulsePosition\PulsePosition.cpp:208:2: error: '__disable_irq' was not declared in this scope
 
  __disable_irq();
 
  ^~~~~~~~~~~~~
 
C:\arduino-1.8.10\libraries\PulsePosition\PulsePosition.cpp:212:2: error: '__enable_irq' was not declared in this scope
 
  __enable_irq();
 
  ^~~~~~~~~~~~
 
C:\arduino-1.8.10\libraries\PulsePosition\PulsePosition.cpp: In member function 'void PulsePositionOutput::isr()':
 
C:\arduino-1.8.10\libraries\PulsePosition\PulsePosition.cpp:84:63: error: 'CLOCKS_PER_MICROSECOND' was not declared in this scope
 
 #define TX_PULSE_WIDTH_CLOCKS     (uint32_t)(TX_PULSE_WIDTH * CLOCKS_PER_MICROSECOND)
 
                                                               ^
 
C:\arduino-1.8.10\libraries\PulsePosition\PulsePosition.cpp:223:14: note: in expansion of macro 'TX_PULSE_WIDTH_CLOCKS'
 
   ftm->cv += TX_PULSE_WIDTH_CLOCKS;
 
              ^~~~~~~~~~~~~~~~~~~~~
 
C:\arduino-1.8.10\libraries\PulsePosition\PulsePosition.cpp:224:3: error: 'CSC_CHANGE_INTACK' was not declared in this scope
 
   CSC_CHANGE_INTACK(ftm, cscClear); // clear on compare match & interrupt
 
   ^~~~~~~~~~~~~~~~~
 
C:\arduino-1.8.10\libraries\PulsePosition\PulsePosition.cpp:84:63: error: 'CLOCKS_PER_MICROSECOND' was not declared in this scope
 
 #define TX_PULSE_WIDTH_CLOCKS     (uint32_t)(TX_PULSE_WIDTH * CLOCKS_PER_MICROSECOND)
 
                                                               ^
 
C:\arduino-1.8.10\libraries\PulsePosition\PulsePosition.cpp:237:36: note: in expansion of macro 'TX_PULSE_WIDTH_CLOCKS'
 
    width = pulse_buffer[channel] - TX_PULSE_WIDTH_CLOCKS;
 
                                    ^~~~~~~~~~~~~~~~~~~~~
 
C:\arduino-1.8.10\libraries\PulsePosition\PulsePosition.cpp:244:6: error: 'FRAME_PIN_SET' was not declared in this scope
 
      FRAME_PIN_SET();
 
      ^~~~~~~~~~~~~
 
C:\arduino-1.8.10\libraries\PulsePosition\PulsePosition.cpp:246:6: error: 'FRAME_PIN_CLEAR' was not declared in this scope
 
      FRAME_PIN_CLEAR();
 
      ^~~~~~~~~~~~~~~
 
C:\arduino-1.8.10\libraries\PulsePosition\PulsePosition.cpp:255:4: error: 'CSC_CHANGE_INTACK' was not declared in this scope
 
    CSC_CHANGE_INTACK(ftm, cscSet); // set on compare match & interrupt
 
    ^~~~~~~~~~~~~~~~~
 
C:\arduino-1.8.10\libraries\PulsePosition\PulsePosition.cpp:259:4: error: 'CSC_INTACK' was not declared in this scope
 
    CSC_INTACK(ftm, cscClear); // clear on compare match & interrupt
 
    ^~~~~~~~~~
 
C:\arduino-1.8.10\libraries\PulsePosition\PulsePosition.cpp: In function 'void ftm0_isr()':
 
C:\arduino-1.8.10\libraries\PulsePosition\PulsePosition.cpp:268:6: error: 'FTM0_SC' was not declared in this scope
 
  if (FTM0_SC & 0x80) {
 
      ^~~~~~~
 
C:\arduino-1.8.10\libraries\PulsePosition\PulsePosition.cpp:279:26: error: 'FTM0_C0SC' was not declared in this scope
 
  if ((maskin & 0x01) && (FTM0_C0SC & 0x80)) PulsePositionInput::list[0]->isr();
 
                          ^~~~~~~~~
 
C:\arduino-1.8.10\libraries\PulsePosition\PulsePosition.cpp:280:26: error: 'FTM0_C1SC' was not declared in this scope
 
  if ((maskin & 0x02) && (FTM0_C1SC & 0x80)) PulsePositionInput::list[1]->isr();
 
                          ^~~~~~~~~
 
C:\arduino-1.8.10\libraries\PulsePosition\PulsePosition.cpp:281:26: error: 'FTM0_C2SC' was not declared in this scope
 
  if ((maskin & 0x04) && (FTM0_C2SC & 0x80)) PulsePositionInput::list[2]->isr();
 
                          ^~~~~~~~~
 
C:\arduino-1.8.10\libraries\PulsePosition\PulsePosition.cpp:282:26: error: 'FTM0_C3SC' was not declared in this scope
 
  if ((maskin & 0x08) && (FTM0_C3SC & 0x80)) PulsePositionInput::list[3]->isr();
 
                          ^~~~~~~~~
 
C:\arduino-1.8.10\libraries\PulsePosition\PulsePosition.cpp:283:26: error: 'FTM0_C4SC' was not declared in this scope
 
  if ((maskin & 0x10) && (FTM0_C4SC & 0x80)) PulsePositionInput::list[4]->isr();
 
                          ^~~~~~~~~
 
C:\arduino-1.8.10\libraries\PulsePosition\PulsePosition.cpp:284:26: error: 'FTM0_C5SC' was not declared in this scope
 
  if ((maskin & 0x20) && (FTM0_C5SC & 0x80)) PulsePositionInput::list[5]->isr();
 
                          ^~~~~~~~~
 
C:\arduino-1.8.10\libraries\PulsePosition\PulsePosition.cpp:290:27: error: 'FTM0_C0SC' was not declared in this scope
 
  if ((maskout & 0x01) && (FTM0_C0SC & 0x80)) PulsePositionOutput::list[0]->isr();
 
                           ^~~~~~~~~
 
C:\arduino-1.8.10\libraries\PulsePosition\PulsePosition.cpp:291:27: error: 'FTM0_C1SC' was not declared in this scope
 
  if ((maskout & 0x02) && (FTM0_C1SC & 0x80)) PulsePositionOutput::list[1]->isr();
 
                           ^~~~~~~~~
 
C:\arduino-1.8.10\libraries\PulsePosition\PulsePosition.cpp:292:27: error: 'FTM0_C2SC' was not declared in this scope
 
  if ((maskout & 0x04) && (FTM0_C2SC & 0x80)) PulsePositionOutput::list[2]->isr();
 
                           ^~~~~~~~~
 
C:\arduino-1.8.10\libraries\PulsePosition\PulsePosition.cpp:293:27: error: 'FTM0_C3SC' was not declared in this scope
 
  if ((maskout & 0x08) && (FTM0_C3SC & 0x80)) PulsePositionOutput::list[3]->isr();
 
                           ^~~~~~~~~
 
C:\arduino-1.8.10\libraries\PulsePosition\PulsePosition.cpp:294:27: error: 'FTM0_C4SC' was not declared in this scope
 
  if ((maskout & 0x10) && (FTM0_C4SC & 0x80)) PulsePositionOutput::list[4]->isr();
 
                           ^~~~~~~~~
 
C:\arduino-1.8.10\libraries\PulsePosition\PulsePosition.cpp:295:27: error: 'FTM0_C5SC' was not declared in this scope
 
  if ((maskout & 0x20) && (FTM0_C5SC & 0x80)) PulsePositionOutput::list[5]->isr();
 
                           ^~~~~~~~~
 
C:\arduino-1.8.10\libraries\PulsePosition\PulsePosition.cpp: In member function 'bool PulsePositionInput::begin(uint8_t)':
 
C:\arduino-1.8.10\libraries\PulsePosition\PulsePosition.cpp:327:6: error: 'FTM0_MOD' was not declared in this scope
 
  if (FTM0_MOD != 0xFFFF || (FTM0_SC & 0x7F) != FTM0_SC_VALUE) {
 
      ^~~~~~~~
 
C:\arduino-1.8.10\libraries\PulsePosition\PulsePosition.cpp:327:29: error: 'FTM0_SC' was not declared in this scope
 
  if (FTM0_MOD != 0xFFFF || (FTM0_SC & 0x7F) != FTM0_SC_VALUE) {
 
                             ^~~~~~~
 
C:\arduino-1.8.10\libraries\PulsePosition\PulsePosition.cpp:88:24: error: 'FTM_SC_TOIE' was not declared in this scope
 
 #define FTM0_SC_VALUE (FTM_SC_TOIE | FTM_SC_CLKS(1) | FTM_SC_PS(0))
 
                        ^
 
C:\arduino-1.8.10\libraries\PulsePosition\PulsePosition.cpp:327:48: note: in expansion of macro 'FTM0_SC_VALUE'
 
  if (FTM0_MOD != 0xFFFF || (FTM0_SC & 0x7F) != FTM0_SC_VALUE) {
 
                                                ^~~~~~~~~~~~~
 
C:\arduino-1.8.10\libraries\PulsePosition\PulsePosition.cpp:88:24: note: suggested alternative: 'FTM0_SC_VALUE'
 
 #define FTM0_SC_VALUE (FTM_SC_TOIE | FTM_SC_CLKS(1) | FTM_SC_PS(0))
 
                        ^
 
C:\arduino-1.8.10\libraries\PulsePosition\PulsePosition.cpp:327:48: note: in expansion of macro 'FTM0_SC_VALUE'
 
  if (FTM0_MOD != 0xFFFF || (FTM0_SC & 0x7F) != FTM0_SC_VALUE) {
 
                                                ^~~~~~~~~~~~~
 
C:\arduino-1.8.10\libraries\PulsePosition\PulsePosition.cpp:88:38: error: 'FTM_SC_CLKS' was not declared in this scope
 
 #define FTM0_SC_VALUE (FTM_SC_TOIE | FTM_SC_CLKS(1) | FTM_SC_PS(0))
 
                                      ^
 
C:\arduino-1.8.10\libraries\PulsePosition\PulsePosition.cpp:327:48: note: in expansion of macro 'FTM0_SC_VALUE'
 
  if (FTM0_MOD != 0xFFFF || (FTM0_SC & 0x7F) != FTM0_SC_VALUE) {
 
                                                ^~~~~~~~~~~~~
 
C:\arduino-1.8.10\libraries\PulsePosition\PulsePosition.cpp:88:38: note: suggested alternative: 'FTM0_SC_VALUE'
 
 #define FTM0_SC_VALUE (FTM_SC_TOIE | FTM_SC_CLKS(1) | FTM_SC_PS(0))
 
                                      ^
 
C:\arduino-1.8.10\libraries\PulsePosition\PulsePosition.cpp:327:48: note: in expansion of macro 'FTM0_SC_VALUE'
 
  if (FTM0_MOD != 0xFFFF || (FTM0_SC & 0x7F) != FTM0_SC_VALUE) {
 
                                                ^~~~~~~~~~~~~
 
C:\arduino-1.8.10\libraries\PulsePosition\PulsePosition.cpp:88:55: error: 'FTM_SC_PS' was not declared in this scope
 
 #define FTM0_SC_VALUE (FTM_SC_TOIE | FTM_SC_CLKS(1) | FTM_SC_PS(0))
 
                                                       ^
 
C:\arduino-1.8.10\libraries\PulsePosition\PulsePosition.cpp:327:48: note: in expansion of macro 'FTM0_SC_VALUE'
 
  if (FTM0_MOD != 0xFFFF || (FTM0_SC & 0x7F) != FTM0_SC_VALUE) {
 
                                                ^~~~~~~~~~~~~
 
C:\arduino-1.8.10\libraries\PulsePosition\PulsePosition.cpp:329:3: error: 'FTM0_CNT' was not declared in this scope
 
   FTM0_CNT = 0;
 
   ^~~~~~~~
 
C:\arduino-1.8.10\libraries\PulsePosition\PulsePosition.cpp:337:33: error: 'FTM0_C4SC' was not declared in this scope
 
    case  6: channel = 4; reg = &FTM0_C4SC; break;
 
                                 ^~~~~~~~~
 
C:\arduino-1.8.10\libraries\PulsePosition\PulsePosition.cpp:338:33: error: 'FTM0_C2SC' was not declared in this scope
 
    case  9: channel = 2; reg = &FTM0_C2SC; break;
 
                                 ^~~~~~~~~
 
C:\arduino-1.8.10\libraries\PulsePosition\PulsePosition.cpp:339:33: error: 'FTM0_C3SC' was not declared in this scope
 
    case 10: channel = 3; reg = &FTM0_C3SC; break;
 
                                 ^~~~~~~~~
 
C:\arduino-1.8.10\libraries\PulsePosition\PulsePosition.cpp:340:33: error: 'FTM0_C5SC' was not declared in this scope
 
    case 20: channel = 5; reg = &FTM0_C5SC; break;
 
                                 ^~~~~~~~~
 
C:\arduino-1.8.10\libraries\PulsePosition\PulsePosition.cpp:341:33: error: 'FTM0_C0SC' was not declared in this scope
 
    case 22: channel = 0; reg = &FTM0_C0SC; break;
 
                                 ^~~~~~~~~
 
C:\arduino-1.8.10\libraries\PulsePosition\PulsePosition.cpp:342:33: error: 'FTM0_C1SC' was not declared in this scope
 
    case 23: channel = 1; reg = &FTM0_C1SC; break;
 
                                 ^~~~~~~~~
 
C:\arduino-1.8.10\libraries\PulsePosition\PulsePosition.cpp:356:3: error: 'portConfigRegister' was not declared in this scope
 
  *portConfigRegister(pin) = PORT_PCR_MUX(4);
 
   ^~~~~~~~~~~~~~~~~~
 
C:\arduino-1.8.10\libraries\PulsePosition\PulsePosition.cpp:356:3: note: suggested alternative: 'portModeRegister'
 
  *portConfigRegister(pin) = PORT_PCR_MUX(4);
 
   ^~~~~~~~~~~~~~~~~~
 
   portModeRegister
 
C:\arduino-1.8.10\libraries\PulsePosition\PulsePosition.cpp:356:29: error: 'PORT_PCR_MUX' was not declared in this scope
 
  *portConfigRegister(pin) = PORT_PCR_MUX(4);
 
                             ^~~~~~~~~~~~
 
C:\arduino-1.8.10\libraries\PulsePosition\PulsePosition.cpp:356:29: note: suggested alternative: 'UINTPTR_MAX'
 
  *portConfigRegister(pin) = PORT_PCR_MUX(4);
 
                             ^~~~~~~~~~~~
 
                             UINTPTR_MAX
 
C:\arduino-1.8.10\libraries\PulsePosition\PulsePosition.cpp:357:2: error: 'CSC_CHANGE' was not declared in this scope
 
  CSC_CHANGE(ftm, cscEdge); // input capture & interrupt on rising edge
 
  ^~~~~~~~~~
 
C:\arduino-1.8.10\libraries\PulsePosition\PulsePosition.cpp:357:2: note: suggested alternative: 'CHANGE'
 
  CSC_CHANGE(ftm, cscEdge); // input capture & interrupt on rising edge
 
  ^~~~~~~~~~
 
  CHANGE
 
C:\arduino-1.8.10\libraries\PulsePosition\PulsePosition.cpp:358:20: error: 'IRQ_FTM0' was not declared in this scope
 
  NVIC_SET_PRIORITY(IRQ_FTM0, 32);
 
                    ^~~~~~~~
 
C:\arduino-1.8.10\libraries\PulsePosition\PulsePosition.cpp:358:2: error: 'NVIC_SET_PRIORITY' was not declared in this scope
 
  NVIC_SET_PRIORITY(IRQ_FTM0, 32);
 
  ^~~~~~~~~~~~~~~~~
 
C:\arduino-1.8.10\libraries\PulsePosition\PulsePosition.cpp:359:2: error: 'NVIC_ENABLE_IRQ' was not declared in this scope
 
  NVIC_ENABLE_IRQ(IRQ_FTM0);
 
  ^~~~~~~~~~~~~~~
 
C:\arduino-1.8.10\libraries\PulsePosition\PulsePosition.cpp: In member function 'void PulsePositionInput::isr()':
 
C:\arduino-1.8.10\libraries\PulsePosition\PulsePosition.cpp:368:2: error: 'CSC_INTACK' was not declared in this scope
 
  CSC_INTACK(ftm, cscEdge); // input capture & interrupt on rising edge
 
  ^~~~~~~~~~
 
C:\arduino-1.8.10\libraries\PulsePosition\PulsePosition.cpp:85:65: error: 'CLOCKS_PER_MICROSECOND' was not declared in this scope
 
 #define RX_MINIMUM_SPACE_CLOCKS   (uint32_t)(RX_MINIMUM_SPACE * CLOCKS_PER_MICROSECOND)
 
                                                                 ^
 
C:\arduino-1.8.10\libraries\PulsePosition\PulsePosition.cpp:377:15: note: in expansion of macro 'RX_MINIMUM_SPACE_CLOCKS'
 
  if (count >= RX_MINIMUM_SPACE_CLOCKS) {
 
               ^~~~~~~~~~~~~~~~~~~~~~~
 
C:\arduino-1.8.10\libraries\PulsePosition\PulsePosition.cpp: In member function 'int PulsePositionInput::available()':
 
C:\arduino-1.8.10\libraries\PulsePosition\PulsePosition.cpp:398:2: error: '__disable_irq' was not declared in this scope
 
  __disable_irq();
 
  ^~~~~~~~~~~~~
 
C:\arduino-1.8.10\libraries\PulsePosition\PulsePosition.cpp:401:2: error: '__enable_irq' was not declared in this scope
 
  __enable_irq();
 
  ^~~~~~~~~~~~
 
C:\arduino-1.8.10\libraries\PulsePosition\PulsePosition.cpp: In member function 'float PulsePositionInput::read(uint8_t)':
 
C:\arduino-1.8.10\libraries\PulsePosition\PulsePosition.cpp:412:2: error: '__disable_irq' was not declared in this scope
 
  __disable_irq();
 
  ^~~~~~~~~~~~~
 
C:\arduino-1.8.10\libraries\PulsePosition\PulsePosition.cpp:416:2: error: '__enable_irq' was not declared in this scope
 
  __enable_irq();
 
  ^~~~~~~~~~~~
 
C:\arduino-1.8.10\libraries\PulsePosition\PulsePosition.cpp:417:31: error: 'CLOCKS_PER_MICROSECOND' was not declared in this scope
 
  return (float)value / (float)CLOCKS_PER_MICROSECOND;
 
                               ^~~~~~~~~~~~~~~~~~~~~~
 
Несколько библиотек найдено для "PulsePosition.h"
 Используется: C:\arduino-1.8.10\libraries\PulsePosition
Несколько библиотек найдено для "GCS_MAVLink.h"
 Используется: C:\arduino-1.8.10\libraries\GCS_MAVLink
Несколько библиотек найдено для "FastSerial.h"
 Используется: C:\arduino-1.8.10\libraries\FastSerialLeo
Используем библиотеку PulsePosition версии 1.0 из папки: C:\arduino-1.8.10\libraries\PulsePosition 
Используем библиотеку GCS_MAVLink в папке: C:\arduino-1.8.10\libraries\GCS_MAVLink (legacy)
Используем библиотеку FastSerialLeo в папке: C:\arduino-1.8.10\libraries\FastSerialLeo (legacy)
exit status 1
Ошибка компиляции для платы Arduino/Genuino Mega or Mega 2560.

 

AlexAndryF
Offline
Зарегистрирован: 28.06.2020

Подсказали, что она якобы будет работать только на ардуино-совместимых плат Teensy с микроконтроллером NXP Kinetis

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

AlexAndryF пишет:

Подсказали, что она якобы будет работать только на ардуино-совместимых плат Teensy с микроконтроллером NXP Kinetis

автор чётко написал, на чём она будет работать, pro micro , yun, leonardo...

попробовал в версии среды 1.6.12, , это сделать обязательно - For MAVLink communication AltSoftSerial has been used. It will work also with use of hardware serial but not on ProMicro becuase 2nd serial is attached to USB. Do not use SoftSerial or NewSoftSerial - they are too slow. After downloading of AltSoftSerial lib configuration for ARDUINO_AVR_YUN, ARDUINO_AVR_LEONARDO and AVR_ATmega32U4 (in file AltSoftSerial_Boards.h) must be replaced.

Всё компилируется

AlexAndryF
Offline
Зарегистрирован: 28.06.2020

С этими, то двумя проектами проблем нет, они работают, все четко, а вот этот у этого с этими Ардуинами проблема с библиотекой PulsePosition, так как она заточена, я так понял, под ардуино-совместимых плат Teensy.

https://github.com/docice/MavLink2iBUS2PPM

И поэтому этот проект не компилируется в ARDUINO_AVR_YUN, ARDUINO_AVR_LEONARDO and AVR_ATmega32U4

 

И еще Вы писали Вход пин 13, выход PPM пин 5 это про какой скетч?

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

То-есть, без верхнего (на вашем рисунке) блока команды проходят?

5 пин нижней ардуины это выход PPM

AlexAndryF
Offline
Зарегистрирован: 28.06.2020

Нет не проходят. Команды с приемника выходят с порта SERVO в виде ШИМ-сигнала в IBUS формате и этот сигнал никак не заводится в нижний блок. Поэтому его и нет. А как завезти его в нижний блок ума не приложу. Сам нижний блок сейчас служит для отправки с АПМ показания телеметрии.

Команды с порта SERVO в виде ШИМ-сигнала служат в основном для управления моделью в реальном времени: вправо, влево, назад, вперед, стоп, включить фару.

Есть другие команды для АПМ которые могут управлять контроллером АПМ: идти домой, запомнить точку, идти на выбранную точку. Сейчас эти команды можно отдавать только с Мишен планера или др. аналогичной программы в формате Mavlink. Я хочу прописать в блоке команду для АПМ в формате Mavlink (к примеру "Иди на точку А") и чтобы при определенной комбинации с порта SERVO в виде ШИМ-сигнала, блок отправил эту команду в АПМ.

Поэтому необходимо, чтобы нижний блок мог считывать ШИМ-сигналы с порта SERVO.

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

Прошивка верхнего девайса IBUS-PPM уже включена в прошивку нижнего девайса IBUS-Mavlink, выход, исходя из текста ppm.h - 5 пин, что вход - не смотрел, автор нижнего девайса как раз и есть автор прошивки передатчика флайскай на 14 каналов

AlexAndryF
Offline
Зарегистрирован: 28.06.2020

Так и есть, я с ним на эту тему списывался. вот его ответы

Привет, к сожалению, он просто перевел Mavlink и передал его на радио Flysky в качестве данных IBUS.

Но у нас есть около 4 байтов данных канала, которые можно использовать для отправки команды в APM, но это будет сложной задачей. Хотите услышать подробности?

Mavlink To IBUS говорит по протоколу MAVLINK с одной стороны.

Другой конец использует протокол телеметрии IBUS, предназначенный только для передачи телеметрических данных, то есть данных с эмулируемых датчиков.

Однако, используя ia6b с «тем же последовательным» путем, вы можете получить в arduino также данные канала.



Данные канала преобразуются в выходные данные PPM. Но у нас есть 14 каналов. В файле

https://github.com/qba667/FlySkyI6/b...e/source/alt.c есть метод



createPacketCh1114 (но он создает данные канала для каналов 7-14.



Здесь начинается волшебство, вы можете вывести все, что вы хотите для этих каналов.

Затем проанализируйте его в MavlinkToIbus - так вы создадите новый мост IbusToMavlink, и связь будет двунаправленной!

 

Но для меня это пока сложновато.

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

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

PS Брокли! Уважаю! Интуиция у тебя отменная! )))

AlexAndryF
Offline
Зарегистрирован: 28.06.2020

Все ясно.

brokly
brokly аватар
Offline
Зарегистрирован: 08.02.2014

ua6em пишет:

Брокли! Уважаю! Интуиция у тебя отменная! )))

Ошибаешься, это не интуиция.

Эта задача решаема, просто ее стоимость, в моем исполнении, не устроит частника :)

AlexAndryF
Offline
Зарегистрирован: 28.06.2020

И во сколько это оценивается в Вашем исполнении?

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

brokly пишет:

ua6em пишет:

Брокли! Уважаю! Интуиция у тебя отменная! )))

Ошибаешься, это не интуиция.

Эта задача решаема, просто ее стоимость, в моем исполнении, не устроит частника :)

если сам автор сказал, что очень сложно, то понятно, что очень дорого и то это будут обычные костыли...
Канал телеметрии стоит 1000 рублей, простенький планшетик или смартфон с USB-OTG 3-5 т.р. и, смысл ???
TOWER сейчаc недоступен в магазине гугла, но можно скачать, зато имеем - полноценная карта, координаты и высота в реальном времени и масса сервиса

А вообще, лично я так и не понял, что автору нужно, чем не устроил режим AUTO )))
 

brokly
brokly аватар
Offline
Зарегистрирован: 08.02.2014

AlexAndryF пишет:

И во сколько это оценивается в Вашем исполнении?

Для вас 800 рублей/час :)

AlexAndryF
Offline
Зарегистрирован: 28.06.2020

И сколько ориентировочно займет времени?

AlexAndryF
Offline
Зарегистрирован: 28.06.2020

Согласен с Вами, я так сейчас и управляю, но хотелось бы иметь возможность отправлять на точку модель и с пульта тоже, днем когда яркое солнце экран смартфона бликует и плохо видно экран, а тут включил определенную комбинацию на пульте и все. Поэтому и хочу выяснить во сколько это встанет?

AlexAndryF
Offline
Зарегистрирован: 28.06.2020

del

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

так отправляйте, взлетел, щёлкнул тумблером режим AUTO он и пошёл )))

AlexAndryF
Offline
Зарегистрирован: 28.06.2020

В режиме AUTO модель движется по всем точкам поочередно, а хотелось бы конкретно, на выбранную. Сейчас это возможно только в режиме Guided и только со смартфона.