Создание собственной системы стабилизации

dima043

Я видел как ар117 была спалена в поле при правильном подключении полярности и входов просто путем перепутывания при подключении одинаковых разьемов от ходовой батарей (4s) и от батареи для камеры, осд и в.передатчика (она 3s). Дык вот та телеметрия тоже начала грется и ничего не выдавала. Починили правда довольно быстро.

razval72
dima043:

Я видел как ар117 была спалена в поле при правильном подключении полярности и входов просто путем перепутывания при подключении одинаковых разьемов от ходовой батарей (4s) и от батареи для камеры, осд и в.передатчика (она 3s). Дык вот та телеметрия тоже начала грется и ничего не выдавала. Починили правда довольно быстро

А как починили то !??? я хоть и не переполюсовывал подключение но ОСД греется сильно (сняв с нее корпус и пощупав даже слегка обжогся )
дело в том что я прежде чем все подключить несколько раз проверил и тем более это у меня такой второй комплект … его подключал так же и все было без проблем !!! вывод с рук покупать не стоит , хотя сколько раз покупал и сам продавал все было хорошо … а бывший хозяин данного комплекта говорит что перед отправкой сам лично проверял - что все работало и надпись FeyTech была … хоть он к камере ее и не подключал теперь сложно сказать что и как, кто прав кто виноват потому что после получения и заверения что все рабочее не сразу проверил вот теперь пытаюсь как то решить эту проблемму .
А ни кто не знает может кто нибудь из наших (летунов) может починить ОСД или нужно искать и покупать новую , кстате какие еще осдешки совместимы с 21 фишкой - может есть что то лудшее чем осд117 !??

Android1

Господа, у кого есть осд 117 посмотрите на плате датчика тока номиналы резисторов - там их всего два.

bes13

Если смотреть от силовых разъемов то первый 1к (102),затем стоит кондер,последним стоит предохранитель (очень похож на резюк,но сопротивление его 0ом).

dima043

Сегодня при попытке подключить вторую телеметрию(для антенного трекера с берца) впараллель к фишкиному GPS и что то сгорело. Вернее один полет все это работало и немного второго полета а потом спутников стало 00.

Пробую разобраться - проблема именно в фишке - не идет питание 3.3 вольта для GPS. И сам GPS походу тоже сдох (на другой фишке он не работает). Я понимаю где то должен быть стабилизатор этих 3.3 вольт. Но где он ?
Внешне горелых компонентов в фишке не видно.

Заменил модуль GPS и подал на него 3.3 вольта от внешнего источника - вроде синий светодиод внутри фишки мигает есть надежда что вход цел.

Да проверил сейчас спутники видит.УРА!!! Надо только найти питание GPS.

baychi
dima043:

Надо только найти питание GPS.

GPS питается от отдельной КРЕНки (микросхема в 4-х выводном корпусе, три вывода с одной стороны, 4-й (широкий) - с другой). Найти ее очень просто, - достаточно прозвонить цепь питания GPS.
Странно то, что сжечь КРЕНку очень непросто - она защищена от КЗ и всех видов перенапряжения. Проверьте сначала танталовый конденсатор на выходе КРЕНки, возможно он сгорел и коротит выход.

PLA

Добрый день! Получил комплект FY-31 и OSD Hornet, подключил.
OSD HORNET у меня работает следующим образом, 25 сек горит светодиод и выводится надпись FY HORNET V1.0, затем светодиод мигает и выводится, если подключен датчик GPS, экран с телеметрией на 20сек. Затем телеметрия гаснет, светодиод на секунду тухнет потом загорается вновь и далее по циклу - горит 25сек, мигает 20сек, гаснет на 1сек и т.д. Еще, если датчик GPS не подключен, то экран с телеметрией не выводится, а горит только надпись NTSC. Режимы экранов переключаются, датчик тока работает. Че-то как-то странно это OSD работает.Можете прокомментировать ситуацию и как ее исправить ?!?!?
З.Ы. Корпус Хорнета теплый - градусов 40, похоже линейный стабилизатор греется, прикинул по току он ест 150 ма, т.е. 1 вт ему рассеять по любому надо.

