MultiWii

Alexsis1109

Всем доброго времени суток! Кто-нибудь самостоятельно писал код для обработки ШИМа РРМ сигнала на контроллере Atmega? Я пытаюсь написать на Atmega128

mataor
Alexsis1109:

Кто-нибудь самостоятельно писал код для обработки ШИМа РРМ сигнала на контроллере Atmega? Я пытаюсь написать на Atmega128

блин… в одной теме тебе кучу вариантов предложили, а ты еще сюда полез. лезеш в исходники вия, конкретно в RX.ino - там все есть. Единственно тебе придется выдрать из ардуино и переделать для 128-й меги таймер системного времени и процедурку micros. Вперед.

Alexsis1109
mataor:

Единственно тебе придется выдрать из ардуино и переделать для 128-й меги таймер системного времени и процедурку micros. Вперед.

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

mataor

во первых - вопрос не для этой ветки.
во вторых - почему 128-я мега?
по обработке приемника неудобна - мало входов прерываний - всего 8, если использовать приемник с PPMSUM то норм (по одному проводу где), иначе все ноги входов прерываний нужно задействовать.
по таймеру: так и не сказали какой кварц?
настройка таймера по даташиту легко делается:
TCCR0 - установкой битов CS00-CS02 предделитель таймера
TCNT0 - сюда загружаем счетчик сколько считаем, в прерывании записываем значение вновь
TIMSK - устанавливаем бит TOIE0
для примера при кварце 16МГц предделитель 0 (CS00 = 1) TCNT0 = (255-16) будет прерывание 1 раз в 1 мкс, но имхо так делать не стоит - почти половину времени (зависит от внутренности прерывание) процессор будет уделять только таймеру.

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

Alexsis1109
mataor:

для примера при кварце 16МГц предделитель 0 (CS00 = 1) TCNT0 = (255-16) будет прерывание 1 раз в 1 мкс, но имхо так делать не стоит - почти половину времени (зависит от внутренности прерывание) процессор будет уделять только таймеру.

вот и у меня, когда я пытаюсь сделать его быстрее 5мкс, он зависает, видимо не успевает просто сам себя обработать. кварц 14.7456 МГц.

mataor:

Еще раз говорю - смотрите исходники библиотек ардуино.

какие именно библиотеки использовать, не подскажите?

mataor:

во вторых - почему 128-я мега?

в основном, потому, что у нее 8 аппаратных шимов и 2 уарта

mataor

а у меня 22 шима и 7 уартов окромя остальной кучи периферии)))
arduino-1.0.1\hardware\arduino\cores\arduino\ оттуда в данный момент вам нужна wiring.c - копайтесь в ней…
примите за правило - в прерывании МИЗЕР кода.

Alexsis1109
mataor:

а у меня 22 шима и 7 уартов окромя остальной кучи периферии)))

ого, круто, а atXmega у вас какая, 64-ая?

mataor:

примите за правило - в прерывании МИЗЕР кода.

да, это правило я хорошо знаю)

mataor
Alexsis1109:

ого, круто, а atXmega у вас какая?

MultiWii на atxmega (не arduino) лучше уж спрашивай там… в ближайшее время собираюсь кучку информации по текущему состоянию выложить, ато подзаглохла темка - полусырое выкладывать как то не могу.

Alexsis1109
mataor:

MultiWii на atxmega (не arduino) лучше уж спрашивай там…

договорились

dROb
mahowik:

пиды тут ни при чем… надо настроить экспоненту газа под свой коптер… сделать это можно либо в аппе, либо в ГУИ вия, НО не там и там!
удобнее так, в аппе отрубаем, а в ГУИ выставляем EXPO=0.25-0.35. Более 0.35 не советую выставлять, т.к. газ совсем дубовый становиться.

  • середину выставляем (в ГУИ это MID). Середина - примерная точка висения. Примерная, т.к. с просадкой батареи она убегает на 50…100 единиц…

Вот видео, которым я сызмальства пользовался для настройки ПИДов 😃 (автор - капитанКУК)

Там примерно на 1:20 - как раз сценарий когда “Hard to control height” (причина - высокий P)

А Кривую тоже обязательно настроим. У этого коптера висение вообще на 25% газа…

Shurikk
dROb:

Вот видео, которым я сызмальства пользовался для настройки ПИДов (автор - капитанКУК)

блин, выкрутил звук погромче в наушниках, чтобы движки слышать, вы бы предупреждали, что там в конце видео))

dROb
Shurikk:

блин, выкрутил звук погромче в наушниках, чтобы движки слышать, вы бы предупреждали, что там в конце видео))

Не уверен , что досматривал это видео до конца))) Хотя вчера пока писал сообщение - это видео на заднем фоне звучало)) Но видимо я оказался быстр 😃

gorbln
Shurikk:

