ArduCopter Mega: порт на обычную Arduino (тестим)

mahowik
Syberian:

Найти строку ( №125 ) i2c_write(0x18+4); // Internal Sample Rate 1kHz, 1…6: 1=200hz, 2-100,3-50,4-20,5-10,6-5 Заменить на i2c_write(0x18+2); // Internal Sample Rate 1kHz, 1…6: 1=200hz, 2-100,3-50,4-20,5-10,6-5

ето с 20hz на 98hz?
можно попробовать по идее смело и на 188hz врубить т.к. гиро оссобо не боится вибрации

i2c_write(0x18+1);

как раз имеет смысл если время цикла не более 5-6мс

Syberian:

у тебя не прописан инит PCINT - прерывания по входу ECHO
PCMSK0 = B00010000; // sonar port B4 - d10 echo
PCICR |= 1; // PCINT activated for PORTB

наставил Serial.println(“point_[N]”); в обработчки прерываний а также в setup() и loop()
в итоге картина такова: в обработчики и в loop() не заходит, а setup() вызывается в бесконечном цикле

есть идеи?

Sir_Alex

У меня сейчас мало времени на портирование (Я еще занимаюсь Русификацией электронных книг Kindle), но я почти закончил порт 2.1, осталось только проверить и допилить шероховатости. Я застрял на сборке нового коптера, старый разобрал, а на новый еще не успел установить мозги… Так что, Олег, подожди немного пока я не закончу, а дальше можем вместе что то делать. В старых исходниках не вижу смысла, пусть лежат на старом месте, можно туда сделать ссылку разве что.
Код под MS5611 написан, но не работает (пару человек пробовали), нужен человек понимающий код и с таким датчиком. Я не покупаю отдельно этот датчик, т.к. жду когда доделает новую платку Fabio (FreeIMU) с MS5611 и MPU6050 (тот, что стоит на новом APM 2.0) - у него были трудности с комплектухой, но в ближайшую неделю должны быть готовы. 😃

Sir_Alex
mahowik:

наставил Serial.println(“point_[N]”); в обработчки прерываний а также в setup() и loop() в итоге картина такова: в обработчики и в loop() не заходит, а setup() вызывается в бесконечном цикле есть идеи?

У тебя неправильно инициализировался Таймер5. В пирате используется еще канал B таймера, а у тебя его нет, но он инициализировался.
Замени код функции setup() на этот:

void setup() {
  // initialize the serial port, lets you view the
  // distances being pinged if connected to computer
  Serial.begin(115200);

 // Sonar INIT
//=======================
//D48 (PORTL.1) = sonar input
//D47 (PORTL.2) = sonar Tx (trigger)
//The smaller altitude then lower the cycle time
  cli();
  PORTH&=B10111111; // H6 -d9  - sonar TX
  DDRH |=B01000000;

  PORTB&=B11101111; // B4 -d10 - sonar Echo
  DDRB &=B11101111;

  TCCR5A = 0; //standard mode with overflow at A and OC B and C interrupts
  TCCR5B = (1<<CS11); //Prescaler set to 8, resolution of 0.5us
  TIMSK5 = B00000011; // ints: overflow, capture, compareA
  OCR5A = 65510; // approx 10m limit, 33ms period

  PCMSK0 = B00010000; // sonar port B4 - d10 echo
  PCICR |= 1; // PCINT activated for PORTB
  sei();
}

Кстати, спасибо за скетч, я пока сам ковырял, обнаружил багу с кодом сонара. Иногда происходит переполнение счетчика не успев обработать эхо сигнал от сонара. По уму надо это учитывать и кроме того измерения надо выполнять один раз за 5 переполнений счетчика (по спецификации на сонар, один цикл измерения не должен быть короче 150мс).

mahowik

спасибо огромное! попробую отпишусь.

Sir_Alex:

по спецификации на сонар, один цикл измерения не должен быть короче 150мс

ну да, по идее так для прохождения звуком 5м, как раз надо примерно 150мс…

а фикс на найденный баг уже есть?

Sir_Alex
mahowik:

а фикс на найденный баг уже есть?

Я в твоем скетче поправил, а в пирата пока не перенес.

mahowik
Sir_Alex:

Я в твоем скетче поправил, а в пирата пока не перенес.

проверил… терь все работает! спасибо еще раз!

з.ы. впилил в мультивий… циклтайм в порядке!
осталось alt pid регуль подпилить под него…

Sir_Alex

Что то я застрял на портировании 2.1.0.
Планер не может подключится к плате, вроде параметры успевает прочитать, а потом все… больше ничего не идет, как будто он теряет коннект. Даже не знаю, где искать ошибку…
Последние исходники лежат в SVN, в папке trunk, Олег, может то же посмотришь? Кстати, специальная версия для BV уже не нужна, последние прошивки отлично работают на BV.
Может это защита от Китайских друзей? Вроде DIYDrones обещали ее сделать…

DossJ
Sir_Alex:

Кстати, специальная версия для BV уже не нужна, последние прошивки отлично работают на BV.