baychi
PLA:

Еще, если датчик GPS не подключен, то экран с телеметрией не выводится, а горит только надпись NTSC.

А если не GPS, а сам FY-31AP подключить( а к нему кже gPS), как положено?

PLA:

Корпус Хорнета теплый - градусов 40, похоже линейный стабилизатор греется, прикинул по току он ест 150 ма,

А там точно линейный стабилизатор? В AP117 - стоит импульсник. Иначе от 6S он бы утюгом работал. 😃

PLA

Подключать полный комплект я пока не пробовал. А разве OSD отдельно не функционально? Оно ведь даже без GPS антенны идет в продаже!!! По поводу линейного стабилизатора лишь догадки, я корпус его не разбирал, заметил тепло очень - померил ток, удивился че-так много жрет, предположил что стабилизатор.

baychi
PLA:

А разве OSD отдельно не функционально?

AP117 требует подключения либо GPS, либо FY-21/31/91… Хорнет щупать не доводилось.
PS: Попробуйте замерить ток с GPS и без. Ваши симптомы напоминают перегрев 3.3 В линейного стабилизатора (сам он питается от 5 В), питающего GPS. Когда стабилизатор вырубается, пропадает картинка…

PLA

Ток мерил. GPS увеличивает ток на 30-50 мА. Без него работает в той же цикличности, только вместо картинки телеметрии надпись <NTSC>. Надо попробовать вместе с фишкой его запустить будет. Или может перепрошить ее новой версией ??? У кого HORNET OSD проверьте - скажите как он должен работать !!!

nedz

народ, подскажите пожалуйста, полет с 30ф. чем отличается от 20?
Сегодня проверял ф30, управление на 3х позиц. тумблере… 1-выкл, 2- 3д, 3-стаб.
при 3 режиме держу самолет в горизонте (Х8), делаю крен, фишка его соответственно правит.
при 2 режиме - то же самое!!! т.е. если у 20 во 2 режиме резко качнул например крен на 45гр. и такой крен оставил, то фишка отработала и вернула элевоны в центр…
А у 30ой их надо стиком возвращать! если в положении крена включить 3 режим, то соответственно фишка топырит элерон и пытается крен убрать.
Вот и не пойму, как во 2ом режиме летать…
Прошу сильно не поливать кетчупом, уж больно тема разрослась, тяжело искать инфу по каждой фишке.
кстати, ее вроде как и 20ую(старую) сняли с продаж!
Заранее спасибо отозвавшимся!

SkyWorker

А зачем Вам для ФПВ 3Д режим? Уберите его вообще, сделайте только стабилизация и офф.

nedz
SkyWorker:

А зачем Вам для ФПВ 3Д режим? Уберите его вообще, сделайте только стабилизация и офф.

ну например на фелконе с 20ф, я летал фвп в 3д режиме (всего 3-4 полета на 300м), так 20ая просто помогает держать горизонт, а в режиме стаб, очень тяжело управлять (летал то почти всегда по кругу).
значит, я понял, что 3д режим совсем убрать? в фвп он не используется? тогда можно на 2х позиц. тумблер фишку повесить?

pivankin
PLA:

Ток мерил. GPS увеличивает ток на 30-50 мА. Без него работает в той же цикличности, только вместо картинки телеметрии надпись . Надо попробовать вместе с фишкой его запустить будет. Или может перепрошить ее новой версией ??? У кого HORNET OSD проверьте - скажите как он должен работать !!!

новая прошивка влияет только на наземку
у Вас появлялась телеметрия?
если нет то Вы провод, который идет от 31 фишки наоборот воткните, там концы не одинаковые
и еще попробуйте с другой камерой

razval72

Мужики , а кто может починить ОСД 117 !??? Проблемма с ней описанна чуть выше , а то лежит как чемодан без ручки и нести тяжело и выкинуть жалко ( тем более что она новая ) есть же тут среди нас мастера которые с электроникой на ты !!! (пересыл оплачу в обе стороны)
а может можно отправить им(берцам) обратно на ремонт - мне и камеру от туда же нужно починить 181 Кто знает - поделитесь инфой !!!

