logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

atmega32 i l3g4200d - Nieprawidłowe dane przy komunikacji SPI, jak rozwiązać?

1dawidk 12 Maj 2013 14:01 1476 2
REKLAMA
  • #1 12298477
    1dawidk
    Poziom 10  
    Witam,

    Od pewnego czasu staram się połączyć z żyroskopem l3g4200d przez SPI. Póki co chodzi o zwykłe przerzucenie danych z żyroskopu do atmegi 32. I tu się zaczyna problem. Podczas wysyłania ramki 8 bitów, zawsze jako pierwszy bit wysyłana jest jedynka, a następnie siedem bitów danych zaczynając od MSB. Dodatkowo posiadam akcelerometr tej samej firmy (lis331DLH). Komunikacja z nim (przez SPI) wygląda identycznie jak w przypadku z żyroskopem, jednak przy tych samych ustawieniach sprzętowego SPI atmegi komunikacja przebiega prawidłowo.

    Próba jakiegokolwiek odczytania danych z żyroskopu kończy się tym że po pierwszym odczytaniu dostaje wygląd jakiegoś rejestru (zawsze tego samego, bez znaczenia co podam przy rozkazie odczytania z wybranego przeze mnie rejestru), a po drugim odczytaniu dostaję dane z rejestru który w pamięci żyroskopu jest po nim.

    I tak w kółko.

    Zastanawiam się czy może być to wina błędnie działającego żyroskopu. Prosiłbym o informacje jeśli ktoś ma jakieś doświadczenie w tej dziedzinie co może być przyczyną takiego działania.

    Pozdrawiam
  • REKLAMA
  • #2 12298525
    excray
    Poziom 41  
    1dawidk napisał:
    Podczas wysyłania ramki 8 bitów, zawsze jako pierwszy bit wysyłana jest jedynka, a następnie siedem bitów danych zaczynając od MSB.

    To jest problem czy ma tak być? Jeśli to problem to zmień stan bitów CPHA i CPOL w rejestrze sterowania SPI na przeciwny. Zresztą to może też być przyczyną Twoich pozostałych problemów.
  • #3 12298737
    1dawidk
    Poziom 10  
    Cytat:
    Podczas wysyłania ramki 8 bitów, zawsze jako pierwszy bit wysyłana jest jedynka, a następnie siedem bitów danych zaczynając od MSB.


    Tak to jest błąd. Zamiast wysyłania zadanej ramki 8 bitów on wysyła jako MSB jedynkę, a potem 7 bitów z żądanej ramki. Bity CPHA i CPOL są ustawione poprawnie. Nawet zakładają że mogłem pomylić oczywistość zmieniałem ich wartości tak dla sprawdzenia, ale nie w tym problem. Tak jak pisałem, akcelerometr ma te same parametry komunikacji SPI i przesyłanie ramki do niego przebiega prawidłowo.
REKLAMA