Это радует 😃 , на выходных потестю.
а работу последних версий на BV с APC220 никто не проверял? т.к у меня на MegaPirateNG_2.0.49_BV_Beta_GPS_OK не работала связь на через APC.

Syberian, можете подсказать что изменить в прошивке что бы заработало E-OSD с вашей прошивкой?

Syberian
Sir_Alex:

Что то я застрял на портировании 2.1.0.

Чем 2.1 лучше 49? На 2-ке новая плата, датчики, новые баги. Здесь хотя бы с железом на пирате проблемы разгребли…
Сейчас выложу на NG свою сборку 49 под вортекс.

З.Ы. загрузил мултивий, думал, исправились за год. Нифига. Как прыгал на старте, так и прыгает. I в 0, помогло. Все равно стиками ловить приходится. Пират лучше конкретно для моего фрейма.

DossJ:

что бы заработало E-OSD

Его нужно прошить и подпаяться.
Описание здесь
rcopen.com/blogs/39391/12024
промотать до MegaPirate E-OSD

Sir_Alex
Syberian:

Сейчас выложу на NG свою сборку 49 под вортекс.

Зачем плодить версии под BV? MPNG beta4 - отлично должна работать с BV, если что то и дорабатывать, то в ней. А эти BV eddition надо вообще поудалять.

Syberian
Sir_Alex:

MPNG beta4

вот именно она и не детектит вортексную жпс. Я пробовал ставить в дефайнах вортекс напрямую - без результата. Пришлось с самолетной свою старую библиотеку пихать. С GPS_OK все нормально. Откатился.

Sir_Alex
DossJ:

Syberian, можете подсказать что изменить в прошивке что бы заработало E-OSD с вашей прошивкой?

Надо прописать в APM_Config.h:

#define OSD_PROTOCOL OSD_PROTOCOL_SYBERIAN

Там по умолчанию стоит OSD_PROTOCOL_NONE

Syberian:

вот именно она и не детектит вортексную жпс

Разумеется, потому что надо ее выбрать! GPS_PROTOCOL_BLACKVORTEX

Syberian

Можно вкратце, чем бета4 отличается от BV GPS OK принципиально? Какие фиксы?

Sir_Alex
Syberian:

Можно вкратце, чем бета4 отличается от BV GPS OK принципиально? Какие фиксы?

Только в том, что я сделал отдельный GPS протокол для BV. В остальном, прошивки идентичны.
Прошивку BV GPS OK сделал Сергей (CSG_EU) до того, как я выложил B4.

C 2.1 оказалось все немного сложнее… зато потом будет проще. Проблема оказалась в том, что в AC начали использовать специальный шедулер, который разруливал обработку датчиков по SPI шине. А компас и барометр работали по старинке, через I2c. Так вот у нас все датчики I2c и происходил конфликт чтения датчиков. Ну короче, я с этим разобрался. Пока отлаживаю на своем железе.

Sir_Alex

Поздравляю всех с наступающим Новым Годом!

Всем желаю, что бы летало! 😃

P.S. Ых, не успел я чуток с MPNG NY Eddition… На данный момент, я отладил драйвера сонара, барометра, гиры и акселя. осталось переделать драйвер компаса под новый шедулер и версия будет готова.

Geniok
Sir_Alex:

Поздравляю всех с наступающим Новым Годом!

Всем желаю, что бы летало! 😃

P.S. Ых, не успел я чуток с MPNG NY Eddition… На данный момент, я отладил драйвера сонара, барометра, гиры и акселя. осталось переделать драйвер компаса под новый шедулер и версия будет готова.

А под какую версию Arduini IDE планируется прошивка? Под IDE 1.0 не ожидается?

Syberian
Geniok:

Под IDE 1.0 не ожидается?

Разницы не будет. Ардуино 1.0 единственно отличается тем, что в ком-порт внедрили класс stream, что эквивалентно fastserialport в мегапирате - оно все равно оверрайдиться будет, так что можно обновляться. Я 49-ю версию на 1.0 компилировал - без изменений (летает так же круто) 😉
Всех с NY 😃

Geniok
Syberian:

Разницы не будет. Ардуино 1.0 единственно отличается тем, что в ком-порт внедрили класс stream, что эквивалентно fastserialport в мегапирате - оно все равно оверрайдиться будет, так что можно обновляться. Я 49-ю версию на 1.0 компилировал - без изменений (летает так же круто) 😉
Всех с NY 😃

Странно, я пробовал 49-ю в IDE 1.0 так замучился ошибки исправлять для компиляции. Вместо WProgram.h заменять на Arduino.h, плюс к этому теперь методы write(), print(), println() возвращают size_t вместо void и т.д.

Syberian

Подцепил к трикоптеру bvHUD. ФПВшить по комнате не решился 😃
Писалось на HDR1000D, кач-во SP (хвастаюсь)

Потеря линка вначале происходит всегда при первой активации моторов: NG калибрует гиру и основной цикл отключен.