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



Teraz jest 22 mar 2026, o 00:46


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 3 ] 
Autor Wiadomość
PostNapisane: 3 lip 2015, o 08:20 
Offline
Użytkownik

Dołączył(a): 05 gru 2013
Posty: 246
Pomógł: 0

Chciałbym dodać do jednego ze swoich urządzeń funkcję zapisu danych na karcie microSD.
Zależy mi na tym, żeby system sam sobie radził w przypadku włożenia pustej karty, tworzył plik, a potem sukcesywnie zwiększał jego rozmiar. Dlatego też preferuję jednak FatFS, a nie PetitFS (którego zastosowania nie wykluczam, ale jak na razie trzymam go w "rezerwie"). Posiadany hardware to Atmega644. Karta będzie musiała pracować na jednej magistrali z układem ENC28J60.

Wprowadziłem już pewne poprawki do oryginalnych procedur.

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


Jak widać zmiany są stosunkowo niewielkie. W funkcjach power_on() i power_off() powyrzucałem fragmenty kodu odpowiedzialne za włączanie/wyłaczanie i konfigurację magistrali SPI. Ponieważ karta działa na jednej magistrali z ENC28J60, ta część będzie realizowana w innej części programu.
W disk_initialize() zmieniłem jedynie miejsce wywołania makra FCLK_FAST(), aby bez względu na wynik operacji przywracana była szybkość FCPU/2, z którą ma pracować ENC.
W disk_timerproc() usunąłem instrukcję sprawdzającą ustawienie blokady przed zapisem, ponieważ microSD i tak takowej nie posiada.

Program się kompiluje, ale jeszcze nie udało mi się go jeszcze przetestować. Chciałbym tutaj prosić o pomoc, bo z tego co widzę, to:
1) Testowy kod z przykładu jest po prostu koszmarny. Służy on do testowania jakichś niskopoziomowych procedur przez UART, ale nie pokazuje jak to powinno wyglądać w TYPOWEJ aplikacji...
2) W Internecie jest sporo przykładów opartych na starszej wersji biblioteki, ale najwyraźniej od tamtego czasu sporo się zmieniło. Na przykład w chwili obecnej funkcja f_mount() przyjmuje trzy parametry, a nie dwa, tak jak kiedyś...
3) Widzę sporo sprzeczności. Na przykład w niektórych przykładach z sieci na początku funkcji main wywoływana jest funkcja disk_initialize(0). Tymczasem dokumentacja na stronie dość jasno podaje, że: "Application program MUST NOT call this function, or FAT structure on the volume can be broken. To re-initialize the file system, use f_mount function instead."
4) Niestety nie jestem w stanie samemu rozgryźć do końca całego kodu tej biblioteki, śledząc do linijka po linijce...

Czy ktoś może dysponuje już rozpracowaną wersją tej biblioteki, z jakimś dobrym przykładem aplikacji datalogera?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 3 lip 2015, o 18:31 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 22 lip 2013
Posty: 420
Lokalizacja: Kraków
Pomógł: 17

Może wystarczy tylko chwilę poszukać na forum?
http://forum.atnel.pl/topic2972.html?hilit=%20data

_________________
GreenBook i BlueBook



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 3 lip 2015, o 20:25 
Offline
Użytkownik

Dołączył(a): 05 gru 2013
Posty: 246
Pomógł: 0

Hmm... Użyłem starszej wersji, już przerobionej, z Blue Booka.
Dodałem niewielkie modyfikacje, np. funkcję ustawiającą początkowe stany i kierunki pinów SD_CS i SD_PWR.
Magistrala SPI jest już wcześniej inicjowana przez ENC28J60 i działa, bo mam komunikację z tym układem.
Jednak nie mogę uruchomić karty SD... funkcje disk_initialize oraz f_open zwracają wartość 3, co oznacza:

Cytuj:
FR_NOT_READY, /* (3) The physical drive cannot work */


Ktoś wie co może być nie tak? Jak mogę zdebugować ten problem?

Winy za taki stan rzeczy z całą pewnością nie ponosi sprzęt, bo PetitFS zastosowany w tym samym układzie bezproblemowo komunikuje się z kartą i czyta pliki. Ne chcę go jednak stosować z uwagi na to, że chciałbym mieć funkcję tworzenia pliku z logami w przypadku jego braku. Chciałbym też, żeby układ sprawnie radził sobie z dopisywaniem wartości do końca pliku, a jego rozmiar narastał sukcesywnie.



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: 3 ] 

Strefa czasowa: UTC + 1


Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 0 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:  
cron
Sitemap
Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
phpBB SEO