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

mataor

это не СТМ а atxmega
если неправильно то почему тогда в одном случае все отлично, а в другом - фиг пойми что/

наверное попробую снова все это дело на прерываниях сделать

SergDoc

пробуй через счётчик все разом как я показывал с MPU:

static void mpu6000AccRead(int16_t *accData) {
 uint8_t buf[6];
     uint8_t i;
       MPU_ON;// прижал
spi_writeByte(MPU_RA_ACCEL_XOUT_H | 0x80); // говорит что читать отсюда и до забора (6-в данном случае)
            for (i = 0; i < 6; i++)
    buf[i] = spi_readByte();
    MPU_OFF;//отпустил
accData[0] = (int16_t)((buf[0] << 8) | buf[1]) / 8;
accData[1] = (int16_t)((buf[2] << 8) | buf[3]) / 8;
accData[2] = (int16_t)((buf[4] << 8) | buf[5]) / 8; }

MPU_RA_ACCEL_XOUT_H - адрес первого регистра
0x80 - цыфирка что читать надо несколько…

djdron

В atxmega CS аппаратный? какая частота SPI? Вообще такие вещи надо бы осцилом смотреть что на ногах творится

mataor
SergDoc:

пробуй через счётчик все разом

у меня вообще то именно так все и сделано
0х80 у ст-шных - это чтение, а все разом - это 0х40

djdron:

В atxmega CS аппаратный?

если 1 слейв - то да, если несколько - то сам указываеш/управляеш

осцилл к сожалению под рукой только портативный ЮСБ-шный одноканальный… им все что больше 50-100кГц бесполезно смотреть

частоту пробовал и 8МГц, и 2… надо попробовать будет 500кГц

SergDoc
mataor:

spi_getSixRawADC(GYRO_PIN, 0x80 | 0x28);

здесь должно происходить :
прижал лапу
write_bute - забор|обед
счётчик шагов от забора до обеда
read_bute (все шаги) складываем в rawADC
отпустил лапу

mataor
mataor:

SPI_MasterSSLow(&PORTE, pinMask);
SPI_MasterTransceiveByte(&spiMasterE, 0x40 | reg);
for (uint8_t i=0; i<6; i++) {
rawADC[i]=SPI_MasterTransceiveByte(&spiMasterE, 0xFF);
}
SPI_MasterSSHigh(&PORTE, pinMask);

SergDoc:

здесь должно происходить :
прижал лапу
write_bute - забор-обед
счётчик шагов от забора до обеда
read_bute (все шаги)
отпустил лапу

блин… я ж это все привел.

SergDoc

uint8_t result = spi->module->DATA; // result - правильная переменная?

Sir_Alex

>SPI_MasterTransceiveByte(&spiMasterE, 0xFF);

Не бейте ногами, а зачем присваивать в начале 0xFF?

mataor
Sir_Alex:

а зачем присваивать в начале 0xFF?

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

SergDoc:

правильная переменная?

этот драйвер из апноута Атмел

SergDoc
Sir_Alex:

SPI_MasterTransceiveByte(&spiMasterE, 0xFF);

в SPI чтобы что-то прочитать, надо туда заслать чё-нить…

mataor:

этот драйвер из апноута Атмел

не я конечно в программировании не силён, но не останется ли переменная только в этой процедуре? т.е. доступ другим к ней будет?

Sir_Alex
SergDoc:

не я конечно в программировании не силён, но не останется ли переменная только в этой процедуре? т.е. доступ другим к ней будет?

Останется, но перед выходом из процедуры, она присваивается резалту

return(result)

Alexey_1811

Поделитесь обработчиком под STM32 (аппаратным желательно) кодирования/декодирования сигнала ppmsum, а также обработчик приема обычных данных с приемника.

SergDoc

Sir Alex и tusik, к вам будет просьба. Как только платы приедут - по возможности побыстрее сделать кино полёта…
Я пока не смогу этого сделать в полном объёме 😦 в моей плате проблемный баро и gps у меня глючит - блин сапожник без сапог 😦
В платах залита староватая версия 3.1… посмотрю точнее скажу - но я на ней летал (т.е. проверенная)
Конфигурация X моторы (нумерация) как в APM !
Для запуска Арду обязательна SD-карточка… у меня прекрасно живёт 2-х гиговая noname
Первый запуск - просто включить с карточкой
Далее на карточке создастся директория APM (там логи будут хранится)
Для запуска моторов в эту директорию надо положить пустой файл
AUXPWM.en регистр букв обязателен.
Вход радио пока работает один PPM, подписан 4-й

Sir_Alex
SergDoc:

Я пока не смогу этого сделать в полном объёме в моей плате проблемный баро и gps у меня глючит - блин сапожник без сапог

Я ж тебе написал, пришли мне без баро, я выковыряю из своих запасов контроллеров.

SergDoc

Не, это не красиво будет - я купил новый себе, приедет переставлю…

теперь аксель калибруется с кнопки в планнере в терминал лезть ненадо, на старой плате калибровался только через терминал… на новых на всех просто с кнопки калибруется 😃
да ещё я не пробовал через терминал виртуальную еепром стирать…
если надо стереть в консоли NuttX
вынимаем SD (если с пищалкой запустить будет пиликать SOS)
подключаем к 1 усарту через ftdi (или через что есть) любой терминалкой (патти, геркулес…)
скорость 57600
набираем
mtd start
mtd erase
reboot
вставляем SD запускаемся калибруемся…

oleg70
SergDoc:

на новых на всех просто с кнопки калибруется

Я так понимаю(?), - выровнял на земле аппарат по строительному уровню - и нажал кнопку ?

SergDoc

неа калибровать все оси! ну это по инструкции арду всё…
калибровать можно просто плату без коптера…
подлетнуть если тянет куда - посадить сделать арм - но подержать стик подольше секунд 10, подлетнуть пока аппарат не перестанет куда-либо вести, сел, дизарм, save trim - щёлкнуть переключатель (7 канал радио)…

Паршифки заливаются планнером так что осторожно родная от PX4 зальётся, но работать не будет и перепрошить будет с планнера невозможно! в таком случае: в папке планнера есть PX4uploader - запустить выбрать паршивку и тыкать ресет пока лодырь (он жывой остаётся) не определится…

SergDoc
mataor:

как отмакетировать небольшой BGA чип

не уж увольте, с проводками возитьсяс… лучша я быстренько лут накидаю 😃
прикол приколом, а мне с али вчера баро отправили и трек уже дали:)
фух платки загружены в коробочку завтра с утра поедуть, моя лежит на окне gps-ом следит за спутниками - дождь 7 спутников hdop 2.4 ещё ни разу на плохую жисть не пожаловалось, может у меня в старой плате был косяк?