eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.misc.elektronikakarta SD na SPI zawiesza AtXmega128A3U › karta SD na SPI zawiesza AtXmega128A3U
  • Path: news-archive.icm.edu.pl!news.icm.edu.pl!newsfeed.pionier.net.pl!news.samoylyk.n
    et!aioe.org!peer03.ams4!peer.am4.highwinds-media.com!news.highwinds-media.com!n
    ewsfeed.neostrada.pl!unt-exc-01.news.neostrada.pl!unt-spo-b-01.news.neostrada.p
    l!news.neostrada.pl.POSTED!not-for-mail
    Newsgroups: pl.misc.elektronika
    X-Mozilla-News-Host: news://news.tpi.pl:119
    From: Atlantis <m...@w...pl>
    Subject: karta SD na SPI zawiesza AtXmega128A3U
    Date: Wed, 20 May 2020 17:09:50 +0200
    User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101
    Thunderbird/68.8.0
    MIME-Version: 1.0
    Content-Type: text/plain; charset=utf-8
    Content-Language: pl
    Content-Transfer-Encoding: 8bit
    Lines: 40
    Message-ID: <5ec5483f$0$546$65785112@news.neostrada.pl>
    Organization: Telekomunikacja Polska
    NNTP-Posting-Host: 83.27.168.12
    X-Trace: 1589987391 unt-rea-a-02.news.neostrada.pl 546 83.27.168.12:40420
    X-Complaints-To: a...@n...neostrada.pl
    X-Received-Bytes: 3149
    X-Received-Body-CRC: 3513785290
    Xref: news-archive.icm.edu.pl pl.misc.elektronika:753486
    [ ukryj nagłówki ]

    Wróciłem ostatnio do jednego ze swoich projektów na Xmega128A3U.
    Postanowiłem dodać do niego funkcję związaną z zapisem danych na karcie
    microSD. Hardware był już do tego przygotowany - na płytce znajduje się
    gniazdko, podłączone do SPI na PORTE.

    Przekopiowałem pliki związane z biblioteką FatFS z mojego innego
    projektu (na PIC24), modyfikując jedynie niskopoziomowe funkcje,
    odpowiedzialne za komunikację z kartą i konfigurując odpowiednie linie
    sygnałowe. W pętli głównej dodałem funkcję odpowiedzialną za zapisywanie
    danych na karcie. Wszystko się skompilowało i uruchomiło, aż nagle
    pojawił się problem, którego nie potrafię zdiagnozować...

    Za każdym razem, gdy FatFS próbuje rozmawiać z kartą, urządzenie się
    zawiesza (jakby wpadło w nieskończoną pętlę) i po chwili zostaje
    zresetowane przez WDT. W moim przypadku problem pojawia się w momencie
    wykonania f_open().

    Problem musi występować raczej gdzieś blisko sprzętu, bo:
    - Dokładnie te same pliki źródłowe FatFS działały prawidłowo po
    skompilowaniu na PIC24, jedyną różnicą były niskopoziomowe funkcje I/O.
    - Problem nie występuje, jeśli w slocie nie ma karty i biblioteka nie
    podejmuje próby komunikacji przez SPI.

    Pomyślałem, że pewnie popełniłem jakiś błąd podczas pisania funkcji
    odpowiedzialnych za komunikację po SPI. Obejrzałem je jeden raz, drugi i
    trzeci, nie widząc żadnego problemu. Uprzedzając możliwe komentarze -
    nie, to nie jest wina pętli while, w której sprawdzana jest flaga
    zajętości po transferze SPI. Sprawdziłem ją wielokrotnie, poza tym po
    jej zakomentowaniu zawieszenie ciągle występowało.

    W akcie desperacji postanowiłem sprawdzić inny sterownik SD, pożyczony z
    przykładów dołączonych do jednej z książek Tomasza Francuza, podpinając
    go do FatFS. Projekt się skompilował, a po jego ponownym uruchomieniu...
    Problem wystąpił ponownie.

    Na chwilę obecną nie mam już pomysłów odnośnie tego, co mogło pójść nie
    tak. Pomyłka w montażu albo konfiguracji mogłaby powodować nieudaną
    transmisję, ale tutaj mam do czynienia z zawieszeniem układu. Nie jest
    to też problem ze stosem, bo wolnej pamięci mam pod dostatkiem, a po
    wyłączeniu WDT restarty ustają, choć oczywiście układ pozostaje zawieszony.

Podziel się

Poleć ten post znajomemu poleć

Wydrukuj ten post drukuj


Następne wpisy z tego wątku

Najnowsze wątki z tej grupy


Najnowsze wątki

Szukaj w grupach

Eksperci egospodarka.pl

1 1 1

Wpisz nazwę miasta, dla którego chcesz znaleźć jednostkę ZUS.

Wzory dokumentów

Bezpłatne wzory dokumentów i formularzy.
Wyszukaj i pobierz za darmo: