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

[ATtiny2313][C/AvrStudio5.0] Programowe SPI + czujnik SCA100T-D07

adammruk 13 Cze 2011 22:45 1926 4
REKLAMA
  • #1 9609006
    adammruk
    Poziom 16  
    Witam. Od kilku dni męczę się z obsługą tego czujnika. Napisałem programową obsługę SPI, ale niestety czujnik milczy.
    Tutaj podaję jego notę katalogową.

    Program napisałem na podstawie dokumentacji, na razie chcę odczytać tylko temperaturę (8 bitów polecenie i 8 bitów na wynik) Podłączyłem prosty analizator stanów logicznych na LPT i oto co uzyskałem:

    [ATtiny2313][C/AvrStudio5.0] Programowe SPI + czujnik SCA100T-D07

    3 - CS
    4 - SCK
    5 - MOSI
    6 - MISO

    Jak widać dane wysyłane są poprawnie(chyba) a linia MISO jest cały czas na 0. Z katalogu wynika ze kolejne bity polecenia zapisywane są przy zboczu narastającym: "Each bit is sampled on the rising edge of SCK (MOSI line)"

    Poniżej funkcja napisana do wysyłania i odbioru (wiem, są małe nieścisłości w nazwach, ale chyba widać o co chodzi):

    Kod: C / C++
    Zaloguj się, aby zobaczyć kod


    W załączniku zamieszczam cały program. Ma ktoś jakiś pomysł co jest nie tak? Bo moje się już kończą..
  • REKLAMA
  • #2 9611809
    Andrzej__S
    Poziom 28  
    adammruk napisał:

    Jak widać dane wysyłane są poprawnie(chyba)...

    Chyba jednak nie.
    #1 Linia SCK powinna być w stanie niskim przed zmianą stanu na linii CS na niski, a co jeszcze ważniejsze, linia SCK powinna zmienić stan na niski po 16 impulsie na minimum 120ns (czas oznaczny jako TLS2 na rysunku 2 ze strony 5 podanej przez Ciebie noty katalogowej) przed podniesieniem linii CS w stan wysoki. Na Twoim oscylogramie tak nie jest (w programie zresztą też). Trudno przewidzieć, co się stanie w przypadku, gdy układ nie otrzyma pełnych 16 impulsów zegarowych, tylko 15,5.
    #2 Po wysłaniu komendy RWTR i odebraniu danych, linia CS powinna być przynajmniej 150us (czas TLH) w stanie wysokim przed kolejną transmisją. W Twoim programie tak nie jest.
    #3 Biorąc pod uwagę informację z noty katalogowej:
    Cytat:

    Measure mode (MEAS) is standard operation mode after power-up. During normal operation, the MEAS command is the exit command from Self test.

    wysyłanie komendy MEAS w pętli nieskończonej, tak jak to zrobiłeś, nie wydaje mi się dobrym pomysłem.

    Tymczasem więcej nieścisłości nie zauważyłem.
  • REKLAMA
  • #3 9620926
    adammruk
    Poziom 16  
    Dziękuję za odpowiedź. Pierwszy raz piszę od zera programową obsługę jakiegoś urządzenia. Zastosowałem się do Twoich rad i program wygląda teraz tak:

    Kod: C / C++
    Zaloguj się, aby zobaczyć kod


    I oscylogram z zaznaczonymi czasami:
    [ATtiny2313][C/AvrStudio5.0] Programowe SPI + czujnik SCA100T-D07

    Czujnik dalej milczy, mimo że czasu są wielokrotnie dłuższe niż minimalne, i protokół wygląda już poprawnie.

    Dodano po 24 [minuty]:

    http://www.vti.fi/midcom-serveattachmentguid-...db191437/TN6_Internal_Temperature_Sensing.pdf

    Na drugiej stronie jest wykres jak powinien wyglądać przebieg.. U mnie jest dokładnie taki sam, zmieniłem troszkę program że poza transmisją SCK jest w stanie niskim, i dalej zero odpowiedzi...

    Dodano po 7 [minuty]:

    Aha, wyjścia analogowe czujnika działają poprawnie, więc wnioskuję że cały układ działa poprawnie. W PDF'ie jest takie polecenie jak "RLOAD 00001011 Reload NV data to memory output register". Do czego to może służyć?
  • REKLAMA
  • #4 9641655
    Fredy
    Poziom 27  
    W drugiej pętli czytasz znak od razu, a powinieneś dopiero po podniesieniu kolejnego impulsu zegarowego.
    Napewno ustawienie kierunków w DDR masz prawidłowe?
    Spróbuj dać na wejściu czytającym w procesorze podciągnięcie do VCC?
  • #5 10702971
    adammruk
    Poziom 16  
    A więc próbowałem wielu różnych opcji, w końcu coś tam udało się odczytać, ale nigdy nie były to jakieś miarodajne wartości.. Układ wylądował w szufladzie czekając na lepsze czasy.

    Pozdrawiam i zamykam temat.
REKLAMA