LusoRobótica - Robótica em Português
Electrónica => Componentes Genéricos => Tópico iniciado por: Vieira em 24 de Março de 2017, 15:17
-
Boa Tarde,
Eu ando a trabalhar num projecto onde utilizo o acelerómetro da bosch, o BMA250. Consigo ler valores dos 3 eixos através de I2C, mas quando configuro a interrupção, não obtenho resposta no interrupt status. Alguém já utilizou este tipo de sensor? ou configurou alguma interrupção nele?
Cumprimentos,
Vieira
-
Especificamente esse não, mas já usei vários acelerómetros diferentes, o que mais tenho usado é um MMA de 10 bits que custa 80 centimos.
Estás a usar código teu, ou uma biblioteca qualquer random das internets?
Código sff..
-
Estou a usar código meu.
i2cStart();
i2cTx((ACC_I2C_ADDR << 1) | I2C_OP_WRITE);
fwDelayUs(50000, FW_DELAY_RANGE_50_MS); //send command and wait
i2cTx(ACC_BAND_CFG); //Config Bandwith
i2cTx(SET_BAND);
i2cTx(ACC_RANG_CFG); //Config Range
i2cTx(SET_RANGE);
fwDelayUs(25000, FW_DELAY_RANGE_50_MS); //send command and wait
i2cTx(0x19); //Config Slope Interrupt
i2cTx(0x04);
fwDelayUs(25000, FW_DELAY_RANGE_50_MS); //send command and wait
i2cStop();
O código é escrito no Sensor Controller Studio. É idêntico a C. Se precisarem de mais alguma informação, digam.
Cumprimentos,
Vieira
-
Não estás a escrever nada para os reg's 0x16/0x17 que são os interrupt enables, e aconselho-te a reler a datasheet que pode-te/deve-te ter passado mais coisas ao lado.
Alguma devboard que estás a usar, ou algo custom?
-
Pois, esqueci-me de por aqui. No final tenho,
i2cTx(0x17); //Enable New Data interrupt
i2cTx(0x10);
i2cTx(0x16); //Enable XYZ SLOP interruption
i2cTx(0x01);
Como tenho muito código comentado só fiz post de algumas partes. Mas tenho feito enable das interrupções no final.
-
Muda o registo 0x27/0x28 para ver no que dá.
-
Eu mudo, mas esses registos são dedicados ao slope threshold e ao slope duration.
-
Se li bem o default é de um sample, pode ou não ser suficiente.
-
Já testei. Tive uma altura em que consegui um sinal num dos status (0x0B) mas depois comecei a receber NACK pelo sensor. Não sei se pode ser sido algum bug ou assim. Porque eu mexo o acelarómetro em todas e direcções e nada.
Cumps.
-
Mas consegues ler o sensor sem problemas ou levas com NACK's?
-
Os valores dos 3 eixos eu consigo ler sem problemas nenhuns, consigo obter boas leitura de acordo com a posição do sensor.