serpantins

Парни, кто еще не обновился, новая прошивка для FY-30A firmware V1.15

Feiyu product FY-30A firmware for fixed-wing has been upgraded to version 1.15.
The updatings are following:
1.improve the vibration protection in Stabilization Mode.
качаем тут www.feiyu-tech.com/uploads/…/20120229142254.rar

pivankin
razval72:

а может можно отправить им(берцам) обратно на ремонт - мне и камеру от туда же нужно починить 181 Кто знает - поделитесь инфой !!!

отправляйте им, они заменят на новую

serpantins

что то фейтеховцы совсем с прошивками лажают…залил 1,15 …так матерился, тестирую в режиме стабилизации…да дойдут до них мои проклятья…малость остыл…и как учили в соседней ветке, стал трясти из стороны в сторону самик и при этом медленно задирать нос к верху и так почти под 90 градусов…потом опустил в горизонталь и на те …руль высоты этак градусов на 20 вниз встал …привет планета…м_л_я_т_ь…какие же они у_р_о_д_ы…собрать все факты и коллективно в мировой суд…за материальный ущерб уже побитых самолетов по их вине, и как у нас любят “за возможно причиненный ущерб в будущем”…судя по западной практике, такое дело можно выиграть…
Так хочу приехать в Китай и забросать их помидорами😁

dima043

У меня вопрос по фишкиному модулю GPS. Почему он может плохо ловить спутники ? Купил вместе с подержаной 21 фишкой он ловит 3 или 4 спутника на земле в полете максимум 5. Переставляеш на его место GPS с другой фишки и тот ловит - 9 или 10 в тех же условиях. Я спрашивал бывшего хозяина говорит всегда так было. Может это можно поправить ? Куда в первую очередь смотреть ?

Еще один модуль совсем отказал - временно поставил от циклопа.

baychi
dima043:

У меня вопрос по фишкиному модулю GPS. Почему он может плохо ловить спутники ? Купил вместе с подержаной 21 фишкой он ловит 3 или 4 спутника на земле в полете максимум 5. Переставляеш на его место GPS с другой фишки и тот ловит - 9 или 10 в тех же условиях.

А где и как стоит? Не рядом ли с самой Фишкой?
При неоптимальной установке - разница между экземплярами может быть весьма значительной.
Вот если-б первый совсем не ловил - дело скорее всего в опаявщейся антенне было-б (у меня после крашей такое случалось). Лечится - пропайкой модуля GPS на плате.

dima043
baychi:

А где и как стоит? Не рядом ли с самой Фишкой?

да он стоит прямо рядом с фишкой верхом на ap117 под крылом. Этот самолет я готовый купил по случаю (это скай бальзово-композитный). Надо будет перекомпоновать. Смутило то что второй модуль, взятый на поле со второй модели ловил спутники вполне хорошо.

baychi
dima043:

рядом с фишкой верхом на ap117 под крылом.

Оттащите подальше. В фишке похоже частота проца мешает GPS. А в 117-м - импульсный БП. Да и вообще - GPSу показано чистое небо и удаление от любого металла.

IL76MD

Есть вопросик по 31й.
Подскажите, пжлста, можно ли НЕ подключать канал управл мотором к 31й. А то чего то не нравится, что движок перестал совсем управляться, пока не сделал рестарт 31й по питанию.
Перестал управляться на земле к счастью, а не в полёте, после того как я поигрался с оборотами.
Т.е. когда всё включено, то двиг начинает уже работать, хотя на АППе нуль.
Oн управляется, но не с нуля, а уже какие то обороты есть.
Как то необычно брать модель в руки для запуска с уже работающим движком, приходится убавлять, убавлять и в конце концов двиг перестал вообще управляться.
Пришлось перезапускать основное питание ЛА.
Т.е. можно ли канал двигат 31й подключить к любому на Rх, как у 30й, а мотор напрямую, как обычно?
У моей 31й базовая конфиг, только FY31 + GPS.
Спасиба.

vovan1972
IL76MD:

