collapse

* Posts Recentes

UPS trovada por KammutierSpule
[Ontem às 18:38]


Odin - A better alternative to C, C++ and maybe Rust. por blabla
[10 de Junho de 2024, 18:59]


Meu novo robô por josecarlos
[10 de Junho de 2024, 12:17]


Transmissão de energia sem fios por dropes
[09 de Junho de 2024, 14:51]


MINI560 - corrente sem carga? por KammutierSpule
[14 de Maio de 2024, 15:09]


Arame de Estendal por SerraCabo
[11 de Maio de 2024, 14:15]


LLM Crawlers por TigPT
[04 de Maio de 2024, 21:40]


Emulador NES em ESP32 por dropes
[04 de Maio de 2024, 14:48]


Circuito Microfone que funcione por almamater
[27 de Abril de 2024, 17:14]


O que é isto ? por SerraCabo
[12 de Abril de 2024, 14:20]

Autor Tópico: LSM303DLHC - os problemas de uma "primeira vez" - acelerometro  (Lida 9569 vezes)

0 Membros e 1 Visitante estão a ver este tópico.

Offline Dave

  • Mini Robot
  • *
  • Mensagens: 368
    • "O Engenhocas"
Re: LSM303DLHC - os problemas de uma "primeira vez" - acelerometro
« Responder #15 em: 30 de Junho de 2014, 12:24 »
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...

Código: [Seleccione]
            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

Offline msr

  • Mini Robot
  • *
  • Mensagens: 798
Re: LSM303DLHC - os problemas de uma "primeira vez" - acelerometro
« Responder #16 em: 30 de Junho de 2014, 13:29 »
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.

Offline Dave

  • Mini Robot
  • *
  • Mensagens: 368
    • "O Engenhocas"
Re: LSM303DLHC - os problemas de uma "primeira vez" - acelerometro
« Responder #17 em: 30 de Junho de 2014, 14:07 »
Encontrei isto do datasheet de um acelerometro da mesma família, o LSM303DLH.

Citar
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

Offline senso

  • Global Moderator
  • Mini Robot
  • *****
  • Mensagens: 9.733
  • Helpdesk do sitio
Re: LSM303DLHC - os problemas de uma "primeira vez" - acelerometro
« Responder #18 em: 30 de Junho de 2014, 14:16 »
Continua a falhar alguma coisa, nem um numero impar, todos pares, não achas isso, digamos que estranho?
Avr fanboy

Offline Dave

  • Mini Robot
  • *
  • Mensagens: 368
    • "O Engenhocas"
Re: LSM303DLHC - os problemas de uma "primeira vez" - acelerometro
« Responder #19 em: 30 de Junho de 2014, 14:21 »
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" ;).

« Última modificação: 30 de Junho de 2014, 14:24 por Dave »
David Martins
Eng. Electrotécnica e de Computadores, UBI

Offline jm_araujo

  • Mini Robot
  • *
  • Mensagens: 2.961
  • NERD!
Re: LSM303DLHC - os problemas de uma "primeira vez" - acelerometro
« Responder #20 em: 30 de Junho de 2014, 15:40 »
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.

Offline Dave

  • Mini Robot
  • *
  • Mensagens: 368
    • "O Engenhocas"
Re: LSM303DLHC - os problemas de uma "primeira vez" - acelerometro
« Responder #21 em: 30 de Junho de 2014, 16:38 »
O datasheet do LSM303DLHC.... bem.... what piece of crap!

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