MultiWii

SovGVD
leprud:

Ессно. данные по уарту, обмен с основными мозгами - по i2c

т.е. юзая эту либу на обычной Arduino Mini/pro/328p с одним UART можно не писать свои костыли, а уже работает?

leprud

ы, в гугле же написано.
[gps]-[uart arduino]-[i2c]-[multiwii]

SovGVD

судя по коду там про mega и про i2c в основном, а я говорю про односторонний UART на обычной ардуинке, где только ОДИН хардверный UART есть

leprud

Так, стоп. Задача подключить e-osd (как железку) к мультивию и запихнуть туда же гпс датчик?
Через softwareserial на мультивие я подключал гпс, хоть и криво

SovGVD

задача завести UART GPS на RX0 пин, а TX0 для OSD оставить, т.е. для меги или i2c GPS приемников проблем нет, а на обычной ардуинки уже косяк выходит

  • в новом мультивие (а может и раньше, давно не следил) убрали стандартную либу работы с serial портом, поэтому попытки добавить софтверный порт приводят к ошибкам компиляции (ну или avr-gcc снова тупит)
SovGVD

реальная работа OSD с multiwii

нужна помощь кодеров
есть такой код


	        int tmp_alt=(EstAlt-AltGround)/100;
                    if(tmp_alt<0) tmp_alt=0;
                serialize8((char)(tmp_alt>>8));    // altitude
                serialize8((char)(tmp_alt&255));  // altitude

не работает

а вот так работает, т.е. где то косяк с типами данных, может кто подскажет как перевести нормально? =)


	        int tmp_alt=(EstAlt-AltGround)/100;
                    if(tmp_alt<0) tmp_alt=0;
                    tmp_alt=123;
                serialize8((char)(tmp_alt>>8));    // altitude
                serialize8((char)(tmp_alt&255));  // altitude
VitaliyRU

попробуй вот так
uint16_t tmp_alt=(max(EstAlt-AltGround,0))/100; serialize16(tmp_alt); // altitude
я правда не понял как не работает, вроде младший и старший байты попутаны.
хотя max давольно увесистый вызов
uint16_t tmp_alt;
if (EstAlt>AltGround)
tmp_alt=(EstAlt-AltGround)/100;
else
tmp_alt=0;
serialize16(tmp_alt);

SovGVD
VitaliyRU:

я правда не понял как не работает, вроде младший и старший байты попутаны.

работает есть int tmp_alt=123; - т.е. выводит эти самые 123, а если int tmp_alt=(EstAlt-AltGround)/100; - то выводит ноль (аналогично если просто BaroAlt поставить или EstAlt)

VitaliyRU

cast к данным меньшей размерности берет правые байты (тобишь маленькие значения)
может разность меньше 100?

SovGVD

ура, нашел
int tmp_alt=(EstAlt-AltGround)*0.01f;

AltGround ставиться при арминге моторов и значение становить 0 и дальше повышается, но приемник отключен пока, поэтому цифры - высота над уровнем моря в метрах (теоретически)

Syberian
SovGVD:

а вот так работает

Юзай Serial.write(byte) , а для простоты вытащи ответную часть из самолетного пирата 2.24, файл называется eosd.pde.
Еще у тебя прыгает горизонт, не забыл синхрогруппу чередовать надо? 0xcb 0x34

SovGVD
Syberian:

Юзай Serial.write(byte)

в мультивие выпилили serial, там свой костыль теперь, но работает так же.

Syberian:

не забыл синхрогруппу чередовать надо? 0xcb 0x34

не знал, чето было написано про 0xcb 0x34, проигнорил 😉

upd хотя нет, вот в конце osd_sync^=255; - так что видимо меняю =)

adver

Вернулся к вию после долгого перерыва, сделал очередную плату. Датчики L3G4200D, BMP085, LSM303DLHC и мега2560. Странно, но работает. Основное отличие от всего виденного мной - наличие 2-х слотов расширения. Сейчас занимаюсь ОСД. будет ставиться вторым этажом. ГПС тоже будет

Alexey_1811
adver:

Вернулся к вию после долгого перерыва, сделал очередную плату. Датчики L3G4200D, BMP085, LSM303DLHC и мега2560. Странно, но работает. Основное отличие от всего виденного мной - наличие 2-х слотов расширения. Сейчас занимаюсь ОСД. будет ставиться вторым этажом. ГПС тоже будет

Эх. Сюда бы еще поддержку немецких I2C контроллеров двигателей.

Dimm168pin
adver:

Вернулся к вию после долгого перерыва, сделал очередную плату. Датчики L3G4200D, BMP085, LSM303DLHC и мега2560. Странно, но работает. Основное отличие от всего виденного мной - наличие 2-х слотов расширения. Сейчас занимаюсь ОСД. будет ставиться вторым этажом. ГПС тоже будет

классная штуковина, можно плавно переходить на stm32 )))))

adver
Dimm168pin:

классная штуковина, можно плавно переходить на stm32 )))))

Хочу эксперимента ради перейти на xmega

adver
Alexey_1811:

Эх. Сюда бы еще поддержку немецких I2C контроллеров двигателей.

И2С выведен на разъем, только программно поддержать, если протокол есть проблем не вижу

Dimm168pin
Sir_Alex:

Дык девайсина от TimeCop (Naze 32) и есть Мультивий на stm32

это мы уж в курсе) но там путей для усовершенствований полно)

Alexey_1811
adver:

И2С выведен на разъем, только программно поддержать, если протокол есть проблем не вижу

Поделитесь исходником?

adver
Alexey_1811:

Поделитесь исходником?

Исходником для чего? Протокол посмотреть можно например здесь Если в вие поддеражть то это не ко мне, мне это не интересно