Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

RPi SPI brak odczytu z rejestrów typu read

Kubull 10 Gru 2017 17:50 390 8
  • #1 10 Gru 2017 17:50
    Kubull
    Poziom 2  

    Witam serdecznie.

    Posiadam akcelerometr LIS3DH, który dodatkowo jest wyposażony w trzy 10bitowe ADC. Urządzenie jest podpięte do RaspberryPI interfejsem SPI. Korzystając z tematu Link napisałem kod

    Kod: python
    Zaloguj się, aby zobaczyć kod


    Otrzymane wartości to
    [255, 0]

    Poniżej mapa rejestrów
    RPi SPI brak odczytu z rejestrów typu read

    Do rejestru 1F wpisuje 0x80 (0b1000 0000) aby aktywować ADC
    RPi SPI brak odczytu z rejestrów typu read

    Gdy użyje
    Kod: python
    Zaloguj się, aby zobaczyć kod


    Otrzymam
    [255, 128]
    To znaczy że dobrze zapisał i odczytał rejestr.

    W przypadku rejestru 0x0F (który jest typu read) dostaje:
    [255, 51] czyli 0b 0011 0011
    co też się zgadza

    Rejestr 0x20 odpowiada za aktywowanie osi i też odpowiada na wywołanie
    [255, 7] 0b 0000 0111 - trzy osie aktywne.

    Stąd mój post- dlaczego nie zwraca mi wartości z ADC rejestry 08-0D i akcelerometru rejestry 28-2D.
    Do ADC1 mam podciągnięte 3,3V przez potencjometr.

    Pozdrawiam Jakub

    0 8
  • #2 10 Gru 2017 17:58
    bartosz.tarnowski
    Poziom 16  

    Odczytaj wszystkie CTRL_REG i porównaj z dokumentacją

    0
  • #3 10 Gru 2017 18:32
    2675900
    Użytkownik usunął konto  
  • #4 10 Gru 2017 19:57
    Kubull
    Poziom 2  

    Wszystkie CTRL_REG były ustawione na Default. Natomiast CTRL_REG1 0x20 zmieniłem z 0x07 na 0x97 i ruszył akcelerometr. Rejestr out_x_L 0x28 zwraca tylko 4 wartosci 0,64,128,192 a out_x_H 0x29 pełny zakres

    Kod: python
    Zaloguj się, aby zobaczyć kod


    ADC nie reaguje. Znalazłem parametr BDU, ale nie wiem po co go zmieniac

    0
  • #5 10 Gru 2017 20:04
    2675900
    Użytkownik usunął konto  
  • #6 10 Gru 2017 21:21
    bartosz.tarnowski
    Poziom 16  

    Czylil 10 bitow ADC. 8 bitów jest w OUT_H a dwa bity w OUT_L, proponuje przepisać odczyt z rejestrów OUT do zmiennej 16 bitowej.

    0
  • #7 10 Gru 2017 21:49
    2675900
    Użytkownik usunął konto  
  • #8 11 Gru 2017 00:15
    Kubull
    Poziom 2  

    Dziekuje za udzielone odpowiedzi.

    Poslugiwalem sie strasza wersja DS (ktora poprzednio zalaczylem) i w niej punkt 3.7 mial tylko jedno zdanie - sa 3 10bitowe ADC, nic o konfiguracji.

    Akcelerometry i ADC reaguja ale:

    - w trakcie pracy ADC nie odczytuje wartosci z zadnej osi
    -gdy niema nic wpietego na ADC to zamiast pokazywac 0 rejestry wariuja
    ADC1_L 0035 ADC1_H 000
    ADC1_L 0041 ADC1_H 064
    ADC1_L 0025 ADC1_H 000
    ADC1_L 0021 ADC1_H 128
    ADC1_L 0009 ADC1_H 192
    ADC1_L 0017 ADC1_H 064
    ADC1_L 0005 ADC1_H 192
    ADC1_L 0002 ADC1_H 000
    ADC1_L 0002 ADC1_H 192

    -jak zrobilem dzielnik napiecia na 3 rezystorach podpietych do 3.3V to tez nie lapie wartosci np dla 1.1V tylko skacze

    -jesli chodzi o skladanie bitow to mozna wartosci z rejestrow przesunac >>,<< i dodac, tylko gdy tak skacza ciezko mi ustalic ich kolejnosc i czy bity nie sa w odwrotnej kolejnosci

    0
  • #9 11 Gru 2017 00:24
    2675900
    Użytkownik usunął konto  
  Szukaj w 5mln produktów