вы бы предупреждали, что там в конце видео))

Да уж. Чуть личинку не отложил

Beware the chicken!!!

Пчёл=
Raptor_SK:

Твоя плата: 😃

Ставь Arduino Nano ATmega328… И используй последнюю версию ГУИ…
P.S. На прошлой неделе я отдал челу хексу на такой плате… прекрасно летает.
P.P.S. Проверь шнур/разъем USB - у меня на одной такой плате были из за этого проблемы, пропаивал разъем на плате…

Да использую последнюю 2.2, но все то же,кабель менял порты менял , пробовал на другом компе ftdi определяется четко, (а то думал менять его) разъем прозвонил ,пропаял , даж ft232 пропаял на всякий, где то читал что с файлом def тоже что делают, точнее для работы нужны два файла def и config , с eeprom не нужно ничего делать ? удалять данные или чистить ?, с предыдущей платой на 168 меге тоже были заморочки пока данные не удалил ,в этой пока не знаю как и нужно ли это делать.

Raptor_SK
Пчёл=:

в этой пока не знаю как и нужно ли это делать.

File > Examples > EEPROM > eeprom clear… потом жмешь загрузить, как при заливке. Все, память очищена… Можно заливать свежую прошивку.
И скачай последнюю версию Ардуино.
P.S. Открывать прошивку надо через File > open > MultiWii.ino,
дожна открытся куча вкладок, работаешь в основном с конфигом, все остальное игнорируешь, разве что, в output правишь миксы для хексы…

wins

Собрал квадрик и готовлюсь к взлету. Но вот возникла такая проблема. Прошивка 2.1. В ГУИ настраиваю аппу Turnigy9x : 1020-1500-1980 по всем каналам. Все хорошо-значения меняются ±2единицы. Выключаю питание коптера и передатчика. Потом включаю снова - значения в середине по всем каналам 1480, минимум так и остался , максимум упал до 1940. Через минут 5 все значения восстанавливаются как при настройке. Аппа вроде ни при чем- значения АЦП средние и максимальные никуда не ползут.
DEADBAND пробовал и 6 и 10 - не влияет. В чем может быть проблема?

ctakah

Не обращайте внимание,это не критично.

Пчёл=

Никак не могу понять в чем проблема, но уверен что косяк связан с прошивкой, думаю стоит найти bin файл и напрямую загнать его во флеш, и не понятно , после стирания еепром пишет 2% используется, все что изменилось , это синий светодиод после подключения usb кабеля после миганий горит постоянно.

dROb
Пчёл=:

Никак не могу понять в чем проблема, но уверен что косяк связан с прошивкой, думаю стоит найти bin файл и напрямую загнать его во флеш, и не понятно , после стирания еепром пишет 2% используется, все что изменилось , это синий светодиод после подключения usb кабеля после миганий горит постоянно.

Николай, где-то вы накосячили с редактированием прошивки. Попробуйте взять новую, не поправленную прошивку, и:

  1. Раскомментировать в config.h (убрать “//” перед) тип своего коптера - “#define HEX6”
  2. Раскомментировать Вашу плату - #define HK_MultiWii_328P
  3. Скомпилировать, залить, и смотреть с помощью Конфигуратора что происходит.

Или, если есть подозрение что каким-то образом подубили плату:

  1. Потратить полчасика на изучение Arduino вообще, залив следующие скетчи-примеры
  2. Basic->Blink (должен мигать вашим светодиодом раз в секунду)
  3. Basic->AnalogReadSerial (читает напряжение на Аналоговом пине А0 и выдает его в консоль ком-порта. Данные можно увидеть в “Монитор порта” Ардуино)
  4. Во вложении также полезный скетч, который сканирует i2c линию с датчиками, и пишет, по каким адресам найдены датчики. В вашем случае скетч должен написать found по некоторым адресам.
    Тем самым убедитесь что сама микросхема работает, скетчи заливаются, и обмен данными через FTDI идет.

Но, если скетчи через программу Arduino в вашу платку заливаются, то:

  • процессор жив
  • Бутлоадер Arduino в нём тоже жив (и посему не стоит заливать BIN файл напрямую - снесете загрузчик, хотя его потом несложно восстановить)
  • FTDI чип тоже жив.
  • Неверная прошивка?

i2c_scan.zip

sulaex

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

/* Get your magnetic decliniation from here : magnetic-declination.com
Convert the degree+minutes into decimal degree by ==> degree+minutes*(1/60)
Note the sign on declination it could be negative or positive (WEST or EAST) */
//#define MAG_DECLINIATION 3.96f //For Budapest Hungary.
#define MAG_DECLINIATION 15.08f

baliv

Я решил проверить инфу в примере… Будапешт.
Получилось 4+5/60=4.08333
Никак не 3.96… 😦 Полюса сдвинулись???