ArduCopter Mega: порт на обычную Arduino (тестим)
не тут?
#ifndef __AP_HAL_HAL_H__
#define __AP_HAL_HAL_H__
#include "AP_HAL_Namespace.h"
#include "../AP_HAL/UARTDriver.h"
#include "../AP_HAL/SPIDriver.h"
#include "../AP_HAL/AnalogIn.h"
#include "../AP_HAL/Storage.h"
#include "../AP_HAL/Console.h"
#include "../AP_HAL/GPIO.h"
#include "../AP_HAL/RCInput.h"
#include "../AP_HAL/RCOutput.h"
class AP_HAL::HAL {
public:
HAL(AP_HAL::UARTDriver* _uartA,
AP_HAL::UARTDriver* _uartB,
AP_HAL::UARTDriver* _uartC,
AP_HAL::I2CDriver* _i2c,
AP_HAL::SPIDeviceManager* _spi,
AP_HAL::AnalogIn* _analogin,
AP_HAL::Storage* _storage,
AP_HAL::ConsoleDriver* _console,
AP_HAL::GPIO* _gpio,
AP_HAL::RCInput* _rcin,
AP_HAL::RCOutput* _rcout,
AP_HAL::Scheduler* _scheduler,
AP_HAL::Util* _util)
:
uartA(_uartA),
uartB(_uartB),
uartC(_uartC),
i2c(_i2c),
spi(_spi),
analogin(_analogin),
storage(_storage),
console(_console),
gpio(_gpio),
rcin(_rcin),
rcout(_rcout),
scheduler(_scheduler),
util(_util)
{}
virtual void init(int argc, char * const argv[]) const = 0;
AP_HAL::UARTDriver* uartA;
AP_HAL::UARTDriver* uartB;
AP_HAL::UARTDriver* uartC;
AP_HAL::I2CDriver* i2c;
AP_HAL::SPIDeviceManager* spi;
AP_HAL::AnalogIn* analogin;
AP_HAL::Storage* storage;
AP_HAL::ConsoleDriver* console;
AP_HAL::GPIO* gpio;
AP_HAL::RCInput* rcin;
AP_HAL::RCOutput* rcout;
AP_HAL::Scheduler* scheduler;
AP_HAL::Util* util;
};
#endif // __AP_HAL_HAL_H__
AP_HAL::UARTDriver* uartA;
AP_HAL::UARTDriver* uartB;
AP_HAL::UARTDriver* uartC;
AP_HAL::UARTDriver* uartD;
до самого арду ещё не долез, у нас пока с nuttx напряги 😦
пробовал повторить сбой FS
Что скажите, Sir Alex? Это нормальная работа FS?
Что скажите, Sir Alex? Это нормальная работа FS?
Да, это нормально. Отключить RTL после сбоя можно только передернув режим (как бы мы говорим что все ОК, я у руля). А то что потом сработал дизарм - то же правильно. На земле, срабатывает LAND и тут же дизарм, т.к. коптер уже на земле. Короче, все как и задумано в ArduCopter, ну можно еще почитать у них на сайте, про ньюансы FS.
Sir Alex, как дела с портами? Есть ли идеи? Мне 1 порт не принципиален, можно и 3. Только в какую сторону копать?
Только в какую сторону копать?
А нельзя брать данные из MAVlink протокола?
Sir Alex, как дела с портами? Есть ли идеи? Мне 1 порт не принципиален, можно и 3. Только в какую сторону копать?
У меня на выходных комп накрылся, так что не мог посмотреть (материнка перестала запускаться). Вечером сегодня попробую.
Вечером сегодня попробую.
Спасибо. Буду ждать результата.
А нельзя брать данные из MAVlink протокола?
Не могу прочитать порт. 1 порт молчит. 3 порт на нестандартной скорости, похоже, работает. А скорость в коде найти не могу. 2 порт занят GPS. Я в новом коде вообще заблудился.
на 0 порту будет MAVlink на 115xxx, на 3 тот же MAVlink должен быть на 57600
но просто так отдавать не будет данные, надо какой то запрос отправлять сперва, тогда отдаст всё что надо… не разбирался в MAVlink, но можете глянуть код minimOSD, там 100% рабочий парсер протокола со всеми нужными запросами
но просто так отдавать не будет данные, надо какой то запрос отправлять сперва, тогда отдаст всё что надо…
Можно сделать так, что бы параметры отдавались после подачи питания, это уже много где описывалось, в разрезе minimOSD. Надо крутить параметры SR3_XXX
По сути, в MAVlink - вы подписываетесь на пакеты информации. Скажем вы можете сказать, присылать мне пакет с позицией коптера (GPS) с частотой 5Гц. А данные положения INS - с частотой 1Гц. Именно поэтому (потому что никто не сделал запрос данных) - и ничего не работает по умолчанию. Только Heartbeat будет присутствовать на Serial3.
Ага! Щас курю код minimosd-extra. А на какой скорости работает Serial3? Я не могу с помощью FTDI+Arduino’вского монитора порта увидеть heartbeat. Мусор сыпется.
heartbeat
Он и выглядит мусором, т.к. протокол бинарный. Скорость по умолчанию 57600.
Мда, посмотрел коды, почитал сайт по MAVlink`у, вещь конечно, сильная, но для моих целей черезчур сложная (см. код выше). А в 3.0.1 RemzibiOSD поддерживается? Там свой протокол, я его переделывал под свои нужды.
А в V3.0.1 R1 НЕТУ #define BOOTLOADER_BUGFIX "234fs34567hf ???
Или я не туда смотрю?
нету
Есть только в R2, но если почитать тему выше, то я описывал как эбойти этот баг ))
Перезалил бутлоадер из arduino 1.0.5. Больше проблем нет.
Похоже моя задачка останется без решения… Тогда такой вариант, отключить передачу МАВлинка на Сериал3 и писать туда свою строчку. Такое можно реализовать?
И может кто-нибудь ссылочкой поделиться на ресурс по МАВлинку где разжевывается все по полочкам, не могу найти кроме qgroundcontrol.org.
Похоже моя задачка останется без решения… Тогда такой вариант, отключить передачу МАВлинка на Сериал3 и писать туда свою строчку.
Я извиняюсь, у меня проблемы с компом, только вчера вечером восстановил его. Постараюсь сегодня попробовать набросать код.
Похоже моя задачка останется без решения…
Решил я вашу задачу, будет в R3.
😃😃😃 Большой рахмат!!! А R3 долго ждать?
Объясните кто-нибудь пожалуйста для чего этот фикс.
Upcoming in R3:
Main loop rate lowered to 100Hz (from AC 3.1)
Объясните кто-нибудь пожалуйста для чего этот фикс.
Потому что AVR не справляется все обрабатывать на 200Гц. Поэтому частоту опроса Гиры и Акселя снизили до 100Гц (Частота основного цикла завязана на частоту опроса гиры).