Специальные цены   новые товары
+ Ответить в теме
Страница 10 из 165 ПерваяПервая ... 8 9 10 11 12 20 ... ПоследняяПоследняя
Показано с 361 по 400 из 6569

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

Тема раздела Квадрокоптеры. Общие вопросы в категории Квадрокоптеры и мультироторы; Сообщение от leprud Это в lpc по умолчанию так только.. Типа lpc1768 и mbed nxp на ее основе Нашел! http://easyelectronics.ru/proshivka-...i-lpc1300.html ...

  1. #361

    Регистрация
    17.06.2011
    Адрес
    Минск
    Возраст
    39
    Сообщений
    1,941
    Цитата Сообщение от leprud Посмотреть сообщение
    Это в lpc по умолчанию так только.. Типа lpc1768 и mbed nxp на ее основе
    Нашел! http://easyelectronics.ru/proshivka-...i-lpc1300.html в конце статьи

  2.  
  3. #362

    Регистрация
    01.11.2010
    Адрес
    Belarus Slonim
    Возраст
    36
    Сообщений
    4,462
    Записей в дневнике
    8
    Сегодня пошол уже на крайние меры - отрезал магнитометр - непомогло

  4. #363

    Регистрация
    11.05.2008
    Адрес
    Великий Новгород
    Возраст
    38
    Сообщений
    3,939
    Записей в дневнике
    22
    значит пора подключать JTAG и погружаться в дебри

  5. #364

    Регистрация
    01.11.2010
    Адрес
    Belarus Slonim
    Возраст
    36
    Сообщений
    4,462
    Записей в дневнике
    8
    Да, только сначала его собрать надо...

  6.  
  7. #365

    Регистрация
    16.12.2005
    Адрес
    Москва
    Возраст
    34
    Сообщений
    4,452
    Записей в дневнике
    13
    Гы, а 9dof DMP в mpu6xx0 таки не будет. Т.е. ничего больше текущей 6dof хакнутой мы вряд ли увидим.
    "нас наэпали, расходимся"
    March 26th, 2012, 12:49 pm
    The part of the press release is referring to the secondary I2C bus on the MPU that would allow interfacing to an external magnetometer. So the raw data processing is offloaded, and sensor fusion can be run on the DMP, so in that sense it offloads some processing from the MCU. But you are right that the calibration algorithms run on the MCU.

    We do have a library for 8-bit micros like the 8051 and Atmega MCUs. Since we have very minimal resources to support it and hence been released to select customers only.

    Thank you
    Cheers,
    InvenSense Team.

  8. #366

    Регистрация
    01.11.2010
    Адрес
    Belarus Slonim
    Возраст
    36
    Сообщений
    4,462
    Записей в дневнике
    8
    Короче если я правильно понял, у CC проблемы с I2C
    Better say, I was interested in i2c mag/baro board. I rewrote parts of Sambas test app into the CC module which could be enabled/disabled, initializes i2c port (if enabled), and reads baro data into the object.

    But I had some problems with i2c driver itself (the same as Sambas had). I had to increase i2c interrupt priorities to just read data. After some discussions I stopped those attempts.

    But note that I did not try the i2c for ESCs. So I don't know if those i2c problems were related only to baro sensor or to i2c bus on the CC in general. I did not dig into the i2c layer, so can't say.

    If James fixes the i2c layer on the CC, then probably I can finish baro module at least to read some data. But fighting with the i2c itself is above my intentions.

  9. #367

    Регистрация
    01.03.2006
    Адрес
    Киров
    Возраст
    43
    Сообщений
    1,551
    Записей в дневнике
    1
    Тут писаки хвалиллись победой над I2c в стм, может откликнутся?

  10.  
  11. #368

    Регистрация
    11.05.2008
    Адрес
    Великий Новгород
    Возраст
    38
    Сообщений
    3,939
    Записей в дневнике
    22
    "тут" это где?

  12. #369

    Регистрация
    01.11.2010
    Адрес
    Belarus Slonim
    Возраст
    36
    Сообщений
    4,462
    Записей в дневнике
    8
    Мысль такая, взять библиотеки от multipilot или NAZE32 и пробовать переписывать по образу и подобию, но у меня драйвера для кривых рук нет, обязательно чё нить накуралешу...

  13. #370

    Регистрация
    17.06.2011
    Адрес
    Минск
    Возраст
    39
    Сообщений
    1,941
    Я где то читал, что есть некоторые грабли у F103 процов с i2c шиной и эти грабли поправили в F4. Так что, как вариант сразу этот проц закладывать в новых проектах.
    Хотя кто то тут писал про свой проект построения своего софта и долгое отлавливания багов с i2c шиной, но поделится чем то полезным человек не захотел...

  14. #371

    Регистрация
    01.11.2010
    Адрес
    Belarus Slonim
    Возраст
    36
    Сообщений
    4,462
    Записей в дневнике
    8
    Только где же этот кто-то и куда он мог залезть

  15. #372

    Регистрация
    17.06.2011
    Адрес
    Минск
    Возраст
    39
    Сообщений
    1,941
    Цитата Сообщение от SergDoc Посмотреть сообщение
    Только где же этот кто-то и куда он мог залезть
    Вот, нашел: Переходим с AVR на ARM

  16. #373

    Регистрация
    01.11.2010
    Адрес
    Belarus Slonim
    Возраст
    36
    Сообщений
    4,462
    Записей в дневнике
    8
    так к слову: STM32F405RGT6 - единственное в моей ценовой категории, рискнуть?

  17. #374

    Регистрация
    01.11.2010
    Адрес
    Belarus Slonim
    Возраст
    36
    Сообщений
    4,462
    Записей в дневнике
    8
    В мультипилоте используется библиотека wire из ардуино...

  18. #375

    Регистрация
    17.06.2011
    Адрес
    Минск
    Возраст
    39
    Сообщений
    1,941
    Цитата Сообщение от SergDoc Посмотреть сообщение
    В мультипилоте используется библиотека wire из ардуино...
    Из библиотеки Maple

  19. #376

    Регистрация
    01.11.2010
    Адрес
    Belarus Slonim
    Возраст
    36
    Сообщений
    4,462
    Записей в дневнике
    8
    вот что подумал, а не душится ли i2c модулем телеметрии, тогда возникает другой, как убрать телеметрию с порта и оставить её через usb? простое отключение модуля приводит к тому что и через usb нет её самой...

  20. #377

    Регистрация
    11.05.2008
    Адрес
    Великий Новгород
    Возраст
    38
    Сообщений
    3,939
    Записей в дневнике
    22
    Цитата Сообщение от SergDoc Посмотреть сообщение
    а не душится ли i2c модулем телеметрии
    а где связь?

  21. #378

    Регистрация
    01.11.2010
    Адрес
    Belarus Slonim
    Возраст
    36
    Сообщений
    4,462
    Записей в дневнике
    8
    Не скорее это ошибочное предположение, а на шине нет ничего, и вообще, что есть что нету i2c нет никакой разници, у меня такое впечатление создаётся что что-то ещё невключено но где?
    Makefile
    Код:
     #####
     # Project: OpenPilot
     #
     #
     # Makefile for OpenPilot project build PiOS and the AP.
     #
     # The OpenPilot Team, http://www.openpilot.org, Copyright (C) 2009.
     #
     # 
     # This program is free software; you can redistribute it and/../)
    include $(TOP)/make/firmware-defs.mk
    include $(TOP)/make/boards/$(BOARD_NAME)/board-info.mk
    
    # Target file name (without extension).
    TARGET := fw_$(BOARD_NAME)
    
    # Directory for output files (lst, obj, dep, elf, sym, map, hex, bin etc.)
    OUTDIR := $(TOP)/build/$(TARGET)
    
    # Set developer code and compile options
    # Set to YES to compile for debugging
    DEBUG ?= NO
    
    # Include objects that are just nice information to show
    DIAGNOSTICS ?= NO
    
    # Set to YES to build a FW version that will erase all flash memory
    ERASE_FLASH ?= NO
    # Set to YES to use the Servo output pins for debugging via scope or logic analyser
    ENABLE_DEBUG_PINS ?= NO
    
    # Set to Yes to enable the AUX UART which is mapped on the S1 (Tx) and S2 (Rx) servo outputs
    ENABLE_AUX_UART ?= NO
    
    # Set to YES when using Code Sourcery toolchain
    CODE_SOURCERY ?= YES
    
    # Remove command is different for Code Sourcery on Windows
    ifeq ($(CODE_SOURCERY), YES)
    REMOVE_CMD = cs-rm
    else
    REMOVE_CMD = rm
    endif
    
    FLASH_TOOL = OPENOCD
    
    # Optional module and driver defaults
    USE_CAMERASTAB ?= NO
    USE_COMUSBBRIDGE ?= YES
    USE_GPS ?= NO
    USE_TXPID ?= YES
    USE_I2C ?= YES
    USE_ALTITUDE ?= YES
    TEST_FAULTS ?= NO
    
    # List of optional modules to include
    OPTMODULES =
    ifeq ($(USE_CAMERASTAB), YES)
    OPTMODULES += CameraStab
    endif
    ifeq ($(USE_COMUSBBRIDGE), YES)
    OPTMODULES += ComUsbBridge
    endif
    ifeq ($(USE_GPS), YES)
    OPTMODULES += GPS
    endif
    ifeq ($(USE_TXPID), YES)
    OPTMODULES += TxPID
    endif
    ifeq ($(USE_ALTITUDE), YES)
    ifeq ($(USE_I2C), YES)
    OPTMODULES += Altitude
    else
    $(error "Altitude module (USE_ALTITUDE=YES) requires i2c (USE_I2C=YES)")
    endif
    endif
    ifeq ($(TEST_FAULTS), YES)
    OPTMODULES += Fault
    endif
    
    # List of mandatory modules to include
    MODULES = Attitude Stabilization Actuator ManualControl FirmwareIAP
    # Telemetry must be last to grab the optional modules (why?)
    MODULES += Telemetry
    
    # Paths
    OPSYSTEM = ./System
    OPSYSTEMINC = $(OPSYSTEM)/inc
    OPUAVTALK = ../UAVTalk
    OPUAVTALKINC = $(OPUAVTALK)/inc
    OPUAVOBJ = ../UAVObjects
    OPUAVOBJINC = $(OPUAVOBJ)/inc
    OPTESTS  = ./Tests
    OPMODULEDIR = ../Modules
    FLIGHTLIB = ../Libraries
    FLIGHTLIBINC = $(FLIGHTLIB)/inc
    PIOS = ../PiOS
    PIOSINC = $(PIOS)/inc
    PIOSSTM32F10X = $(PIOS)/STM32F10x
    PIOSCOMMON = $(PIOS)/Common
    PIOSBOARDS = $(PIOS)/Boards
    APPLIBDIR = $(PIOSSTM32F10X)/Libraries
    STMLIBDIR = $(APPLIBDIR)
    STMSPDDIR = $(STMLIBDIR)/STM32F10x_StdPeriph_Driver
    STMUSBDIR = $(STMLIBDIR)/STM32_USB-FS-Device_Driver
    STMSPDSRCDIR = $(STMSPDDIR)/src
    STMSPDINCDIR = $(STMSPDDIR)/inc
    STMUSBSRCDIR = $(STMUSBDIR)/src
    STMUSBINCDIR = $(STMUSBDIR)/inc
    CMSISDIR  = $(STMLIBDIR)/CMSIS/Core/CM3
    DOSFSDIR  = $(APPLIBDIR)/dosfs
    MSDDIR  = $(APPLIBDIR)/msd
    RTOSDIR = $(APPLIBDIR)/FreeRTOS
    RTOSSRCDIR = $(RTOSDIR)/Source
    RTOSINCDIR = $(RTOSSRCDIR)/include
    DOXYGENDIR = ../Doc/Doxygen
    AHRSBOOTLOADER = ../Bootloaders/AHRS/
    AHRSBOOTLOADERINC = $(AHRSBOOTLOADER)/inc
    PYMITE = $(FLIGHTLIB)/PyMite
    PYMITELIB = $(PYMITE)/lib
    PYMITEPLAT = $(PYMITE)/platform/openpilot
    PYMITETOOLS = $(PYMITE)/tools
    PYMITEVM = $(PYMITE)/vm
    PYMITEINC = $(PYMITEVM)
    PYMITEINC += $(PYMITEPLAT)
    PYMITEINC += $(OUTDIR)
    FLIGHTPLANLIB = $(OPMODULEDIR)/FlightPlan/lib
    FLIGHTPLANS = $(OPMODULEDIR)/FlightPlan/flightplans
    HWDEFSINC = ../board_hw_defs/$(BOARD_NAME)
    
    OPUAVSYNTHDIR = $(OUTDIR)/../uavobject-synthetics/flight
    
    # List C source files here. (C dependencies are automatically generated.)
    # use file-extension c for "c-only"-files
    
    ifndef TESTAPP
    ## MODULES
    SRC += ${foreach MOD, ${OPTMODULES}, ${wildcard ${OPMODULEDIR}/${MOD}/*.c}}
    SRC += ${foreach MOD, ${MODULES}, ${wildcard ${OPMODULEDIR}/${MOD}/*.c}}
    ## OPENPILOT CORE:
    SRC += ${OPMODULEDIR}/System/systemmod.c
    SRC += $(OPSYSTEM)/coptercontrol.c
    SRC += $(OPSYSTEM)/pios_board.c
    SRC += $(OPSYSTEM)/alarms.c
    SRC += $(OPUAVTALK)/uavtalk.c
    SRC += $(OPUAVOBJ)/uavobjectmanager.c
    SRC += $(OPUAVOBJ)/eventdispatcher.c
    else
    ## TESTCODE
    SRC += $(OPTESTS)/test_common.c
    SRC += $(OPTESTS)/$(TESTAPP).c
    endif
    
    
    
    ## UAVOBJECTS
    ifndef TESTAPP
    SRC += $(OPUAVSYNTHDIR)/accessorydesired.c
    SRC += $(OPUAVSYNTHDIR)/objectpersistence.c
    SRC += $(OPUAVSYNTHDIR)/gcstelemetrystats.c
    SRC += $(OPUAVSYNTHDIR)/flighttelemetrystats.c
    SRC += $(OPUAVSYNTHDIR)/faultsettings.c
    SRC += $(OPUAVSYNTHDIR)/flightstatus.c
    SRC += $(OPUAVSYNTHDIR)/systemstats.c
    SRC += $(OPUAVSYNTHDIR)/systemalarms.c
    SRC += $(OPUAVSYNTHDIR)/systemsettings.c
    SRC += $(OPUAVSYNTHDIR)/stabilizationdesired.c
    SRC += $(OPUAVSYNTHDIR)/stabilizationsettings.c
    SRC += $(OPUAVSYNTHDIR)/actuatorcommand.c
    SRC += $(OPUAVSYNTHDIR)/actuatordesired.c
    SRC += $(OPUAVSYNTHDIR)/actuatorsettings.c
    SRC += $(OPUAVSYNTHDIR)/attituderaw.c
    SRC += $(OPUAVSYNTHDIR)/attitudeactual.c
    SRC += $(OPUAVSYNTHDIR)/manualcontrolcommand.c
    SRC += $(OPUAVSYNTHDIR)/i2cstats.c
    SRC += $(OPUAVSYNTHDIR)/watchdogstatus.c
    SRC += $(OPUAVSYNTHDIR)/manualcontrolsettings.c
    SRC += $(OPUAVSYNTHDIR)/mixersettings.c
    SRC += $(OPUAVSYNTHDIR)/firmwareiapobj.c
    SRC += $(OPUAVSYNTHDIR)/attitudesettings.c
    SRC += $(OPUAVSYNTHDIR)/camerastabsettings.c
    SRC += $(OPUAVSYNTHDIR)/cameradesired.c
    SRC += $(OPUAVSYNTHDIR)/gpsposition.c
    SRC += $(OPUAVSYNTHDIR)/hwsettings.c
    SRC += $(OPUAVSYNTHDIR)/gcsreceiver.c
    SRC += $(OPUAVSYNTHDIR)/receiveractivity.c
    SRC += $(OPUAVSYNTHDIR)/taskinfo.c
    SRC += $(OPUAVSYNTHDIR)/mixerstatus.c
    SRC += $(OPUAVSYNTHDIR)/ratedesired.c
    SRC += $(OPUAVSYNTHDIR)/baroaltitude.c
    SRC += $(OPUAVSYNTHDIR)/txpidsettings.c
    
    endif
    
    ## PIOS Hardware (STM32F10x)
    SRC += $(PIOSSTM32F10X)/pios_sys.c
    SRC += $(PIOSSTM32F10X)/pios_led.c
    SRC += $(PIOSSTM32F10X)/pios_delay.c
    SRC += $(PIOSSTM32F10X)/pios_usart.c
    SRC += $(PIOSSTM32F10X)/pios_irq.c
    SRC += $(PIOSSTM32F10X)/pios_adc.c
    SRC += $(PIOSSTM32F10X)/pios_servo.c
    SRC += $(PIOSSTM32F10X)/pios_i2c.c
    SRC += $(PIOSSTM32F10X)/pios_spi.c
    SRC += $(PIOSSTM32F10X)/pios_ppm.c
    SRC += $(PIOSSTM32F10X)/pios_pwm.c
    SRC += $(PIOSSTM32F10X)/pios_dsm.c
    SRC += $(PIOSSTM32F10X)/pios_sbus.c
    SRC += $(PIOSSTM32F10X)/pios_debug.c
    SRC += $(PIOSSTM32F10X)/pios_gpio.c
    SRC += $(PIOSSTM32F10X)/pios_exti.c
    SRC += $(PIOSSTM32F10X)/pios_rtc.c
    SRC += $(PIOSSTM32F10X)/pios_wdg.c
    SRC += $(PIOSSTM32F10X)/pios_tim.c
    
    
    # PIOS USB related files (separated to make code maintenance more easy)
    SRC += $(PIOSSTM32F10X)/pios_usb.c
    SRC += $(PIOSSTM32F10X)/pios_usbhook.c
    SRC += $(PIOSSTM32F10X)/pios_usb_hid.c
    SRC += $(PIOSSTM32F10X)/pios_usb_cdc.c
    SRC += $(PIOSSTM32F10X)/pios_usb_hid_istr.c
    SRC += $(PIOSSTM32F10X)/pios_usb_hid_pwr.c
    SRC += $(OPSYSTEM)/pios_usb_board_data.c
    SRC += $(PIOSCOMMON)/pios_usb_desc_hid_cdc.c
    SRC += $(PIOSCOMMON)/pios_usb_desc_hid_only.c
    
    ## PIOS Hardware (Common)
    SRC += $(PIOSCOMMON)/pios_crc.c
    SRC += $(PIOSCOMMON)/pios_flashfs_objlist.c
    SRC += $(PIOSCOMMON)/pios_flash_w25x.c
    SRC += $(PIOSCOMMON)/pios_adxl345.c
    SRC += $(PIOSCOMMON)/pios_com.c
    SRC += $(PIOSCOMMON)/pios_i2c_esc.c
    SRC += $(PIOSCOMMON)/pios_bmp085.c
    SRC += $(PIOSCOMMON)/pios_iap.c
    SRC += $(PIOSCOMMON)/pios_bl_helper.c
    SRC += $(PIOSCOMMON)/pios_rcvr.c
    SRC += $(PIOSCOMMON)/pios_gcsrcvr.c
    SRC += $(PIOSCOMMON)/printf-stdarg.c
    ## Libraries for flight calculations
    SRC += $(FLIGHTLIB)/fifo_buffer.c
    SRC += $(FLIGHTLIB)/CoordinateConversions.c
    SRC += $(FLIGHTLIB)/taskmonitor.c
    
    ## CMSIS for STM32
    SRC += $(CMSISDIR)/core_cm3.c
    SRC += $(CMSISDIR)/system_stm32f10x.c
    
    ## Used parts of the STM-Library
    SRC += $(STMSPDSRCDIR)/stm32f10x_adc.c
    SRC += $(STMSPDSRCDIR)/stm32f10x_bkp.c
    SRC += $(STMSPDSRCDIR)/stm32f10x_crc.c
    SRC += $(STMSPDSRCDIR)/stm32f10x_dac.c
    SRC += $(STMSPDSRCDIR)/stm32f10x_dma.c
    SRC += $(STMSPDSRCDIR)/stm32f10x_exti.c
    SRC += $(STMSPDSRCDIR)/stm32f10x_flash.c
    SRC += $(STMSPDSRCDIR)/stm32f10x_gpio.c
    SRC += $(STMSPDSRCDIR)/stm32f10x_i2c.c
    SRC += $(STMSPDSRCDIR)/stm32f10x_pwr.c
    SRC += $(STMSPDSRCDIR)/stm32f10x_rcc.c
    SRC += $(STMSPDSRCDIR)/stm32f10x_rtc.c
    SRC += $(STMSPDSRCDIR)/stm32f10x_spi.c
    SRC += $(STMSPDSRCDIR)/stm32f10x_tim.c
    SRC += $(STMSPDSRCDIR)/stm32f10x_usart.c
    SRC += $(STMSPDSRCDIR)/stm32f10x_iwdg.c
    SRC += $(STMSPDSRCDIR)/stm32f10x_dbgmcu.c
    SRC += $(STMSPDSRCDIR)/misc.c
    
    ## STM32 USB Library
    SRC += $(STMUSBSRCDIR)/usb_core.c
    SRC += $(STMUSBSRCDIR)/usb_init.c
    SRC += $(STMUSBSRCDIR)/usb_int.c
    SRC += $(STMUSBSRCDIR)/usb_mem.c
    SRC += $(STMUSBSRCDIR)/usb_regs.c
    SRC += $(STMUSBSRCDIR)/usb_sil.c
    
    ## RTOS
    SRC += $(RTOSSRCDIR)/list.c
    SRC += $(RTOSSRCDIR)/queue.c
    SRC += $(RTOSSRCDIR)/tasks.c
    
    ## RTOS Portable
    SRC += $(RTOSSRCDIR)/portable/GCC/ARM_CM3/port.c
    SRC += $(RTOSSRCDIR)/portable/MemMang/heap_1.c
    
    ## Dosfs file system
    #SRC += $(DOSFSDIR)/dosfs.c
    #SRC += $(DOSFSDIR)/dfs_sdcard.c
    
    ## PyMite files
    #SRC += $(wildcard ${PYMITEVM}/*.c)
    #SRC += $(wildcard ${PYMITEPLAT}/*.c)
    #SRC += $(OUTDIR)/pmlib_img.c
    #SRC += $(OUTDIR)/pmlib_nat.c
    #SRC += $(OUTDIR)/pmlibusr_img.c
    #SRC += $(OUTDIR)/pmlibusr_nat.c
    
    ## Mass Storage Device
    #SRC += $(MSDDIR)/msd.c
    #SRC += $(MSDDIR)/msd_bot.c
    #SRC += $(MSDDIR)/msd_desc.c
    #SRC += $(MSDDIR)/msd_memory.c
    #SRC += $(MSDDIR)/msd_scsi.c
    #SRC += $(MSDDIR)/msd_scsi_data.c
    
    # List C source files here which must be compiled in ARM-Mode (no -mthumb).
    # use file-extension c for "c-only"-files
    ## just for testing, timer.c could be compiled in thumb-mode too
    SRCARM =
    
    # List C++ source files here.
    # use file-extension .cpp for C++-files (not .C)
    CPPSRC =
    
    # List C++ source files here which must be compiled in ARM-Mode.
    # use file-extension .cpp for C++-files (not .C)
    #CPPSRCARM = $(TARGET).cpp
    CPPSRCARM =
    
    # List Assembler source files here.
    # Make them always end in a capital .S. Files ending in a lowercase .s
    # will not be considered source files but generated files (assembler
    # output from the compiler), and will be deleted upon "make clean"!
    # Even though the DOS/Win* filesystem matches both .s and .S the same,
    # it will preserve the spelling of the filenames, and gcc itself does
    # care about how the name is spelled on its command-line.
    ASRC = $(PIOSSTM32F10X)/startup_stm32f10x_$(MODEL)$(MODEL_SUFFIX).S
    
    # List Assembler source files here which must be assembled in ARM-Mode..
    ASRCARM =
    
    # List any extra directories to look for include files here.
    #    Each directory must be seperated by a space.
    EXTRAINCDIRS  =  $(OPSYSTEM)
    EXTRAINCDIRS  += $(OPSYSTEMINC)
    EXTRAINCDIRS  += $(OPUAVTALK)
    EXTRAINCDIRS  += $(OPUAVTALKINC)
    EXTRAINCDIRS  += $(OPUAVOBJ)
    EXTRAINCDIRS  += $(OPUAVOBJINC)
    EXTRAINCDIRS  += $(OPUAVSYNTHDIR)
    EXTRAINCDIRS  += $(PIOS)
    EXTRAINCDIRS  += $(PIOSINC)
    EXTRAINCDIRS  += $(FLIGHTLIBINC)
    EXTRAINCDIRS  += $(PIOSSTM32F10X)
    EXTRAINCDIRS  += $(PIOSCOMMON)
    EXTRAINCDIRS  += $(PIOSBOARDS)
    EXTRAINCDIRS  += $(STMSPDINCDIR)
    EXTRAINCDIRS  += $(STMUSBINCDIR)
    EXTRAINCDIRS  += $(CMSISDIR)
    EXTRAINCDIRS  += $(DOSFSDIR)
    EXTRAINCDIRS  += $(MSDDIR)
    EXTRAINCDIRS  += $(RTOSINCDIR)
    EXTRAINCDIRS  += $(APPLIBDIR)
    EXTRAINCDIRS  += $(RTOSSRCDIR)/portable/GCC/ARM_CM3
    EXTRAINCDIRS  += $(AHRSBOOTLOADERINC)
    EXTRAINCDIRS  += $(PYMITEINC)
    EXTRAINCDIRS  += $(HWDEFSINC)
    
    EXTRAINCDIRS += ${foreach MOD, ${OPTMODULES} ${MODULES}, ${OPMODULEDIR}/${MOD}/inc} ${OPMODULEDIR}/System/inc
    
    
    # List any extra directories to look for library files here.
    # Also add directories where the linker should search for
    # includes from linker-script to the list
    #     Each directory must be seperated by a space.
    EXTRA_LIBDIRS =
    
    # Extra Libraries
    #    Each library-name must be seperated by a space.
    #    i.e. to link with libxyz.a, libabc.a and libefsl.a:
    #    EXTRA_LIBS = xyz abc efsl
    # for newlib-lpc (file: libnewlibc-lpc.a):
    #    EXTRA_LIBS = newlib-lpc
    EXTRA_LIBS =
    
    # Path to Linker-Scripts
    LINKERSCRIPTPATH = $(PIOSSTM32F10X)
    
    # Optimization level, can be [0, 1, 2, 3, s].
    # 0 = turn off optimization. s = optimize for size.
    # (Note: 3 is not always the best optimization level. See avr-libc FAQ.)
    
    ifeq ($(DEBUG),YES)
    OPT = 1
    else
    OPT = s
    endif
    
    # Output format. (can be ihex or binary or both)
    #  binary to create a load-image in raw-binary format i.e. for SAM-BA,
    #  ihex to create a load-image in Intel hex format
    #LOADFORMAT = ihex
    #LOADFORMAT = binary
    LOADFORMAT = both
    
    # Debugging format.
    DEBUGF = dwarf-2
    
    # Place project-specific -D (define) and/or
    # -U options for C here.
    CDEFS = -DSTM32F10X_$(MODEL)
    CDEFS += -DUSE_STDPERIPH_DRIVER
    CDEFS += -DUSE_$(BOARD)
    ifeq ($(ENABLE_DEBUG_PINS), YES)
    CDEFS += -DPIOS_ENABLE_DEBUG_PINS
    endif
    ifeq ($(ENABLE_AUX_UART), YES)
    CDEFS += -DPIOS_ENABLE_AUX_UART
    endif
    ifeq ($(ERASE_FLASH), YES)
    CDEFS += -DERASE_FLASH
    endif
    
    ifneq ($(USE_GPS), NO)
    CDEFS += -DUSE_GPS
    endif
    
    ifeq ($(USE_I2C), YES)
    CDEFS += -DUSE_I2C
    endif
    
    # Declare all non-optional modules as built-in to force inclusion
    CDEFS += ${foreach MOD, ${MODULES}, -DMODULE_$(MOD)_BUILTIN }
    
    # Place project-specific -D and/or -U options for
    # Assembler with preprocessor here.
    #ADEFS = -DUSE_IRQ_ASM_WRAPPER
    ADEFS = -D__ASSEMBLY__
    
    # Compiler flag to set the C Standard level.
    # c89   - "ANSI" C
    # gnu89 - c89 plus GCC extensions
    # c99   - ISO C99 standard (not yet fully implemented)
    # gnu99 - c99 plus GCC extensions
    CSTANDARD = -std=gnu99
    
    #-----
    
    # Compiler flags.
    
    #  -g*:          generate debugging information
    #  -O*:          optimization level
    #  -f...:        tuning, see GCC manual and avr-libc documentation
    #  -Wall...:     warning level
    #  -Wa,...:      tell GCC to pass this to the assembler.
    #    -adhlns...: create assembler listing
    #
    # Flags for C and C++ (arm-elf-gcc/arm-elf-g++)
    
    ifeq ($(DEBUG),YES)
    CFLAGS += -DDEBUG
    endif
    
    ifeq ($(DIAGNOSTICS),YES)
    CFLAGS += -DDIAGNOSTICS
    endif
    
    ifeq ($(DIAG_TASKS),YES)
    CFLAGS += -DDIAG_TASKS
    endif
    
    CFLAGS += -g$(DEBUGF)
    CFLAGS += -O$(OPT)
    CFLAGS += -mcpu=$(MCU)
    CFLAGS += $(CDEFS)
    CFLAGS += $(patsubst %,-I%,$(EXTRAINCDIRS)) -I.
    
    #CFLAGS += -fno-cprop-registers -fno-defer-pop -fno-guess-branch-probability -fno-section-anchors
    #CFLAGS += -fno-if-conversion -fno-if-conversion2 -fno-ipa-pure-const -fno-ipa-reference -fno-merge-constants
    #CFLAGS += -fno-split-wide-types -fno-tree-ccp -fno-tree-ch -fno-tree-copy-prop -fno-tree-copyrename
    #CFLAGS += -fno-tree-dce -fno-tree-dominator-opts -fno-tree-dse -fno-tree-fre -fno-tree-sink -fno-tree-sra
    #CFLAGS += -fno-tree-ter
    #CFLAGS += -g$(DEBUGF) -DDEBUG
    
    CFLAGS += -mapcs-frame
    CFLAGS += -fomit-frame-pointer
    ifeq ($(CODE_SOURCERY), YES)
    CFLAGS += -fpromote-loop-indices
    endif
    
    CFLAGS += -Wall
    CFLAGS += -Werror
    CFLAGS += -Wa,-adhlns=$(addprefix $(OUTDIR)/, $(notdir $(addsuffix .lst, $(basename $<))))
    # Compiler flags to generate dependency files:
    CFLAGS += -MD -MP -MF $(OUTDIR)/dep/$(@F).d
    
    # flags only for C
    #CONLYFLAGS += -Wnested-externs
    CONLYFLAGS += $(CSTANDARD)
    
    # Assembler flags.
    #  -Wa,...:    tell GCC to pass this to the assembler.
    #  -ahlns:     create listing
    ASFLAGS  = -mcpu=$(MCU) -I. -x assembler-with-cpp
    ASFLAGS += $(ADEFS)
    ASFLAGS += -Wa,-adhlns=$(addprefix $(OUTDIR)/, $(notdir $(addsuffix .lst, $(basename $<))))
    ASFLAGS += $(patsubst %,-I%,$(EXTRAINCDIRS))
    
    MATH_LIB = -lm
    
    # Linker flags.
    #  -Wl,...:     tell GCC to pass this to linker.
    #    -Map:      create map file
    #    --cref:    add cross reference to  map file
    LDFLAGS = -nostartfiles -Wl,-Map=$(OUTDIR)/$(TARGET).map,--cref,--gc-sections
    LDFLAGS += $(patsubst %,-L%,$(EXTRA_LIBDIRS))
    LDFLAGS += -lc
    LDFLAGS += $(patsubst %,-l%,$(EXTRA_LIBS))
    LDFLAGS += $(MATH_LIB)
    LDFLAGS += -lc -lgcc
    
    # Set linker-script name depending on selected submodel name
    LDFLAGS += -T$(LINKERSCRIPTPATH)/link_$(BOARD)_memory.ld
    LDFLAGS += -T$(LINKERSCRIPTPATH)/link_$(BOARD)_sections.ld
    
    # Define programs and commands.
    REMOVE  = $(REMOVE_CMD) -f
    PYTHON  = python
    
    # List of all source files.
    ALLSRC     = $(ASRCARM) $(ASRC) $(SRCARM) $(SRC) $(CPPSRCARM) $(CPPSRC)
    # List of all source files without directory and file-extension.
    ALLSRCBASE = $(notdir $(basename $(ALLSRC)))
    
    # Define all object files.
    ALLOBJ     = $(addprefix $(OUTDIR)/, $(addsuffix .o, $(ALLSRCBASE)))
    
    # Define all listing files (used for make clean).
    LSTFILES   = $(addprefix $(OUTDIR)/, $(addsuffix .lst, $(ALLSRCBASE)))
    # Define all depedency-files (used for make clean).
    DEPFILES   = $(addprefix $(OUTDIR)/dep/, $(addsuffix .o.d, $(ALLSRCBASE)))
    
    # Default target.
    all: build
    
    ifeq ($(LOADFORMAT),ihex)
    build: elf hex lss sym
    else
    ifeq ($(LOADFORMAT),binary)
    build: elf bin lss sym
    else
    ifeq ($(LOADFORMAT),both)
    build: elf hex bin lss sym
    else
    $(error "$(MSG_FORMATERROR) $(FORMAT)")
    endif
    endif
    endif
    
    # Generate code for PyMite
    #$(OUTDIR)/pmlib_img.c $(OUTDIR)/pmlib_nat.c $(OUTDIR)/pmlibusr_img.c $(OUTDIR)/pmlibusr_nat.c $(OUTDIR)/pmfeatures.h: $(wildcard $(PYMITELIB)/*.py) $(wildcard $(PYMITEPLAT)/*.py) $(wildcard $(FLIGHTPLANLIB)/*.py) $(wildcard $(FLIGHTPLANS)/*.py)
    #	@echo $(MSG_PYMITEINIT) $(call toprel, $@)
    #	@$(PYTHON) $(PYMITETOOLS)/pmImgCreator.py -f $(PYMITEPLAT)/pmfeatures.py -c -s --memspace=flash -o $(OUTDIR)/pmlib_img.c --native-file=$(OUTDIR)/pmlib_nat.c $(PYMITELIB)/list.py $(PYMITELIB)/dict.py $(PYMITELIB)/__bi.py $(PYMITELIB)/sys.py $(PYMITELIB)/string.py $(wildcard $(FLIGHTPLANLIB)/*.py)
    #	@$(PYTHON) $(PYMITETOOLS)/pmGenPmFeatures.py $(PYMITEPLAT)/pmfeatures.py > $(OUTDIR)/pmfeatures.h
    #	@$(PYTHON) $(PYMITETOOLS)/pmImgCreator.py -f $(PYMITEPLAT)/pmfeatures.py -c -u -o $(OUTDIR)/pmlibusr_img.c --native-file=$(OUTDIR)/pmlibusr_nat.c $(FLIGHTPLANS)/test.py
    
    # Link: create ELF output file from object files.
    $(eval $(call LINK_TEMPLATE, $(OUTDIR)/$(TARGET).elf, $(ALLOBJ)))
    
    # Assemble: create object files from assembler source files.
    $(foreach src, $(ASRC), $(eval $(call ASSEMBLE_TEMPLATE, $(src))))
    
    # Assemble: create object files from assembler source files. ARM-only
    $(foreach src, $(ASRCARM), $(eval $(call ASSEMBLE_ARM_TEMPLATE, $(src))))
    
    # Compile: create object files from C source files.
    $(foreach src, $(SRC), $(eval $(call COMPILE_C_TEMPLATE, $(src))))
    
    # Compile: create object files from C source files. ARM-only
    $(foreach src, $(SRCARM), $(eval $(call COMPILE_C_ARM_TEMPLATE, $(src))))
    
    # Compile: create object files from C++ source files.
    $(foreach src, $(CPPSRC), $(eval $(call COMPILE_CPP_TEMPLATE, $(src))))
    
    # Compile: create object files from C++ source files. ARM-only
    $(foreach src, $(CPPSRCARM), $(eval $(call COMPILE_CPP_ARM_TEMPLATE, $(src))))
    
    # Compile: create assembler files from C source files. ARM/Thumb
    $(eval $(call PARTIAL_COMPILE_TEMPLATE, SRC))
    
    # Compile: create assembler files from C source files. ARM only
    $(eval $(call PARTIAL_COMPILE_ARM_TEMPLATE, SRCARM))
    
    $(OUTDIR)/$(TARGET).bin.o: $(OUTDIR)/$(TARGET).bin
    
    $(eval $(call OPFW_TEMPLATE,$(OUTDIR)/$(TARGET).bin,$(BOARD_TYPE),$(BOARD_REVISION)))
    
    # Add jtag targets (program and wipe)
    $(eval $(call JTAG_TEMPLATE,$(OUTDIR)/$(TARGET).bin,$(FW_BANK_BASE),$(FW_BANK_SIZE),$(OPENOCD_CONFIG)))
    
    .PHONY: elf lss sym hex bin bino opfw
    elf: $(OUTDIR)/$(TARGET).elf
    lss: $(OUTDIR)/$(TARGET).lss
    sym: $(OUTDIR)/$(TARGET).sym
    hex: $(OUTDIR)/$(TARGET).hex
    bin: $(OUTDIR)/$(TARGET).bin
    bino: $(OUTDIR)/$(TARGET).bin.o
    opfw: $(OUTDIR)/$(TARGET).opfw
    
    # Display sizes of sections.
    $(eval $(call SIZE_TEMPLATE, $(OUTDIR)/$(TARGET).elf))
    
    # Generate Doxygen documents
    docs:
    	doxygen  $(DOXYGENDIR)/doxygen.cfg
    
    # Install: install binary file with prefix/suffix into install directory
    install: $(OUTDIR)/$(TARGET).opfw
    ifneq ($(INSTALL_DIR),)
    	@echo $(MSG_INSTALLING) $(call toprel, $<)
    	$(V1) mkdir -p $(INSTALL_DIR)
    	$(V1) $(INSTALL) $< $(INSTALL_DIR)/$(INSTALL_PFX)$(TARGET)$(INSTALL_SFX).opfw
    else
    	$(error INSTALL_DIR must be specified for $@)
    endif
    
    # Target: clean project.
    clean: clean_list
    
    clean_list :
    	@echo $(MSG_CLEANING)
    	$(V1) $(REMOVE) $(OUTDIR)/$(TARGET).map
    	$(V1) $(REMOVE) $(OUTDIR)/$(TARGET).elf
    	$(V1) $(REMOVE) $(OUTDIR)/$(TARGET).hex
    	$(V1) $(REMOVE) $(OUTDIR)/$(TARGET).bin
    	$(V1) $(REMOVE) $(OUTDIR)/$(TARGET).sym
    	$(V1) $(REMOVE) $(OUTDIR)/$(TARGET).lss
    	$(V1) $(REMOVE) $(OUTDIR)/$(TARGET).bin.o
    	$(V1) $(REMOVE) $(wildcard $(OUTDIR)/*.c)
    	$(V1) $(REMOVE) $(wildcard $(OUTDIR)/*.h)
    	$(V1) $(REMOVE) $(ALLOBJ)
    	$(V1) $(REMOVE) $(LSTFILES)
    	$(V1) $(REMOVE) $(DEPFILES)
    	$(V1) $(REMOVE) $(SRC:.c=.s)
    	$(V1) $(REMOVE) $(SRCARM:.c=.s)
    	$(V1) $(REMOVE) $(CPPSRC:.cpp=.s)
    	$(V1) $(REMOVE) $(CPPSRCARM:.cpp=.s)
    
    
    # Create output files directory
    # all known MS Windows OS define the ComSpec environment variable
    ifdef ComSpec
    $(shell md $(subst /,\\,$(OUTDIR)) 2>NUL)
    else
    $(shell mkdir -p $(OUTDIR) 2>/dev/null)
    endif
    
    # Include the dependency files.
    ifdef ComSpec
    -include $(shell md $(subst /,\\,$(OUTDIR))\dep 2>NUL) $(wildcard $(OUTDIR)/dep/*)
    else
    -include $(shell mkdir -p $(OUTDIR) 2>/dev/null) $(shell mkdir $(OUTDIR)/dep 2>/dev/null) $(wildcard $(OUTDIR)/dep/*)
    endif
    
    # Listing of phony targets.
    .PHONY : all build clean clean_list install

  22. #379

    Регистрация
    01.11.2010
    Адрес
    Belarus Slonim
    Возраст
    36
    Сообщений
    4,462
    Записей в дневнике
    8
    Вот сдесь всё правильно?
    Код:
    # Place project-specific -D (define) and/or
    # -U options for C here.
    CDEFS = -DSTM32F10X_$(MODEL)
    CDEFS += -DUSE_STDPERIPH_DRIVER
    CDEFS += -DUSE_$(BOARD)
    ifeq ($(ENABLE_DEBUG_PINS), YES)
    CDEFS += -DPIOS_ENABLE_DEBUG_PINS
    endif
    ifeq ($(ENABLE_AUX_UART), YES)
    CDEFS += -DPIOS_ENABLE_AUX_UART
    endif
    ifeq ($(ERASE_FLASH), YES)
    CDEFS += -DERASE_FLASH
    endif
    
    ifneq ($(USE_GPS), NO) #почему NO?
    CDEFS += -DUSE_GPS
    endif
    
    ifeq ($(USE_I2C), YES)
    CDEFS += -DUSE_I2C
    endif
    или сдесь ешё altitude вписать надо?
    Последний раз редактировалось SergDoc; 05.04.2012 в 13:33.

  23. #380

    Регистрация
    17.06.2011
    Адрес
    Минск
    Возраст
    39
    Сообщений
    1,941
    Цитата Сообщение от leprud Посмотреть сообщение
    March 26th, 2012, 12:49 pm The part of the press release is referring to the secondary I2C bus on the MPU that would allow interfacing to an external magnetometer. So the raw data processing is offloaded, and sensor fusion can be run on the DMP, so in that sense it offloads some processing from the MCU. But you are right that the calibration algorithms run on the MCU. We do have a library for 8-bit micros like the 8051 and Atmega MCUs. Since we have very minimal resources to support it and hence been released to select customers only. Thank you Cheers, InvenSense Team.
    Я читал на форуме DIYDrones, якобы поддержка 6050 у них готова, загвоздка только в лицензировании от Invensense... либо врут

  24. #381

    Регистрация
    01.11.2010
    Адрес
    Belarus Slonim
    Возраст
    36
    Сообщений
    4,462
    Записей в дневнике
    8
    Цитата Сообщение от SergDoc Посмотреть сообщение
    или сдесь ешё altitude вписать надо?
    непомогло

    Цитата Сообщение от HikeR Посмотреть сообщение
    кстати, а что вы собрались делать с этой веткой? она умеет моргать светодиодом по любой активности барометра или компаса. чтения и тем более записи цифр в дерево объектов там нет.
    Дмитрий, оно то моргает, и с платкой и без, опять засада...

    попробую прошить, посмотрю на работе что с шиной творится....
    Последний раз редактировалось SergDoc; 05.04.2012 в 15:32.

  25. #382

    Регистрация
    01.11.2010
    Адрес
    Belarus Slonim
    Возраст
    36
    Сообщений
    4,462
    Записей в дневнике
    8
    sambas/mag_baro_testapp - шина запускается, но я так понял нет ответа от устройств, теперь возникает вопрос что делать дальше, буду сидеть сравнивать....

  26. #383

    Регистрация
    01.11.2010
    Адрес
    Belarus Slonim
    Возраст
    36
    Сообщений
    4,462
    Записей в дневнике
    8
    pios_board совсем разные создаётся чувство что про i2c совсем забыли, есть указание что переключить FLEXIPORT, а как работать оно должно -бог его знает...
    разница:
    ветка next
    Код:
    case HWSETTINGS_CC_FLEXIPORT_I2C:
    #if defined(PIOS_INCLUDE_I2C)
    		{
    			if (PIOS_I2C_Init(&pios_i2c_flexi_adapter_id, &pios_i2c_flexi_adapter_cfg)) {
    				PIOS_Assert(0);
    			}
    		}
    #endif	/* PIOS_INCLUDE_I2C */
    		break;
    и sambas/mag_baro_testapp
    Код:
    /*
     * I2C Adapters
     */
    
    void PIOS_I2C_main_adapter_ev_irq_handler(void);
    void PIOS_I2C_main_adapter_er_irq_handler(void);
    void I2C2_EV_IRQHandler() __attribute__ ((alias ("PIOS_I2C_main_adapter_ev_irq_handler")));
    void I2C2_ER_IRQHandler() __attribute__ ((alias ("PIOS_I2C_main_adapter_er_irq_handler")));
    
    static const struct pios_i2c_adapter_cfg pios_i2c_main_adapter_cfg = {
      .regs = I2C2,
      .init = {
        .I2C_Mode                = I2C_Mode_I2C,
        .I2C_OwnAddress1         = 0,
        .I2C_Ack                 = I2C_Ack_Enable,
        .I2C_AcknowledgedAddress = I2C_AcknowledgedAddress_7bit,
        .I2C_DutyCycle           = I2C_DutyCycle_2,
        .I2C_ClockSpeed          = 200000,	/* bits/s */
      },
      .transfer_timeout_ms = 50,
      .scl = {
        .gpio = GPIOB,
        .init = {
          .GPIO_Pin   = GPIO_Pin_10,
          .GPIO_Speed = GPIO_Speed_10MHz,
          .GPIO_Mode  = GPIO_Mode_AF_OD,
        },
      },
      .sda = {
        .gpio = GPIOB,
        .init = {
          .GPIO_Pin   = GPIO_Pin_11,
          .GPIO_Speed = GPIO_Speed_10MHz,
          .GPIO_Mode  = GPIO_Mode_AF_OD,
        },
      },
      .event = {
        .handler = NULL,
        .flags   = 0,		/* FIXME: check this */
        .init = {
          .NVIC_IRQChannel                   = I2C2_EV_IRQn,
          .NVIC_IRQChannelPreemptionPriority = 1,
          .NVIC_IRQChannelSubPriority        = 4,
          .NVIC_IRQChannelCmd                = ENABLE,
        },
      },
      .error = {
        .handler = NULL,
        .flags   = 0,		/* FIXME: check this */
        .init = {
          .NVIC_IRQChannel                   = I2C2_ER_IRQn,
          .NVIC_IRQChannelPreemptionPriority = 1,
          .NVIC_IRQChannelSubPriority        = 3,
          .NVIC_IRQChannelCmd                = ENABLE,
        },
      },
    };
    
    uint32_t pios_i2c_main_adapter_id;
    void PIOS_I2C_main_adapter_ev_irq_handler(void)
    {
      /* Call into the generic code to handle the IRQ for this specific device */
      PIOS_I2C_EV_IRQ_Handler(pios_i2c_main_adapter_id);
    }
    
    void PIOS_I2C_main_adapter_er_irq_handler(void)
    {
      /* Call into the generic code to handle the IRQ for this specific device */
      PIOS_I2C_ER_IRQ_Handler(pios_i2c_main_adapter_id);
    }
    
    #endif /* PIOS_INCLUDE_I2C */
    ну и так далее
    файлы
    pios_i2c.h
    pios_i2c.c
    pios_i2c_priv.h

    одинаковые с веткой NEXT (ну если несчитать ремапинга)

    в Makefile тоже ничего сверхестественного нет, я опять в тупике

  27. #384

    Регистрация
    01.11.2010
    Адрес
    Belarus Slonim
    Возраст
    36
    Сообщений
    4,462
    Записей в дневнике
    8
    Листая - читая, понял что в CC на данный момент функция i2c вообще упразнена, яко-бы может быть - когда-нибудь, в REVO вроде как i2c работает и по идее полностью такая-же как и должна быть в CC, но к сожалению я пока не в состоянии выдернуть из одного и вставить в другое без кучи ошибок, буду экспериментировать....

  28. #385

    Регистрация
    21.01.2012
    Адрес
    Аделаида
    Возраст
    40
    Сообщений
    350
    Цитата Сообщение от SergDoc Посмотреть сообщение
    в REVO вроде как i2c
    Я не специалистЪ но краем уха слышал что в рево STM32F4, а он вроде как с i2c лучше дружит чем m3

  29. #386

    Регистрация
    11.05.2008
    Адрес
    Великий Новгород
    Возраст
    38
    Сообщений
    3,939
    Записей в дневнике
    22
    Naze32 на F103 со всеми датчиками по I2C работает, так что проблема не в процессоре.

  30. #387

    Регистрация
    01.11.2010
    Адрес
    Belarus Slonim
    Возраст
    36
    Сообщений
    4,462
    Записей в дневнике
    8
    А у меня пока без изменений, шина неработает, ещё пока компилировал станцию положил платку около кулера - гиры поплыли мама негорюй, разонравилась мне уже эта схема, реально где купить MPU-6000?

  31. #388

    Регистрация
    17.06.2011
    Адрес
    Минск
    Возраст
    39
    Сообщений
    1,941

  32. #389

    Регистрация
    01.11.2010
    Адрес
    Belarus Slonim
    Возраст
    36
    Сообщений
    4,462
    Записей в дневнике
    8
    У 6050 нет SPI и логика запитывается от 1.8 В, а я хочу SPI...

  33. #390

    Регистрация
    19.01.2012
    Адрес
    Киев, украина
    Возраст
    62
    Сообщений
    253
    Цитата Сообщение от SergDoc Посмотреть сообщение
    У 6050 нет SPI и логика запитывается от 1.8 В, а я хочу SPI...
    Это логично, но MPU6000 нашел я только в США с рассылкой по США и Канаде. Поэтому до появления MPU6000 и MPU9150 может играться с гироскопами STM ? У STM тоже будет девятиосевая микросхема. И у них она заявлена по 3,1 ам. руб. в партии 1000 шт. В принципе любые гироскопы нормально летают.

  34. #391

    Регистрация
    01.11.2010
    Адрес
    Belarus Slonim
    Возраст
    36
    Сообщений
    4,462
    Записей в дневнике
    8
    LSM330DL - но смущает одно - у гиры и акселя раздельные шины и если по SPI то дофига получается дорожек разводить, а i2c я уже рисовал но пока чёт нерешаюсь делать....

  35. #392

    Регистрация
    19.01.2012
    Адрес
    Киев, украина
    Возраст
    62
    Сообщений
    253
    Цитата Сообщение от SergDoc Посмотреть сообщение
    LSM330DL - но смущает одно - у гиры и акселя раздельные шины и если по SPI то дофига получается дорожек разводить, а i2c я уже рисовал но пока чёт нерешаюсь делать....
    Да в принципе все это с SPI имеет смысл если повышать скорость считывания данных. При 200 Гц можно и I2C обойтись и по большому счету и 32 разряда не надо. Я на мультиВие упражнялся, так проблем особых нет. Мы тут какую то макетницу рисуем и будем делать . Посему могу выложить, когда чертежик будет и в принципе готовые платки тож будут заводские , но все это не очень быстро. Поскольку работать иногда надо.

  36. #393

    Регистрация
    11.05.2008
    Адрес
    Великий Новгород
    Возраст
    38
    Сообщений
    3,939
    Записей в дневнике
    22
    аксели в СС на 3.2кГц работают (6-7 чтений с усреднением за цикл). переводить алгоритм на 200Гц — слишком много где порыться придется.

    Цитата Сообщение от igor_v_t Посмотреть сообщение
    У STM тоже будет девятиосевая микросхема. И у них она заявлена по 3,1 ам. руб.
    если вы про INEMO-M1, то она заявлена в 30-40 баксов.

  37. #394

    Регистрация
    19.01.2012
    Адрес
    Киев, украина
    Возраст
    62
    Сообщений
    253
    Цитата Сообщение от HikeR Посмотреть сообщение
    если вы про INEMO-M1, то она заявлена в 30-40 баксов.
    Не я про LSM333 .INEMO-M1 она с процессором а потом мне непонятно что делать. Обработку всю этот процессор потянет, а для вывода на моторы еще один ставить?

    Цитата Сообщение от HikeR Посмотреть сообщение
    аксели в СС на 3.2кГц работают (6-7 чтений с усреднением за цикл). переводить алгоритм на 200Гц — слишком много где порыться придется.
    По СС мнение у меня такое - с такими датчиками не стоило огород городить. Не стоят они того. По опыту играясь с MPU 6000 неправильно в программе подключил аксели и не заметил поначалу, так как гироскопы без них справлялись. С другой стороны что ни делай с акселерометрами на МультиВии ничего хорошего не получается. Поэтому усложнять алгоритмы смысл имеет при нормальных датчиках. А основная идея перехода у меня на 32 разряда - это нелинейное управление.
    Последний раз редактировалось igor_v_t; 10.04.2012 в 21:26.

  38. #395

    Регистрация
    11.05.2008
    Адрес
    Великий Новгород
    Возраст
    38
    Сообщений
    3,939
    Записей в дневнике
    22
    Цитата Сообщение от igor_v_t Посмотреть сообщение
    Обработку всю этот процессор потянет, а для вывода на моторы еще один ставить?
    ессно, это ведь прямая замена всяких 9DOF модулей без необходимости лишней обвязки. к ней так и просятся парочка дополнительных датчиков, если откроют исходники.

    Цитата Сообщение от igor_v_t Посмотреть сообщение
    с такими датчиками не стоило огород городить
    не, я имел ввиду то, что СС весь "погряз" в рилтайме. чтобы изменить частоту опроса датчиков нужно перелопатить все связанные таймауты, иначе вместо опроса плата будет слать только варнинги.
    насколько я помню, OpenPilot единственный открытый проект завязанные на RTOS, отсюда и трудности.

  39. #396

    Регистрация
    01.11.2010
    Адрес
    Belarus Slonim
    Возраст
    36
    Сообщений
    4,462
    Записей в дневнике
    8
    А я чего-то недоганяю, удаляю папку build компилирую всё заново а изменений никаких, в часности уменьшил скорость i2c поправил коэффициент для своих гир , а он непоменялся
    Цитата Сообщение от igor_v_t Посмотреть сообщение
    Не я про LSM333
    ну почему они каждому датчику собственную шину прикручивают?

  40. #397
    Забанен
    Регистрация
    12.01.2011
    Адрес
    Moscow
    Возраст
    43
    Сообщений
    952
    Цитата Сообщение от Sir Alex Посмотреть сообщение
    Я где то читал, что есть некоторые грабли у F103 процов с i2c шиной и эти грабли поправили в F4. Так что, как вариант сразу этот проц закладывать в новых проектах. Хотя кто то тут писал про свой проект построения своего софта и долгое отлавливания багов с i2c шиной, но поделится чем то полезным человек не захотел...
    Нету у кортекса проблем с и2ц

  41. #398

    Регистрация
    19.01.2012
    Адрес
    Киев, украина
    Возраст
    62
    Сообщений
    253
    Цитата Сообщение от HikeR Посмотреть сообщение
    не, я имел ввиду то, что СС весь "погряз" в рилтайме. чтобы изменить частоту опроса датчиков нужно перелопатить все связанные таймауты, иначе вместо опроса плата будет слать только варнинги. насколько я помню, OpenPilot единственный открытый проект завязанные на RTOS, отсюда и трудности.
    Ну в этом я пока не понимаю.
    Я на Атмеге игрался с этим и понимаю так, что если повышение частоты опроса не уменьшает ошибку интегрирования не имеет смысла ее повышать частоту опроса гироскопа. То же с акселем. В MPU 6000 есть ФНЧ. И вполне может быть что повышение частоты эффекта просто не даст.
    На MS5611 я эффект получил при повышении частоты до 100 Гц. Дальнейшее усреднение баро дает красивую картину. И смысла фильтровать с акселерометром нет.
    При этом на плате МультиВии (SE) с Гудлака фильтрация баро с акселерометром эффекта не дала по причине медленного акселерометра.

    Цитата Сообщение от SergDoc Посмотреть сообщение
    ну почему они каждому датчику собственную шину прикручивают?
    А может люди не мучатся а суют два кристала в один корпус?

  42. #399

    Регистрация
    01.11.2010
    Адрес
    Belarus Slonim
    Возраст
    36
    Сообщений
    4,462
    Записей в дневнике
    8
    Я вобщем решил пока так - гибрид КК и СС пока останется как есть(через 2 недели будут новые движки -опробую), заказал LSM330DL сделаю что-то на подобии NAZE32...

  43. #400

    Регистрация
    19.04.2010
    Адрес
    Ханты
    Возраст
    40
    Сообщений
    1,472
    Цитата Сообщение от SergDoc Посмотреть сообщение
    почему они каждому датчику собственную шину прикручивают?
    тут нет никакой проблемы, у меня одна шина, SCK, MISO, MOSI параллельно , CS и RDY индивидуально подключены. Чтение через ПДП, выбор кристала переключает диспетчер СПИ, он же выбирает обработчик данных (дус\аксель) по окончании ПДП.
    Однозначно победить и2ц не смог, изредка вылетают ошибки.
    код такой

    Код:
    /* ----------------- запрос обмена по I2C через перерывание -------------------------*/
    void IMU_ReqI2C_Trans(uint8_t adr, uint8_t iadr, uint8_t cnt )
    {
    uint16_t time = micros();
    IMU_I2C_ClrAllErr();
    I2C_ClearFlag(I2C_IMU,I2C_FLAG_AF|I2C_FLAG_ARLO|I2C_FLAG_BERR);
     
    /* ожидаем освобождения интерфейса */
    while(I2C_GetFlagStatus(I2C_IMU, I2C_FLAG_BUSY)){
    if (((micros()-time)&0xfff) > IMU_I2C_MAXTIM){
    IMU_I2C_SetErr(LBSY);
    return;
    }
    }
    /* предварительная настройка переменных */ 
    imu_i2c_dev_adr = adr;
    imu_i2c_buf[0] = iadr;
    imu_i2c_cnt = cnt;
    imu_i2c_inx = 0;
    I2C_AcknowledgeConfig(I2C_IMU, ENABLE);
    /* передаем состояние START */ 
    I2C_GenerateSTART(I2C_IMU, ENABLE); 
    }
    /* обработчик прерывания по событиям и буферу и2ц ИНС 
    внутренний адрес размещаем в buf[0]*/
    void I2C1_ISR(void)
    { 
    switch(I2C_GetLastEvent(I2C_IMU)&(~I2C_FLAG_BTF))
    {
    case I2C_EVENT_MASTER_MODE_SELECT: /* EV5 */ 
    if ((imu_i2c_inx == 0)/* передаём вынутренний адрес */
    ||(imu_i2c_dev_adr&0x01 == 0)) /* режим передачи */ 
    I2C_Send7bitAddress(I2C_IMU,imu_i2c_dev_adr,I2C_Direction_Transmitter);
    else /* запуск чтения после повторного старта */
    I2C_Send7bitAddress(I2C_IMU,imu_i2c_dev_adr,I2C_Direction_Receiver); 
    break;
    case I2C_EVENT_MASTER_TRANSMITTER_MODE_SELECTED: /* EV6 */
    case I2C_EVENT_MASTER_BYTE_TRANSMITTING: /* EV8 */
    case I2C_EVENT_MASTER_BYTE_TRANSMITTED: /* EV8_2 */ 
    if ((imu_i2c_inx == 1)&&(imu_i2c_dev_adr&0x01 != 0)) 
    /* повторный старт для чтения */
    I2C_GenerateSTART(I2C_IMU, ENABLE);
    else { /* либо продолжаем писать */ 
    if (imu_i2c_inx < imu_i2c_cnt+1) 
    /* передаём следующий байт */ 
    I2C_SendData(I2C_IMU,imu_i2c_buf[imu_i2c_inx++]);
    else /* передача буфера завершена */
    I2C_GenerateSTOP(I2C_IMU, ENABLE);
    }
    break;
     
    case I2C_EVENT_MASTER_RECEIVER_MODE_SELECTED: /* EV6 */
    case (uint32_t)(I2C_FLAG_BUSY|I2C_FLAG_MSL): /* состояние после сброса флага ADDR */
    if (imu_i2c_cnt == 1) /* принимаем всего один байт */ 
    I2C_AcknowledgeConfig(I2C_IMU, DISABLE);
    break; 
     
    case I2C_EVENT_MASTER_BYTE_RECEIVED: /* EV7 */
    if (imu_i2c_inx > imu_i2c_cnt) /* завершили чтение */
    I2C_GenerateSTOP(I2C_IMU, ENABLE);
    else {/* продолжаем чтение */
    imu_i2c_buf[imu_i2c_inx++] = I2C_ReceiveData(I2C_IMU); 
    if (imu_i2c_inx == imu_i2c_cnt) /* будем принимать последний байт */ 
    I2C_AcknowledgeConfig(I2C_IMU, DISABLE);
    }
    break;
    default: /* не понятное состояние == ошибка интерфейса */
    IMU_I2C_SetErr(IFERR); 
    I2C_GenerateSTOP(I2C_IMU, ENABLE);
    I2C_SendData(I2C_IMU,I2C_GetLastEvent(I2C_IMU));
    break; 
    }
    /* проверим выход указателя за пределы буфера */
    if (imu_i2c_inx > sizeof imu_i2c_buf)
    { 
    imu_i2c_inx = sizeof imu_i2c_buf;
    IMU_I2C_SetErr(OVBUF);
    }
     
    /* здесь вызов метода-заполнителя данных объекта ИНС */
    switch(imu_i2c_dev_adr){
    /* чтение магнитометра */
    case MAG_I2C_DEV_ADR|0x01: MagmDataRdy(); break;
    }
    }
    Последний раз редактировалось rual; 11.04.2012 в 21:27.

+ Ответить в теме

Похожие темы

  1. Система стабилизации гиро+акселерометр
    от Фантомас в разделе Полеты по камере, телеметрия
    Ответов: 32
    Последнее сообщение: 25.01.2011, 14:47
  2. Продам Продам Клона Trex 450SEV2 + Аппаратура + Запчасти+ система стабилизации RTF
    от omegapraim в разделе Барахолка. Вертолеты
    Ответов: 1
    Последнее сообщение: 12.01.2011, 18:16
  3. Продам Трёхосевую систему стабилизации Turnigy V-Bar 600
    от avi@tor в разделе Барахолка. Аппаратура
    Ответов: 1
    Последнее сообщение: 08.11.2010, 13:02
  4. Продам Gaui система стабилизации GU365, дёшево.
    от avi@tor в разделе Барахолка. Вертолеты
    Ответов: 3
    Последнее сообщение: 03.08.2010, 11:13
  5. Системы стабилизации
    от max815 в разделе Фото и видеосъемка, системы стабилизации
    Ответов: 16
    Последнее сообщение: 11.03.2010, 03:14

Метки этой темы

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения