Raspberry pi - MPU-9150 imu szenzor, ha megvaltoztatom az 0x68 i2c bus címét 0x69 -re mit meg a programban megvaloztatni hogy lefusson?
A konyvtar helye:
ha futtatni akarom ezt a hibat irja ki:
Initializing IMU .write:2:: Input/output error
mpu_init() failed
Az adatlap alapjan ket címe lehet, vagy alapbol 0x68 vagy 0x69 (HiGH re huzva).
A szenzor igy nez ki:
Az AD0 -t habekotom a RPI 3,3V jára, akkor az
i2cdetect -y 1
már a 69 címen jelzi a szenrzort.
Alaphelyzeten mukodik a konyvtar, de most hogy megvaltoztattam mar nem fut le.(csinaltam make cleant)
Azert kell megvaltoztatnom a cimet amugy mert mas szenzor az a cimet hasznalja es azt nem lehet valtoztatni.
Ez talán buta kérdés lehet:
Oké, hogy a szenzor 0x69-es címen tolja ki az adatokat de a raspberry is arra a címre tolja ki az adatokat?
Ill. futólag átnéztem a githubos cuccot.
Egy halom helyen találsz ilyen sort:
#define DEFAULT_I2C_BUS 1
Én ezzel kezdenék el játszani de ez csak tipp.
Igen ezt neztem en is, de pl. ezt irja a
local_defaults.h (gyokerkonyvtarban)
...
...
// RPi I2C bus
#define DEFAULT_I2C_BUS 1
// Gumstix Overo
// #define DEFAULT_I2C_BUS 3
// Gumstix Duovero
// #define DEFAULT_I2C_BUS 2
...
...
ezek a GUmstix Duovero ,stb ezek pedig mas fajta kontrolerok.
valamint meg pl. ezt is probaltam:
linux-mpu9150/eMPL/inv_mpu.c
itt ezt a reszt atallitani 0x69 -re
...
...
const struct hw_s hw = {
.addr = 0x68, >>> ezt atirni (kethelyen fordul elo a kodban,ebbena .h file ban - de nem mukodott)
.max_fifo = 1024,
.num_reg = 118,
.temp_sens = 340,
.temp_offset = -521,
.bank_size = 256
#if defined AK89xx_SECONDARY
Raspberryvel nem foglalkoztam, leragadtam a 8 bites kontrollereknél így csak tippelek.
Első körben a legegyszerűbb favágó megoldással próbálkoznék: keresnék olyan kódot amivel biztosan megy a címváltoztatás. Így gyorsan kiderülhet hogy esetleg nem a a modul döglött-, előfordulhat.
Kipróbálnám, hogy esetleg kell-e felhúzó elllenállás a 3V3 és az AD0 közé. Valszeg nem de az ördög nem alszik és nem tart semeddig kipróbálni egy 4K7-tel.
Ha van oscilloszkópod, megnézni van-e valami komm. próbálkozás egyáltalán.
Legvégső megoldás bár ez nagyon barbár: másik lib-et keresni. Körbeguglizva elég sokan küszködtek ezzel a problémával. Pár helyen ajánlották a baudrate állogatását.
amugy tettem ellenallast a AD0 es a 3,3V koze, egy 1Kohm-st.
Oke megprobalom masik lib-t,hogy hogy fog reagalni
Találtam olyan konyvtarat ahol mukodik a 0x69 (van grafikus menu, ahol lehet valasztani hogy melyiken akarom futtatni :) es mukodott,csak sajna nekem azt kell foyltatnom amit mar elkezdtem,amit elozoleg linkeltem)
(ez az uj konyvtar ami mukodik)
Mar mukodik,ujbol megprobaltam ezt a reszt :)
"linux-mpu9150/eMPL/inv_mpu.c
itt ezt a reszt atallitani 0x69 -re
...
...
const struct hw_s hw = {
.addr = 0x68, >>> ezt atirni (kethelyen fordul elo a kodban,ebbena .h file ban - de nem mukodott)
.max_fifo = 1024,
.num_reg = 118,
.temp_sens = 340,
.temp_offset = -521,
.bank_size = 256
#if defined AK89xx_SECONDARY
"
az 1Kohm nem eleg vedelmi elleanalaskent? vagy inkabb tegyek az AD0 es a 3,3V koze 4,7Kohm ?
Kapcsolódó kérdések:
Minden jog fenntartva © 2025, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!