Есть вопросик по 31й.
Подскажите, пжлста, можно ли НЕ подключать канал управл мотором к 31й. А то чего то не нравится, что движок перестал совсем управляться, пока не сделал рестарт 31й по питанию.
Перестал управляться на земле к счастью, а не в полёте, после того как я поигрался с оборотами.
Т.е. когда всё включено, то двиг начинает уже работать, хотя на АППе нуль.
Oн управляется, но не с нуля, а уже какие то обороты есть.
Как то необычно брать модель в руки для запуска с уже работающим движком, приходится убавлять, убавлять и в конце концов двиг перестал вообще управляться.
Пришлось перезапускать основное питание ЛА.
Т.е. можно ли канал двигат 31й подключить к любому на Rх, как у 30й, а мотор напрямую, как обычно?
У моей 31й базовая конфиг, только FY31 + GPS.
Спасиба.

У меня 21 фишка, поэтому канал газа ( с регулятора) напрямую подсоединен в RX.
А что изменится если в 31 так же поступить???
Или я чего то не понимаю???

IL76MD
vovan1972:

У меня 21 фишка

Правильно, у меня есть и 21я тоже, к ней вопросов нет.
А с 31й вожусь впервые, вдруг чего недопонял.
Короче, вопрос уже не вопрос. Сегодня слетал с 31 без подключения двига к ней. Всё хоккей.
А с ESC похоже, контроллер сдох, когда подлючал к фишке, или это совпало. Много всякого повылезало;
контроллер, например, исправно работал, пока не подключал к фишке. А теперь, уже и напрямую плохо работает.
Пришлось поменять.
Конечно, больше не буду подключать через фишку. Режим возврата домой и так работает.

mataor
Gene:

Я не совсем понял идет ли речь о MPU6000 или MPU6050

насколько помню они совместимы, различие в том, что в 6050 только и2с, а в 6000 еще SPI есть.

Sir_Alex
Gene:

Я не совсем понял идет ли речь о MPU6000 или MPU6050? В коде библиотеки я не нашел упоминания о второй. Или они полностью совместимы?

Я говорил про MPU6050 подключенный по I2C, но 6000 то же самое, только он еще может работать через SPI. Через SPI естественно еще быстрее будет прочитать регистры.
Через SPI работает библиотека ArduCopter’a

oleg70

Вопрос программистам: настраиваю пины под usart по типу:
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;
т.е. в регистр MODER ставлю тип ноги “AF”, далее надо как то указать что мне на этой ноге нужен именно USART, но как ?
Есть регистр (два) AFR для IO, есть функция его настройки, но в хедерах в качестве параметров для нее только безликие GPIO_Mode_AF_х…
Где найти однозначное соответствие между _AF_x и устройством ?
Как вообще ремаппинг правильно делается ?
Прошу подсказки…

rual
oleg70:

Как вообще ремаппинг правильно делается ?

это не про Ф3, ремапинг это Ф0,1,4. Изначально под функцию предназначены выводы определенного порта, ремапинг переключает на другие фиксированые группы выодов, порт достаточно перевести в алтернативный режим и всё.

oleg70:

Прошу подсказки…

Для Ф3 немного по другому

 /* подадим такт на порт */
  RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOC, ENABLE);
  /* настройка выводов порта */
  GPIO_InitStructure.GPIO_Pin  = GPIO_Pin_4|GPIO_Pin_5;
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  GPIO_InitStructure.GPIO_Mode  = GPIO_Mode_AF;
  GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
  GPIO_InitStructure.GPIO_PuPd  = GPIO_PuPd_UP;
  GPIO_Init(GPIOC, &GPIO_InitStructure);

  /* Соединим выводы портов с AF7 */
 GPIO_PinAFConfig(GPIOC, GPIO_PinSource5, GPIO_AF_7);
 GPIO_PinAFConfig(GPIOC, GPIO_PinSource4, GPIO_AF_7);

Не претендую на точность изложения, но GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF; указывает на то что вывод порта будет пользован альтернативной функцией, а функция для вывода порта выбирается GPIO_PinAFConfig(GPIOC, GPIO_PinSource4, GPIO_AF_7);
номер функции GPIO_AF_7 берётся из таблицы, найдите сами в ДС.

