-
Data: 2020-05-20 17:09:50
Temat: karta SD na SPI zawiesza AtXmega128A3U
Od: Atlantis <m...@w...pl> szukaj wiadomości tego autora
[ pokaż wszystkie 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.
Następne wpisy z tego wątku
- 20.05.20 18:43 a...@m...uni.wroc.pl
- 20.05.20 20:01 Atlantis
- 20.05.20 20:05 jacek
- 20.05.20 20:35 Atlantis
- 20.05.20 20:48 Atlantis
- 20.05.20 21:31 Atlantis
- 21.05.20 11:13 Piotr Gałka
Najnowsze wątki z tej grupy
- Dlaczego energia elektryczna jest droga i cały czas drożeje
- twardy dysk stuka
- Oclenie alkalicznych akumulatorów
- Powerbank jednonapieciowy, a trzynapieciowy
- Lustra w maszynie ASML
- DC blocker i buczące toroidy
- Problemy TSMC cd
- Detektor
- Może tutaj się uda: [NTG] Elewacja / dziurawa Churka
- Falownik jednofazowy a żarówka
- Agregat i "legalność" instalacji
- Uziom
- (Ponownie) odkryto, że ładowanie pulsacyjne robi dobrze
- driver led ?
- Długość wtyku zasilającego ?5.5mm
Najnowsze wątki
- 2024-05-02 Silnik Stirlinga - energia mechaniczna wytwarzana z ciepła bez dostarczania paliwa!
- 2024-05-02 Kraków => Senior .Net Programmer <=
- 2024-05-02 Sprowadzenie pożaru zagrażającego mieniu w wielkich rozmiarch
- 2024-05-02 Zielona Góra => Spedytor międzynarodowy <=
- 2024-05-02 Katowice => Performance Analyst <=
- 2024-05-02 Gdańsk => Full Stack web developer (obszar .Net Core, Angular6+) <=
- 2024-05-02 Gdańsk => Business Development Manager - obszar bezpieczeństwa IT <=
- 2024-05-02 Warszawa => Starszy inżynier oprogramowania (Rust) <=
- 2024-05-02 Katowice => Java Developer <=
- 2024-05-02 'Studenci do nauki!'
- 2024-05-02 Dlaczego energia elektryczna jest droga i cały czas drożeje
- 2024-05-02 Dlaczego energia elektryczna jest droga i cały czas drożeje
- 2024-05-02 Dlaczego energia elektryczna jest droga i cały czas drożeje
- 2024-05-02 Wrocław => Lider Serwisu/Programista PLC z językiem niemieckim <=
- 2024-05-02 Łódź => Senior DevOps Engineer <=