Witajcie,
W życiu każdego z nas przychodzi taki moment w którym trzeba skorzystać z dobrodziejstwa karty pamięci SD. Wiadomo jednak, że temat nie należy do najprostszych. I u mnie niestety nie obyło się bez problemów

W związku z tym przychodzę do Was po pomoc.
Na karcie pamięci chcę zapisywać różne dane pomiarowe, więc bardzo ucieszył mnie Mirkowy projekt w Greenbooku

. Fajnie opisane jest tam wykorzystanie biblioteki PetitFS. Poszedłem tą drogą i postanowiłem skorzystać z dołączonej do książki biblioteki. Do zapisu używam karty micro SD 2GB Kingstona. Moduł który od jakiegoś czasu mam to typowy moduł (nie atnelowski) SPI 5V, gdyż zawiera on stabilizator AMS1117 3.3V oraz układ buforujący LVC125A. Podłączam go standardowymi liniami do sprzętowego SPI w Atmedze 328P z zewnętrznym kwarcem 8MHz. Dodatkowo zrobiłem układ sterowania zasilaniem w oparciu o tranzystor PNP A1015, resystor 2.2k, dławik 22 uH i kondensator 1uF. Całość steruje pinem Vcc modułu.
Wykorzystuję MK_PETIT_UTIL wraz z poprawkami (
http://www.atnel.pl/PetitFS_aktualizacja.html). Inicjalizacja karty przechodzi bez problemu. Problem pojawia się natomiast w momencie wywołania funkcji mk_pf_file_append() w poniższym kodzie:
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
Dioda na pinie PB0 informuje o poprawnym lub niepoprawnym zapisie, a na PD7 o trwaniu procesu zapisu. Problem polega na tym, że jak rozpocznie się proces zapisu (zapali się dioda PD7), to proces ten się nie kończy, czyli dioda nie gaśnie i czerwona się nie zapala. Wygląda jakby program się gdzieś w środku "zapętlił" i zawieszał na tej instrukcji. Zagłębiłem się w bibliotekę i komentując bloki kodu stwierdziłem, że problem pojawia się w wejściu do instrukcji
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
w powyższej funkcji, czyli w montowaniu wolumenu. Do tego momentu wszystko idzie gładko. Czy ma ktoś pomysł co może być tego powodem? Karta jest sformatowana w FAT. Próbowałem różnych opcji FAT i FAT32 z różnymi rozmiarami jednostki alokacji. Może karta powinna być jakoś szczególnie przystosowana?