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

SergDoc

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

зря я кнопочку reset не сделал и место под неё как раз есть, надо будет исправить…

Sir_Alex
SergDoc:

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

Там как раз так и сделано, во всяком случае в 2.2:
Чтение компаса:

//The MAG acquisition function must be replaced because we now talk to the MPU device
  #if defined(MPU6050_I2C_AUX_MASTER)
    void Device_Mag_getADC() {
      i2c_getSixRawADC(MPU6050_ADDRESS, 0x49);               //0x49 is the first memory room for EXT_SENS_DATA
      #if defined(HMC5843)
....

инициализация MPU:

  #if defined(MPU6050_I2C_AUX_MASTER)
    //at this stage, the MAG is configured via the original MAG init function in I2C bypass mode
    //now we configure MPU as a I2C Master device to handle the MAG via the I2C AUX port (done here for HMC5883)
    i2c_writeReg(MPU6050_ADDRESS, 0x6A, 0b00100000);       //USER_CTRL     -- DMP_EN=0 ; FIFO_EN=0 ; I2C_MST_EN=1 (I2C master mode) ; I2C_IF_DIS=0 ; FIFO_RESET=0 ; I2C_MST_RESET=0 ; SIG_COND_RESET=0
    i2c_writeReg(MPU6050_ADDRESS, 0x37, 0x00);             //INT_PIN_CFG   -- INT_LEVEL=0 ; INT_OPEN=0 ; LATCH_INT_EN=0 ; INT_RD_CLEAR=0 ; FSYNC_INT_LEVEL=0 ; FSYNC_INT_EN=0 ; I2C_BYPASS_EN=0 ; CLKOUT_EN=0
    i2c_writeReg(MPU6050_ADDRESS, 0x24, 0x0D);             //I2C_MST_CTRL  -- MULT_MST_EN=0 ; WAIT_FOR_ES=0 ; SLV_3_FIFO_EN=0 ; I2C_MST_P_NSR=0 ; I2C_MST_CLK=13 (I2C slave speed bus = 400kHz)
    i2c_writeReg(MPU6050_ADDRESS, 0x25, 0x80|MAG_ADDRESS);//I2C_SLV0_ADDR -- I2C_SLV4_RW=1 (read operation) ; I2C_SLV4_ADDR=MAG_ADDRESS
    i2c_writeReg(MPU6050_ADDRESS, 0x26, MAG_DATA_REGISTER);//I2C_SLV0_REG  -- 6 data bytes of MAG are stored in 6 registers. First register address is MAG_DATA_REGISTER
    i2c_writeReg(MPU6050_ADDRESS, 0x27, 0x86);             //I2C_SLV0_CTRL -- I2C_SLV0_EN=1 ; I2C_SLV0_BYTE_SW=0 ; I2C_SLV0_REG_DIS=0 ; I2C_SLV0_GRP=0 ; I2C_SLV0_LEN=3 (3x2 bytes)
  #endif
mahowik

но для выполнения этого фокуса, т.е. подключения компаса как slave устр-во к mpu, надо что бы компас физически сидел на доп. i2c шине mpu…

rual
mahowik:

надо что бы компас физически сидел на доп. i2c шине mpu…

Александр, но эт понятно, жаль Сергей в своей плате это не предусмотрел.

SergDoc

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

rual
SergDoc:

проект скомпилировал, но он, к сожалению, не запустился

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

SergDoc:

Я как-то не вижу в этом особого смысла,

Смысл есть в части упрощения процедур чтения датчиков, можно в пдп через SPI всё читать одним потоком в память, а там разбирай как хочешь. Тут смысл не в скорости, а в надёжности. Единственнный вопрос как МПУшка как мастер и2ц выводит шину из зависания.

SergDoc

не могу разобраться с памятью:

*** error 65: access violation at 0x40023800 : no 'read' permission

это в кеил, что дебаггер не знает такого камня?

SergDoc

Думаю надо начинать всё сначала, сделать периферию, а потом уже wii встраивать, ибо я уже запутался где что…

rual
SergDoc:

это в кеил, что дебаггер не знает такого камня?

Это ты эмулятором отлаживаешь? Если да, то не стоит, подключи JTAG.

SergDoc:

Думаю надо начинать всё сначала, сделать периферию, а потом уже wii встраивать, ибо я уже запутался где что…

Это правильное решение, разберись где алгоритм обращается к датчикам и устройствам и от этих точек рисуй функции вниз к перефирии.

SergDoc

залил в GIT, то что сейчас имеется github.com/SergDoc/…/Tests_NO_flight , ибо не имею представления где сейчас копать. проект под кеил и эклипс (не хочет нормально hex собирать в эклипсе, кеил собирает)…

rual:

подключи JTAG.

на данный момент, я это - сапожник без сапог 😃

SergDoc

под эклипсом ошибку нашел, в макефайле, теперь hex собирается, буду переделывать периферию 😦

SRCSASM := $(wildcard src/*/startup_stm32f4xx.S)

проц не стартует вообще…

SergDoc

опытным путём установлено: multipilot32 лезет в мой проц, но тоже не запускается 😦 точнее родная прошивка пытается запускаться… буду изучать…
так что пока работает только моргалка светодиодами. И это на Ф4 - помоему перебор с процем 😃

SergDoc

дабы не потерялось, чтобы эклипс дружил с pde и ino файлами надобно провернуть:

Once you have Eclipse installed and running you should select ‘Help’ -> ‘Install New Software…’ from the menu bar. Click the ‘Add…’ button in the upper-right hand corner of the dialog box. Fill in the fields as follows:

Name: Processing Plug-in
Location: eclipse.processing.org/plugin/site.xml

rual
SergDoc:

опытным путём установлено: multipilot32 лезет в мой проц, но тоже не запускается

Сергей, без отладчика пересаживать прошивку это жёстко. Единственный вариант это ставить маячки на прошождение инициализации. Но тогда нужно очень внимательно глазами проверить инициализацию счёчика команд и стека. Для начала инициализировать в майне вывод на светодиод, и потихньку перемещать его включение ниже по программе.

SergDoc
rual:

Сергей, без отладчика пресаживать прошивку это жёстко.

на дискавери на чём ST-Link собран? F103? http://i074.radikal.ru/1207/d9/8569eda4c994.jpg
что-то типа этого надо собрать 103-й у меня один есть… сделаю, только паршивку слить откуда?

SergDoc

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

rual
Alexey_1811:

Чёт не нахожу прошивку.

SergDoc:

похоже зря потраченное время

Да, блин… ((( нетути…
получается прощще взять дискавери и отпилить от неё.