Alexsis1109
mataor:

посмотрите для примера код мультивия - будет понятно.

с удовольствием, можно ссылочку?

Sir_Alex:

Обработку??? Чтение барометра занимает порядка 200-300мкс (я точно не помню по BMP085), накиньте еще 50-100мкс на обсчет давления и температуры.

если я правильно понял, все обращения к датчикам и сбор с них информации происходит как бы в свободное время между чтения каналов ШИМа РРМ сигнала?

Alexsis1109

вот правильно ли я делаю: завожу счетчик на 10 мкс и начинаю смотреть состояние 1 канала РРМ сигнала. если после “0” пришла “1” начинаю подсчет длительности ШИМа с интервалом 10мкс. после того как настал “0” значит ШИМ закончился, запоминаю результат и перехожу к опросу 2 канала. И так же если после “0” пришла “1” начинаю подсчет длительности и так все 7 каналов приемника. Правильный ли метод? В таком случае, длительность ШИМа можно посчитать с точностью ±10мкс, что на практике выходит очень и очень грубо. Я так понимаю нужна точность как минимум 1мкс. Но счетчик отказывается работать быстрее чем 5 мкс. В чем дело? И кто с какой точностью считывает ШИМ с приемника?

rual
Alexsis1109:

вот правильно ли я делаю

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

Alexsis1109
rual:

Все совсем не так…

рабочий код вижу. расскажите, пожалуйста, в двух словах суть самого процесса считывания ШИМа, чтобы лучше код осмыслить…

Sir_Alex
Alexsis1109:

если я правильно понял, все обращения к датчикам и сбор с них информации происходит как бы в свободное время между чтения каналов ШИМа РРМ сигнала?

Ага, вроде того, но не совсем. Вам надо обрабатывать PPM, Датчики - по прерываниям. Т.е. у вас постоянно крутится основной цикл программы, который занимается обсчетами углов, команд от пользователя, телеметрией и др. делами. И когда приходит прерывание от барометра, вы читаете его новое значение и запоминаете, дальше управление возвращается в главный цикл. Когда приходит прерывание от PPM, считаете ширину импульса очередного канала, как только прочитали весь пакет, записываете в переменные, которые потом читаются из главного цикла. Ну а главный цикл постоянно что то обсчитывает и выдает результат в виде управляющих сигналов на моторы.

Все это утрированно, т.к. датчики могут быть и не подключены с использованием прерываний (как правило этот вывод называется INT). Тогда вам надо отсчитывать определенное время в главном цикле и если например прошло 9ms, можно прочитать свежее значение барометра.

Alexsis1109
Sir_Alex:

Когда приходит прерывание от PPM

т.е. на каждый канал приемника нужно завести в контроллере свое прерывание? и по “1” начинать его измерять?

Sir_Alex:

считаете ширину импульса очередного канала

ширина импульса, на сколько я понимаю, считается с помощью счетчика (таймера) и чем чаще этот счетчик тикает тем точнее можно измерить длительность ШИМа. так? если это так, то с какой максимальной точностью можно измерить ШИМ в Atmega128? у меня завести таймер быстрее 5мкс не получалось, он переставал работать

mahowik
rual:

Всё правильно, вот только в этом этом режиме АППАРАТ не знает своё положение в пространстве, а просто пытается удерживать заданные Р/У угловые скорости.

это 3D (акро) режим, который есть почти во всех полетных контроллерах…

Sir_Alex
Alexsis1109:

т.е. на каждый канал приемника нужно завести в контроллере свое прерывание? и по “1” начинать его измерять?

Так вам надо работать с PPM (8 каналов передается по одному проводу) или PWM (передается каждый канал по своему проводу)?
Для PPM вешается одно прерывание на один вывод процессора, ловим переход из 0 в 1. Ширина импульса будет равна времени между двумя прерываниями.
Для PWM - зависит от возможностей процессора. Если есть возможность повесить 8 аппаратных прерываний -вперед. Но можно и одним обойтись и проверять какие пины изменили свое состояние, тут надо естественно ловить оба перехода из 0 в 1 и из 1 в 0.

