Kanał - ATNEL tech-forum
Wszystkie działy
Najnowsze wątki



Teraz jest 20 kwi 2024, o 12:01


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 5 ] 
Autor Wiadomość
PostNapisane: 18 lis 2017, o 17:15 
Offline
Nowy

Dołączył(a): 02 cze 2017
Posty: 6
Pomógł: 0

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 8-) . 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:
Składnia: [ Pobierz ] [ Ukryj ]
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
Składnia: [ Pobierz ] [ Ukryj ]
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?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 20 lis 2017, o 20:02 
Offline
Uzytkownik zasłużony dla forum.atnel.pl
Avatar użytkownika

Dołączył(a): 16 lip 2012
Posty: 2088
Lokalizacja: Leżajsk / Kraków
Pomógł: 411

A odczyt działa poprawnie?

Petit FatFs ma takie ograniczenia, że nie można utworzyć pliku ani go powiększyć. Do utworzenia pliku możesz wykorzystać program Petit GEN ze strony Atnel.

_________________
Dragonus Cracovus: Biomagia



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 20 lis 2017, o 21:02 
Offline
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 27224
Lokalizacja: Szczecin
Pomógł: 1041

Krauser napisał(a):
Do utworzenia pliku możesz wykorzystać program Petit GEN ze strony Atnel.


Proponuję ZDECYDOWANIE nowszą jego wersję, do pobrania tutaj ;)

http://atnel.pl/atb-wav.html

_________________
zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 25 lis 2017, o 16:29 
Offline
Nowy

Dołączył(a): 02 cze 2017
Posty: 6
Pomógł: 0

Witajcie,
Odczytu mówiąc szczerze nie testowałem, bo na chwilę obecną nie jest mi potrzebny. Na karcie oczywiście znalazł się odpowiedni plik o odpowiedniej nazwie. O istnieniu nowego PetitGen nie wiedziałem, także dziękuję :)

Obecnie sprawa wygląda tak, że wszystko idzie gładko, ale zapisu nie ma... To znaczy nigdzie się nie zawiesza, dioda zielona zapala się i gaśnie prawidłowo. Czerwona nie zapala się, czyli zapis przechodzi niby poprawnie. Fizycznie jednak do pliku nie zostało nic zapisane :( Po wyjęciu karty reakcja także jest prawidłowa, czyli czerwona dioda informuje o niepoprawnym zapisie. Inicjalizacja także przechodzi bez problemu.

Jeśli chodzi o plik "log.txt" po otworzeniu go w notatniku są kropki i nic się w nim nie zmienia. Przy poprzednim PetitGen nie był żadnych znaczków, ale on wypełniał plik znakami 0xA0. Nowy wypełnia 0xFF więc zapewne stąd ta różnica. Karta pamięci to micro SD Kinkston 8GB klasy 10 sformatowana do FAT32. Jeśli chodzi o schemat podłączenia, to podrzucam w załączniku. Również foto modułu karty. Są wlutowane jak wspomniałem dwa układy: bufor LVC125A oraz stabilizator AMS1117. Kod wygląda obecnie następująco:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Jest to wycinek całego kodu. Flaga s15_flag jest ustawiana w timerze programowym do 15 sekund. Obecnie całość przerzuciłem na Atmege 32A. Jeśli chodzi konfigurację biblioteki, to w pliku mk_petit>util.h pozmieniałem definicje pinów sprzętowego SPI:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


oraz w pliku mmc.c
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Ma ktoś jakieś pomysły lub sugestie?

Obrazek



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 27 lis 2017, o 16:44 
Offline
Nowy

Dołączył(a): 02 cze 2017
Posty: 6
Pomógł: 0

Problem rozwiązany ;) Wszystko było poprawnie a problem polegał na testowaniu zapisu z podpiętym programatorem. Jedno i drugie pracuje na SPI. Po odłączeniu programatora i zasieleniu układu z zewnętrznego źródła wszystko działa poprawnie. Zorientowałem się, bo procek nie chciał się zaprogramować z podłączonym modułem SD. Dopiero fizyczne wyjęcie modułu umożliwiało wykrycie Atmegi w "kalkulatorze" i wgranie nowego wsadu. Jak widać, działa to w obie strony. W sumie dlaczego - nie wiem ;)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
Wyświetl posty nie starsze niż:  Sortuj wg  
Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 5 ] 

Strefa czasowa: UTC + 1


Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 5 gości


Nie możesz rozpoczynać nowych wątków
Nie możesz odpowiadać w wątkach
Nie możesz edytować swoich postów
Nie możesz usuwać swoich postów
Nie możesz dodawać załączników

Szukaj:
Skocz do:  
Sitemap
Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
phpBB SEO