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

karta SD, Petit fat, multislave SPI - konflikt na magistrali

d21d3q 17 Sty 2013 02:31 1632 4
REKLAMA
  • #1 11800075
    d21d3q
    Poziom 12  
    Robię układ na atmedze8 który odczytuje dane z dwóch akcelerometrów i zapisuje na kartę sd (chwilowo mam microsd z adapterem, ale to nie powinno mieć znaczenia). acc i sd są na wspólnej szynie SPI, mają osobne sygnały CS, a wszsytko podciągnięte rezystorem do zasilania.

    Korzystam z biblioteki Petit Fat.
    Do obsługi akcelerometrów mam taką funkcję:
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod

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

    to działa, ale jak zczytam dane z dwóch akcelerometrów pod rząd, to już nie działa:
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod

    Docelowo chciałem wrzucić do bufora 512bajtowego odczyty i zapisać to hurtem, ale nie mogę zrobić nawet dwóch odczytów pod rząd...
    Jeśli pomiędzy dwa odczyty z akcelerometrów wstawię
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod

    to zadziała (ale wolno).

    Czy to oznacza, że karta SD reaguje na sygnały na magistrali gdy sygnał na CS jest wysoki? Jeśli tak, to dlaczego wszystko działa przy jednym wywołaniu odczytu z czujnika, a przy wielokrotnym już nie?

    Odkryłem w którym miejscu funkcji pf_write(...) jest napotykany błąd:
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod
  • REKLAMA
  • #2 11800225
    Piotr Piechota
    Poziom 22  
    Witam

    A jesteś pewien, że po podaniu stanu wysokiego na ~CS dajesz układowi wystarczająco dużo czasu na zwolnienie magistrali zanim wykorzystasz ją do kolejnego układu?

    Pozdrawiam
  • REKLAMA
  • #3 11801552
    d21d3q
    Poziom 12  
    po każdej komendzie deselect() wysyłany jest jeszcze pusty bajt danych (dummy clocks?)
    gdyby to był problem, to konflikt pojawiałby sie w czasie odczytu z czujnikow. wydaje mi się, że zwolnienie magistrali ma też mało wspólnego z ilością odczytów z akcelerometrów
  • REKLAMA
  • #4 11801615
    piotrva
    VIP Zasłużony dla elektroda
    Masz dostęp do analizatora stanów logicznych, żeby sprawdzić co się dzieje na tych liniach?
  • #5 11801686
    d21d3q
    Poziom 12  
    Spróbuję to na oscyloskop wrzucić. Jeszcze jedno, akcelerometry są wpinalne na osobnych taśmach i testy robię bez nich, więc ich udział w problemie można wykluczyć.
REKLAMA