Alexsis1109:

ширина импульса, на сколько я понимаю, считается с помощью счетчика и чем чаще этот счетчик тикает тем точнее можно измерить длительность ШИМа. так? если это так, то с какой точностью можно измерить ШИМ?

Ну например в МегаПирате, точность таймера 0.5мкс, этого достаточно. Можно и точнее, но нет в этом смысла.

mahowik
mataor:

П.С. гдето уже писал… так вот опробовал опрос датчиков на и2с 800кГц - все отлично работает, цикл в вие сразу упал примерно на 500мкс

ну тыж понимаешь, что это не штатный режим и тут уже как карта ляжет… выйдешь на мороз, какой нить из параметров подплывет и привет кирпич Ж)

Alexsis1109
Sir_Alex:

Так вам надо работать с PPM (8 каналов передается по одному проводу) или PWM (передается каждый канал по своему проводу)?

у меня аппаратура Futaba 7C, там, на сколько мне известно PPM сигнал. просматривая осцилом каналы приемника, заметил странную вещь. условно возьмем 1 и 2 канал. так вот ШИМ 1 канала изменялся влево, а ШИМ 2 канала изменялся вправо. Т.е. у них как бы была общая стеночка по середине. Для первого канала эта стеночка была концом, а для 2 канала началом.тогда в этом случае захватив переход из 0 в 1 первого канала можно “пролететь” аж в конец второго о_0. Вы с таким сталкивались? а все остальные каналы начинаются нормально, слево начало и увеличивают шим вправо.

Sir_Alex:

Ну например в МегаПирате, точность таймера 0.5мкс, этого достаточно. Можно и точнее, но нет в этом смысла.

Вы не знаете, можно ли на Atmega128 завести таймер на 0.5мкс? У меня уже при 5мкс он переставал работать, зависал… в чем тут может быть дело?

SergDoc
    if (usePPM) {
        // Configure TIM2_CH1 for PPM input
        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPD;
        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz;
        GPIO_Init(GPIOA, &GPIO_InitStructure);

        // Input timer on TIM2 only for PPM
        NVIC_InitStructure.NVIC_IRQChannel = TIM2_IRQn;
        NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;
        NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;
        NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
        NVIC_Init(&NVIC_InitStructure);

        // TIM2 timebase
        TIM_TimeBaseStructInit(&TIM_TimeBaseStructure);
        TIM_TimeBaseStructure.TIM_Prescaler = (72 - 1);
        TIM_TimeBaseStructure.TIM_Period = 0xffff;
        TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;
        TIM_TimeBaseInit(TIM2, &TIM_TimeBaseStructure);

        // Input capture on TIM2_CH1 for PPM
        TIM_ICInitStructure.TIM_ICPolarity = TIM_ICPolarity_Rising;
        TIM_ICInitStructure.TIM_ICSelection = TIM_ICSelection_DirectTI;
        TIM_ICInitStructure.TIM_ICPrescaler = TIM_ICPSC_DIV1;
        TIM_ICInitStructure.TIM_ICFilter = 0x0;
        TIM_ICInitStructure.TIM_Channel = TIM_Channel_1;
        TIM_ICInit(TIM2, &TIM_ICInitStructure);

        // TIM2_CH1 capture compare interrupt enable
        TIM_ITConfig(TIM2, TIM_IT_CC1, ENABLE);
        TIM_Cmd(TIM2, ENABLE);

        // configure number of PWM outputs, in PPM mode, we use bottom 4 channels more more motors
        numOutputChannels = 10;
    } else {
        // Configure TIM2 all 4 channels
        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_2 | GPIO_Pin_3 | GPIO_Pin_4;
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPD;
        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz;
        GPIO_Init(GPIOA, &GPIO_InitStructure);

        // TODO Configure EXTI4 1 channel

        // Input timers on TIM2 for PWM
        NVIC_InitStructure.NVIC_IRQChannel = TIM2_IRQn;
        NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;
        NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;
        NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
        NVIC_Init(&NVIC_InitStructure);

        // TIM2 timebase
        TIM_TimeBaseStructInit(&TIM_TimeBaseStructure);
        TIM_TimeBaseStructure.TIM_Prescaler = (72 - 1);
        TIM_TimeBaseStructure.TIM_Period = 0xffff;
        TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;
        TIM_TimeBaseInit(TIM2, &TIM_TimeBaseStructure);

        // PWM Input capture
        TIM_ICInitStructure.TIM_ICPolarity = TIM_ICPolarity_Rising;
        TIM_ICInitStructure.TIM_ICSelection = TIM_ICSelection_DirectTI;
        TIM_ICInitStructure.TIM_ICPrescaler = TIM_ICPSC_DIV1;
        TIM_ICInitStructure.TIM_ICFilter = 0x0;

        for (i = 0; i < 4; i++) {
            TIM_ICInitStructure.TIM_Channel = Channels[i].channel;
            TIM_ICInit(Channels[i].tim, &TIM_ICInitStructure);
        }

        // TODO EXTI4

        TIM_ITConfig(TIM2, TIM_IT_CC1 | TIM_IT_CC2 | TIM_IT_CC3 | TIM_IT_CC4, ENABLE);
        // TODO EXTI4
        TIM_Cmd(TIM2, ENABLE);

        // In PWM input mode, all 4 channels are wasted
        numOutputChannels = 4;
    }

