MultiWii
Всем доброго времени суток! Кто-нибудь самостоятельно писал код для обработки ШИМа РРМ сигнала на контроллере Atmega? Я пытаюсь написать на Atmega128
Кто-нибудь самостоятельно писал код для обработки ШИМа РРМ сигнала на контроллере Atmega? Я пытаюсь написать на Atmega128
блин… в одной теме тебе кучу вариантов предложили, а ты еще сюда полез. лезеш в исходники вия, конкретно в RX.ino - там все есть. Единственно тебе придется выдрать из ардуино и переделать для 128-й меги таймер системного времени и процедурку micros. Вперед.
Единственно тебе придется выдрать из ардуино и переделать для 128-й меги таймер системного времени и процедурку micros. Вперед.
легко сказать выдерни и переделай когда все понимаешь. я прошу просто для начала с таймером помочь разобрать, неужели так трудно помочь?
во первых - вопрос не для этой ветки.
во вторых - почему 128-я мега?
по обработке приемника неудобна - мало входов прерываний - всего 8, если использовать приемник с PPMSUM то норм (по одному проводу где), иначе все ноги входов прерываний нужно задействовать.
по таймеру: так и не сказали какой кварц?
настройка таймера по даташиту легко делается:
TCCR0 - установкой битов CS00-CS02 предделитель таймера
TCNT0 - сюда загружаем счетчик сколько считаем, в прерывании записываем значение вновь
TIMSK - устанавливаем бит TOIE0
для примера при кварце 16МГц предделитель 0 (CS00 = 1) TCNT0 = (255-16) будет прерывание 1 раз в 1 мкс, но имхо так делать не стоит - почти половину времени (зависит от внутренности прерывание) процессор будет уделять только таймеру.
Еще раз говорю - смотрите исходники библиотек ардуино.
Мне тоже пришлось много ковыряться, зато сейчас имею успешно работающий порт мультивия на atXmega, а там отличий намного поболее было
для примера при кварце 16МГц предделитель 0 (CS00 = 1) TCNT0 = (255-16) будет прерывание 1 раз в 1 мкс, но имхо так делать не стоит - почти половину времени (зависит от внутренности прерывание) процессор будет уделять только таймеру.
вот и у меня, когда я пытаюсь сделать его быстрее 5мкс, он зависает, видимо не успевает просто сам себя обработать. кварц 14.7456 МГц.
Еще раз говорю - смотрите исходники библиотек ардуино.
какие именно библиотеки использовать, не подскажите?
во вторых - почему 128-я мега?
в основном, потому, что у нее 8 аппаратных шимов и 2 уарта
а у меня 22 шима и 7 уартов окромя остальной кучи периферии)))
arduino-1.0.1\hardware\arduino\cores\arduino\ оттуда в данный момент вам нужна wiring.c - копайтесь в ней…
примите за правило - в прерывании МИЗЕР кода.
а у меня 22 шима и 7 уартов окромя остальной кучи периферии)))
ого, круто, а atXmega у вас какая, 64-ая?
примите за правило - в прерывании МИЗЕР кода.
да, это правило я хорошо знаю)
ого, круто, а atXmega у вас какая?
MultiWii на atxmega (не arduino) лучше уж спрашивай там… в ближайшее время собираюсь кучку информации по текущему состоянию выложить, ато подзаглохла темка - полусырое выкладывать как то не могу.
MultiWii на atxmega (не arduino) лучше уж спрашивай там…
договорились
пиды тут ни при чем… надо настроить экспоненту газа под свой коптер… сделать это можно либо в аппе, либо в ГУИ вия, НО не там и там!
удобнее так, в аппе отрубаем, а в ГУИ выставляем EXPO=0.25-0.35. Более 0.35 не советую выставлять, т.к. газ совсем дубовый становиться.
- середину выставляем (в ГУИ это MID). Середина - примерная точка висения. Примерная, т.к. с просадкой батареи она убегает на 50…100 единиц…
Вот видео, которым я сызмальства пользовался для настройки ПИДов 😃 (автор - капитанКУК)
Там примерно на 1:20 - как раз сценарий когда “Hard to control height” (причина - высокий P)
А Кривую тоже обязательно настроим. У этого коптера висение вообще на 25% газа…
Вот видео, которым я сызмальства пользовался для настройки ПИДов (автор - капитанКУК)
блин, выкрутил звук погромче в наушниках, чтобы движки слышать, вы бы предупреждали, что там в конце видео))
блин, выкрутил звук погромче в наушниках, чтобы движки слышать, вы бы предупреждали, что там в конце видео))
Не уверен , что досматривал это видео до конца))) Хотя вчера пока писал сообщение - это видео на заднем фоне звучало)) Но видимо я оказался быстр 😃
вы бы предупреждали, что там в конце видео))
Да уж. Чуть личинку не отложил
Beware the chicken!!!
Твоя плата: 😃
Ставь Arduino Nano ATmega328… И используй последнюю версию ГУИ…
P.S. На прошлой неделе я отдал челу хексу на такой плате… прекрасно летает.
P.P.S. Проверь шнур/разъем USB - у меня на одной такой плате были из за этого проблемы, пропаивал разъем на плате…
Да использую последнюю 2.2, но все то же,кабель менял порты менял , пробовал на другом компе ftdi определяется четко, (а то думал менять его) разъем прозвонил ,пропаял , даж ft232 пропаял на всякий, где то читал что с файлом def тоже что делают, точнее для работы нужны два файла def и config , с eeprom не нужно ничего делать ? удалять данные или чистить ?, с предыдущей платой на 168 меге тоже были заморочки пока данные не удалил ,в этой пока не знаю как и нужно ли это делать.
в этой пока не знаю как и нужно ли это делать.
File > Examples > EEPROM > eeprom clear… потом жмешь загрузить, как при заливке. Все, память очищена… Можно заливать свежую прошивку.
И скачай последнюю версию Ардуино.
P.S. Открывать прошивку надо через File > open > MultiWii.ino,
дожна открытся куча вкладок, работаешь в основном с конфигом, все остальное игнорируешь, разве что, в output правишь миксы для хексы…
Собрал квадрик и готовлюсь к взлету. Но вот возникла такая проблема. Прошивка 2.1. В ГУИ настраиваю аппу Turnigy9x : 1020-1500-1980 по всем каналам. Все хорошо-значения меняются ±2единицы. Выключаю питание коптера и передатчика. Потом включаю снова - значения в середине по всем каналам 1480, минимум так и остался , максимум упал до 1940. Через минут 5 все значения восстанавливаются как при настройке. Аппа вроде ни при чем- значения АЦП средние и максимальные никуда не ползут.
DEADBAND пробовал и 6 и 10 - не влияет. В чем может быть проблема?
Не обращайте внимание,это не критично.
Никак не могу понять в чем проблема, но уверен что косяк связан с прошивкой, думаю стоит найти bin файл и напрямую загнать его во флеш, и не понятно , после стирания еепром пишет 2% используется, все что изменилось , это синий светодиод после подключения usb кабеля после миганий горит постоянно.
Никак не могу понять в чем проблема, но уверен что косяк связан с прошивкой, думаю стоит найти bin файл и напрямую загнать его во флеш, и не понятно , после стирания еепром пишет 2% используется, все что изменилось , это синий светодиод после подключения usb кабеля после миганий горит постоянно.
Николай, где-то вы накосячили с редактированием прошивки. Попробуйте взять новую, не поправленную прошивку, и:
- Раскомментировать в config.h (убрать “//” перед) тип своего коптера - “#define HEX6”
- Раскомментировать Вашу плату - #define HK_MultiWii_328P
- Скомпилировать, залить, и смотреть с помощью Конфигуратора что происходит.
Или, если есть подозрение что каким-то образом подубили плату:
- Потратить полчасика на изучение Arduino вообще, залив следующие скетчи-примеры
- Basic->Blink (должен мигать вашим светодиодом раз в секунду)
- Basic->AnalogReadSerial (читает напряжение на Аналоговом пине А0 и выдает его в консоль ком-порта. Данные можно увидеть в “Монитор порта” Ардуино)
- Во вложении также полезный скетч, который сканирует i2c линию с датчиками, и пишет, по каким адресам найдены датчики. В вашем случае скетч должен написать found по некоторым адресам.
Тем самым убедитесь что сама микросхема работает, скетчи заливаются, и обмен данными через FTDI идет.
Но, если скетчи через программу Arduino в вашу платку заливаются, то:
- процессор жив
- Бутлоадер Arduino в нём тоже жив (и посему не стоит заливать BIN файл напрямую - снесете загрузчик, хотя его потом несложно восстановить)
- FTDI чип тоже жив.
- Неверная прошивка?
Подскажите пожалуйста, верно ли высчитал магнитное склонение, а то, как бы циферка великовата получается?
/* 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