• Welcome to LusoRobótica - Robótica em Português.
 

LSM303DLHC - os problemas de uma "primeira vez" - acelerometro

Started by Dave, 25 de June de 2014, 14:26

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

Dave

Mas assim eu teria de estar a fazer algo byte não, byte sim...

De momento estou a ler os eixos todos e obtenho valores nos restantes, sempre com o byte menos significativo a zeros...


            Start_I2C();
            Write_I2C(write_LSM303_ACC);
            Write_I2C(OUT_X_L_A | 0x80);
            Restart_I2C();

            Write_I2C(read_LSM303_ACC);

            M[0] = Read_I2C();
            Ack_I2C();
            M[1] = Read_I2C();
            Ack_I2C();
            M[2] = Read_I2C();
            Ack_I2C();
            M[3] = Read_I2C();
            Ack_I2C();
            M[4] = Read_I2C();
            Ack_I2C();
            M[5] = Read_I2C();

            NotAck_I2C();
            Stop_I2C();

            X = ((M[1] << 8 ) | M[0])>>4;
                sprintf(S, "Leitura X %.5d \n" , X);
                putrs_USART(S);   // send x
           

            Y = ((M[3] << 8 ) | M[2])>>4;
                sprintf(S, "Leitura Y %.5d \n" , Y);
                putrs_USART(S);   // send x



            Z = ((M[5] << 8 ) | M[4])>>4;
                sprintf(S, "Leitura Z %.5d \n" , Z);
                putrs_USART(S);   // send x


David Martins
Eng. Electrotécnica e de Computadores, UBI

msr

Deixo-te o meu driver completo: https://www.dropbox.com/sh/7zy1ux5s0hkg158/AADCS8RSlb-qVFzP7qhfVPEga
Vê lá se ajuda.
Inclui uma função de teste que faz print de todos os registos e depois começa a ler os valores.

Dave

Encontrei isto do datasheet de um acelerometro da mesma família, o LSM303DLH.

Quote
DR bits, in the normal-mode operation, select the data rate at which acceleration samples
are produced. In low-power mode they define the output data resolution. Table 21 shows all
the possible configurations for the DR1 and DR0 bits.

O meu CTRL_REG1_A, estava a 0x3F. O que fazia activar o Low Power Mode. Por algum motivo, no meio de tantas alterações, modifiquei isto também. Nas minhas folhas tinha 0x37... por isso já foi alteração à posteriori :(...

Os valores em baixo são extraídos antes de fazer as tais 4 deslocações à direita (para ter mais resolução).
Agora já recebo alterações no byte menos significativo...

David Martins
Eng. Electrotécnica e de Computadores, UBI

senso

Continua a falhar alguma coisa, nem um numero impar, todos pares, não achas isso, digamos que estranho?
Avr fanboy

Dave

Facto foi só falta de pontaria :)

No anterior é normal não aparecerem números ímpares, se a minha teoria se verificar aquilo estava justificado à esquerda.
Aqui já fiz os 4 deslocamentos e já aparecem números mais "confiáveis" ;).

David Martins
Eng. Electrotécnica e de Computadores, UBI

jm_araujo

Agora sim, já tens valores mais bonitos ;D

Senso, não tinha números ímpares porque são valores de 12 bits alinhados à esquerda num inteiro de 16 por causa do sinal. Os 4 lsb são sempre 0.

Dave

O datasheet do LSM303DLHC.... bem.... what piece of crap!

David Martins
Eng. Electrotécnica e de Computadores, UBI