так на всякий… это к фишке 90-й если чё…

я тут с портами навоевался, аж башка трешит - мысли через уши лезут, этож блин пол кодятника перелопатил, вроде как настроил входы - выходы, SPI под мпу и spi под флешку, i2c, компилится, да вот проверить не на чем, щас смотрю - надо было со старой прошивки начинать, она бы и vet6 влезла, жду апреля…

rual
Alexsis1109:

рабочий код вижу. расскажите, пожалуйста, в двух словах суть самого процесса считывания ШИМа, чтобы лучше код осмыслить…

У обычного таймера СТМ32 всего один вектор прерываний, но события, с которыми он в этот вектор выпадает, могут быть разными или набором событий. У таймера есть 4 входа захвата ШИМ, используем их соответственно для каждого канала РУ.
Алгоритм для одного канала такой:

  1. Проверяем наличие флага захвата канала, если нет переходим к следующему каналу п4.

  2. Если порт в “1”,
    то перенастраиваем канал на приём спада,
    сохраняем значение из регистра захвата в буфере.

  3. Если порт “0”,
    перенастраиваем канал на приём фронта,
    делаем беззнаковое вычитание буфера из регистра захвата (получаем длительность в тактах таймера),
    обнуляем счётчик пропусков.

  4. … здесь аналогично остальные каналы …

  5. Если установлен флаг переполнения, то увеличиваем счётчики пропусков всех каналов.

  6. сбрасываем все флаги.
    Но это для СТМ32 (я для oleg70 писал), для АВР по другому (я бы сказал намного хуже).

mahowik:

это 3D (акро) режим, который есть почти во всех полетных контроллерах…

я не делал отдельный режим, у меня все режимы влияют только на вращение управляющего кватерниона, задаётся либо наклон, либо скорость вращения вокруг соответствующей оси. АП просто пытается привести текущее положение к заданому.

SergDoc:

аж башка трешит - мысли через уши лезут, этож блин пол кодятника перелопатил

Вот поэтому я и пишу своё, только иногда иногда что то заимствую. В вий и пират мне страшно заглядывать ( да и не нужно уже 😃).

oleg70

Как вариант измерения ШИМ: на каждую (желаемую) входную ногу “вешаем” отдельную однотипную функцию прерывания по обоим фронтам в которой:
1.если порт/бит =1 стартуем счетчик.
2.если порт/бит=0 останавливаем счет, пишем в переменную, обнуляем счетчик.
Плюсы (мое мнение):
1.однозначно определен номер канала
2.не нужно ничего вычитать
3.как следствие, лаконичней код обработчика прерывания.
Интересно Ваше мнение на этот счет ? (пока я не начал ковыряться с реализацией).

rual
oleg70:

Интересно Ваше мнение на этот счет ?

