MultiWii
не могу заказать с viacopter’а
rcopen.com/forum/f134/topic219701/368
rcopen.com/forum/f134/topic219701/370
пришел пульт: все стики кроме throttle отрабатывают почти идеальные RAW значения 1000-2000, а вот газ чето от 1100 до 1880 примерно - это нормально или перемапить придется в прошивке? и чето как то значения не идеально стоят, а ±10, хотя в прошивке потом сглаживается такое поведение немного… после идеально цифрового кода - немного настораживает =)
Если кто-то хочет поправить это безобразие, сделайте так:
В конце проедуры configure receiver дописать:TCCR4A =0; //standard mode with overflow no ints
TCCR4B = (1<<CS11); //Prescaler set to 8, that give us a resolution of 0.5us, read page 134 of data sheetНиже по тексту найти
cTime = micros(); // micros() return a uint32_t, but it is not usefull to keep the whole bits => we keep only 16 bits
и заменить на
cTime = TCNT4>>1; // micros() return a uint32_t, but it is not usefull to keep the whole bits => we keep only 16 bits
применил этот патч, в итоге rear left перестал выдавать ШИМ (6-й PWM пин ардуины на atmega1280). Пробовал ипользовать 7-й, 8-й пины…тотже результат…
При чем патч применил давно и забыл, а тут уже с движками начал играться и начались танцы с бубном… уж было подумал что пины попалил, т.к. 2,3,5-й PWM работали отлично и с патчем… Убрал патч все заработало…
вот код… возможно я не так пропатчил
// Configure each rc pin for PCINT
void configureReceiver() {
#ifndef SERIAL_SUM_PPM
for (uint8_t chan = 0; chan < 8; chan++)
for (uint8_t a = 0; a < 4; a++)
rcData4Values[chan][a] = 1500; //we initiate the default value of each channel. If there is no RC receiver connected, we will see those values
#if defined(PROMINI)
// PCINT activated only for specific pin inside [D0-D7] , [D2 D4 D5 D6 D7] for this multicopter
PORTD = (1<<2) | (1<<4) | (1<<5) | (1<<6) | (1<<7); //enable internal pull ups on the PINs of PORTD (no high impedence PINs)
PCMSK2 |= (1<<2) | (1<<4) | (1<<5) | (1<<6) | (1<<7);
PCICR = 1<<2; // PCINT activated only for the port dealing with [D0-D7] PINs
#endif
#if defined(MEGA)
// PCINT activated only for specific pin inside [A8-A15]
DDRK = 0; // defined PORTK as a digital port ([A8-A15] are consired as digital PINs and not analogical)
PORTK = (1<<0) | (1<<1) | (1<<2) | (1<<3) | (1<<4) | (1<<5) | (1<<6) | (1<<7); //enable internal pull ups on the PINs of PORTK
PCMSK2 |= (1<<0) | (1<<1) | (1<<2) | (1<<3) | (1<<4) | (1<<5) | (1<<6) | (1<<7);
PCICR = 1<<2; // PCINT activated only for PORTK dealing with [A8-A15] PINs
#endif
#else
PPM_PIN_INTERRUPT
#endif
TCCR4A =0; //standard mode with overflow no ints
TCCR4B = (1<<CS11); //Prescaler set to 8, that give us a resolution of 0.5us, read page 134 of data sheet
}
#ifndef SERIAL_SUM_PPM
ISR(PCINT2_vect) { //this ISR is common to every receiver channel, it is call everytime a change state occurs on a digital pin [D2-D7]
uint8_t mask;
uint8_t pin;
uint16_t cTime,dTime;
static uint16_t edgeTime[8];
static uint8_t PCintLast;
#if defined(PROMINI)
pin = PIND; // PIND indicates the state of each PIN for the arduino port dealing with [D0-D7] digital pins (8 bits variable)
#endif
#if defined(MEGA)
pin = PINK; // PINK indicates the state of each PIN for the arduino port dealing with [A8-A15] digital pins (8 bits variable)
#endif
mask = pin ^ PCintLast; // doing a ^ between the current interruption and the last one indicates wich pin changed
sei(); // re enable other interrupts at this point, the rest of this interrupt is not so time critical and can be interrupted safely
PCintLast = pin; // we memorize the current state of all PINs [D0-D7]
//cTime = micros(); // micros() return a uint32_t, but it is not usefull to keep the whole bits => we keep only 16 bits
cTime = TCNT4>>1; // micros() return a uint32_t, but it is not usefull to keep the whole bits => we keep only 16 bits
Наткнулся тут на просторах тырнета.
После просмотра пять раз пересматривал, думаю здесь ссылку дать уместно будет? Издевательство просто! Над коптером! Но так круто!
После такого видео хочется завести себе такого-вот зверька с FreeFlight IMU
ну тут гира img3200 и bma180 участвуют, так что можно и без ff imu так полетать 😃
кто нить пробовал этот патч или все дружно сказали спасиба и забыли?! 😃
Во парнягу прет, опять новую доску все в одном намутил… ну блин многостаночник…
да, работает парень! накосячил интересно с магнетометром опять или нет?
накосячил интересно с магнетометром
Да может Олегу просто бракованный чип попался… кондеры на новой плате другие… он предлагал Олегу на РЦГрупс выпаять кондеры, ориентация судя по картинке осталась тажа, кстати нужно у Олега спросить, косяк проявляется на обоих платах (он вроде пару брал), я свою еще не подключал, со временем косяк, все хочу сам намутить аллинван “колхоз эдишн”, в пятницу должны приехать преобразователи уровня, если приедут в выходные паять начну…
накосячил
На viacopter тоже сливаются по низкой цене FFIMU отбракованные, которые не прошли тест магнетометра…
Надо его отдельно ото всех, в благоприятном месте монтажить.
На viacopter тоже сливаются по низкой цене FFIMU отбракованные, которые не прошли тест магнетометра…
Надо его отдельно ото всех, в благоприятном месте монтажить.
они каждую плату проверяют чтоли?
каждую плату
Похоже на то. Тем более, магазин молодой. Репутацию нужно заработать, а потерять - проще простого.
кто нить пробовал этот патч или все дружно сказали спасиба и забыли?!
сказали спасибо и забыли =) на самом деле я пробовал, но в другом варианте, когда системка 2х ядерная была… работало намного точнее чем стандартный вариант
кто нить пробовал этот патч
Я пробывал на летающем крыле. Разницы в работе серв не заметил.
Получил платку ALLINON решил проверить как работает.
когда аксель в прошивке закоментирован, все работает хорошо, цикл 1700.
как только раскоментирую аксель ВМА180, сразу цикл переходит в -29000 , и естественно на шевеления плата не реагирует!
В чем проблема? подскажите? (может в прошивке чтото править еще надо?)
www.youtube.com/watch?v=Hgl5Wt-rFpE
п.с. еще заметил что когда аксель раскоментирован и выключена апа, в ГУИ цикл меняется на 3000 , гирик отрабатывает, но аксель стоит на месте, включаю апу и цикл становится -29000 и гирик не реагирует.
когда аксель в прошивке закоментирован, все работает хорошо, цикл 1700.
У меня такое было, когда выставлял скорость и2с 400. Правда это было на вии с нунчаком. При понижении скорости до 250 все заработало.
стоит это #define I2C_SPEED 100000L //100kHz normal mode, this value must be used for a genuine WMP
ставил 400, все тоже самое, работает гирик тока если закоментирован аксель
Только что на 53 rcopen.com/forum/f123/topic221574/2123 странице прочитал, может оно?
Кста.А сами луичи надо заземлять на общий минус?как никак статика от трения винтов с восдухом хорошо заряжает.В вертолётах заземляют,правда там там ремень с бумом динамят.
Лучше не делать этого. В случае короткого в обмотке статора у вас что-то случиться с коптером…
У вертолета на хвостовой балке нет электроники, поэтому там допустимо.
Как вариант - “заземлите” лучи через емкостя (можно параллельно резистор с большим сопротивлением) на минус.
От статики (а Вы хоть раз регистрировали её присутствие достаточной силы) спасёт.
только раскоментирую аксель
Адрес акселя 0х80 замени на 0х82 в 5 местах
вот код… возможно я не так пропатчил
Кто ж знал, что analogWrite использует все доступные таймеры! Поменяй в выделенных местах 4 на 5…
можно параллельно резистор
Ну это само собой,Лучи соединены друг с другом 1Момными резисторами через минус системы.
От статики (а Вы хоть раз регистрировали её присутствие достаточной силы) спасёт.
Нет. Интересно узнать,как это сделать?
опять новую доску все в одном намутил.
походу ЖПС 5Гц ,плохо.
Адрес акселя 0х80 замени на 0х82 в 5 местах
а шину оставить 100kHz или поставить 400kHz ?
п.с. что в нормальных датчиках хорошо, они заводятся с первого раза, вии+ мог с 3-7 раза только стартонуть.
платка аллинон, такого размера что я ее чуть не потерял, пока паял.
сегодня попробую лететь на мультивие, и начну изучать как ставить пирата (пока не разобрался.)