Работать будет, но сколько Вам потребуется счетчиков и входов прерываний? В п.2 сколько времени нужно для в хода в прерывание если оно не самое преоритетное, такты не пропустите?

oleg70:

пока я не начал ковыряться с реализацией

А Вы попробуйте! Возможно появится стимул изучить подробней возможности перифирии, а она у СТМ32 зело способная 😃

Sir_Alex

Оптимальный вариант, использовать ICP пины, по одному на каждый канал. Естественно, если процессор это позволяет. В большинстве случаев, приходится извращаться, т.к. доступен бывает только один таймер и что хуже всего, при изменении одного из 8 пинов, приходит одинаковое прерывание. Но это все фигня и вполне, даже AVR вполне с этим справляется.
В сети можно найти кучу реализаций обработки PPM или PWM. Начиная от multiwii и пирата, потом PPM Encoder у Ардукоптера. Ну хватает опенсорсных проектов под STM32… Зачем изобретать велосипед???

oleg70
Sir_Alex:

Зачем изобретать велосипед???

Мыж тут о “собственной системе стабилизации” размышляем, потому и пост…
Если велосипед едет лучше мотоцикла, почему не попробовать изобрести,
а так то конечно “все давно придумано”.
Думаю так: готовых проектов много, общие принципы ясны, разница только в подходах к реализации (как раз в этих мелочах типа приоритетов и методов) и результаты у разных систем особенные… что собственно и интересно…

RaJa

Подскажите, пожалуйста проекты на STM32F103 и на STM32F4 с открытым исходным кодом, чтобы не изобретать велосипед.
Я нашел:
OpenPilot вроде под STM32F103 - хорош, но специфический набор датчиков (у меня их нет) и структура такая, как будто они винду пишут на МК.
Afroflight - вроде ничего, под какой именно МК не знаю
APM32 (Flymaple, если я ничего не напутал)- ардуино-подобная мешанина в коде под F4
MultiPilot32?
У меня есть комплект сенсоров L3G4200D, HMC5883L, BMP085, ADXL345. А также у друга лежит ITG3200+ADXL345. Вот под них и хочу код надергать.

SergDoc
RaJa:

У меня есть комплект сенсоров L3G4200D, HMC5883L, BMP085, ADXL345. А также у друга лежит ITG3200+ADXL345. Вот под них и хочу код надергать.

Naze32 на F103 все эти датчики поддерживает сразу, мультипилот есть под 103 есть под407 - но под ваши датчики всё переписывать надо, как в принципе и ОпенПилот СС, СС3D - 103, Revo -405 и BMP выкиньте сразу…

Весна уже на дворе, какие разработки? уже летать надоооо 😃

Мультипилот, на мой взгляд не совсем хорошее решение, копаюсь в PWM и таймерах - бррр…

Sir_Alex
RaJa:

Afroflight - вроде ничего, под какой именно МК не знаю

F103

RaJa:

Подскажите, пожалуйста проекты на STM32F103 и на STM32F4

Посмотрите еще ArduCopter. Последние исходники уже написаны под разные платформы, в том числе и F4 (плата называется PX4). Правда это усложняет структуру кода, т.к. они пишут свой HAL под каждую платформу.
Multipilot32 вроде тот же ArduCopter портированный под железо VRBrain…

SergDoc:

Весна уже на дворе, какие разработки? уже летать надоооо

Мы в разных странах живем? У меня за окном сугробы по пояс 😃

rual
RaJa:

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

SergDoc:

Мультипилот, на мой взгляд не совсем хорошее решение, копаюсь в PWM и таймерах - бррр…

Вот неплохой проект code.google.com/p/gluonpilot/, aka Drinker подсказал, весь проект не смотрел, но ИМУ у него (то что на кватернионах) правильное. Именно АХРС советую, математика быстрая, горизонт устойчивый , думаю в свой пролект встроить.

Alexsis1109

Подскажите, пожалуйста, как завести таймер на Atmega128 на 0,5мкс для подсчета ШИМа??? У меня ниже 5мкс он виснуть начинает(((( может нужно как то специально его регистры конфигурить и еще чего?? подскажите, пожалуйста, кто знает как…