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



Teraz jest 15 lis 2024, o 22:37


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 10 ] 
Autor Wiadomość
PostNapisane: 31 paź 2012, o 15:23 
Offline
Nowy

Dołączył(a): 31 paź 2012
Posty: 5
Pomógł: 0

Witam, jestem nowy na forum, jest to moj pierwszy post i pierwszy problem (opisany na forum, rzecz jasna). Jak w temacie, zajmuje się obsługą karty SD, korzystam z biblioteki FatFs. Obsluguje wylacznie zapis na karte. Moj problem jest nastepujacy: operacja zapisu wykonuje sie prawidlowo, przy zalozeniu ze karta zostaje umieszczona TYLKO po uruchomieniu urzadzenia. Jesli urzadzenie uruchamiam juz z karta w slocie, o zapisu nie ma mowy. Drugi problem: nawet jesli karta zostanie wlaczona po uruchomieniu to operacja wykonuje sie poprawnie tylko raz, za drugim razem juz nie :/ pomaga tylko reset choc i nie zawsze (jesli kilka razy po tym pierwszym sprobuje zapisac, nawet reset nie pomaga, musze odlaczyc zasilanie plytki, wyjac karte, podlaczyc zasilanie, wlozyc karte, wtedy zadziala, ale jak wczesniej napisalem, tylko raz). Kolejnym moim problemem jest proba wykrycia braku karty lub trybu ReadOnly. W kodzie funkcją disk_status sprawdzam flagę STA_NOINIT, chyba dziala poprawnie, ale podobnie jak w przypadku zapisu tylko raz, no moze dwa. Przy kolejnych probach zapisu, gdy karty nie ma w slocie, funkcja wykonuje sie, jakby karta w slocie byla. Chyba pora na kod:

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


Zastanawialem sie jeszcze nad sprawdzaniem statusu karty. Czy powinienem to robic funkcja disk_status, czy sprawdzac flagi funkcji takich jak f_open, f_write etc?
Z góry dzieki za wszystkie sugestie i pomoce :)
Pozdrawiam :)

[ale na przyszłość proszę wyedytować ten post i zobaczyć jak się używa znaczników do dłuższego kodu. [ syntax = c ] a nie [ code ] .... ok??? mirekk36 - taka prośba]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 31 paź 2012, o 19:16 
Online
Moderator
Avatar użytkownika

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

Witamy na forum ;)

co do kodu i problemu ja mam TYLKO takie krótkie pytanie ? ;)

a gdzie ci wcięło:

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


od tego trzeba w ogóle zacząć a nie od pf_mount() ;)

_________________
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: 1 lis 2012, o 12:59 
Offline
Nowy

Dołączył(a): 31 paź 2012
Posty: 5
Pomógł: 0

Na wstępie chciałem podziękować za odpowiedź :) Co do disk_initialize, wywołuję ją w main() na samym początku:
Kod:
disk_initialize(0);

Przepraszam, zapomniałem o tym wspomnieć :)
Chociaż dłuższy czas miałem wątpliwości, bo czytając dokumentację napotkałem na to:
Cytuj:
Application program MUST NOT call this function, or FAT structure on the volume can be corrapted. To re-initialize the file system, use f_mount function instead.This function is called on volume mount process in the FatFs module to manage the media change.
.
Czyli źle to interpretuje, myśląc że nie wywoływać jej? Wiec disk_initialize wywoluje na poczatku maina, a f_mount() wywołuje (jak widac) na poczatku kazdej operacji zapisu. Jakies pomysly?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 1 lis 2012, o 13:29 
Online
Moderator
Avatar użytkownika

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

Chodzi o to że samo disc_initialize() musi zwrócić poprawny rezultat - a zwraca ?

poza tym poczytaj i podpatrz jak ja rozwiązuję kontrolę programową nad zasilaniem karty - w drugiej książce to dokładnie opisuję, a schemat możesz podejrzeć chociażby w schemacie ATB

http://atnel.pl/atb-karta-pamieci-mmc-sd.html

------------------------ [ Dodano po: kilkunastu sekundach ]

zresztą zobacz cały ten tutaj playerek ale wraz z RECORDEREM

http://atnel.pl/avr-wav-player-recorder.html

działają właśnie w oparciu o PetitFS ale też to moje rozwiązanie z resetowaniem karty za pomocą programowego włączania i wyłączania zasilania

_________________
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: 5 lis 2012, o 20:15 
Offline
Nowy

Dołączył(a): 31 paź 2012
Posty: 5
Pomógł: 0

Przepraszam za opoznienie w odpowiedzi :) Czyli sugerujesz ze bez sterowania zasilaniem nie ma mozliwosci sprawnego obsluzenia karty SD? Jesli chodzi o funkcje disk_initialize, dokonalem zmiany:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

Efekt jest nastepujacy:
karta jest - jak wczesniej, czasem dziala, czasem nie :P
nie ma karty - STA NOINIT
karta zabezpieczona - proces 'niby przechodzi' - oczywiscie nic nie zapisuje ale zadnego bledu nie wyrzuca :/
co z tym zrobic?

[ wyedytuj sobie te znaczniki w tym poście ;) nie [ code syntax = c ], tylko [ syntax = c ] i bez tych spacji, no i na końcu też trzeba dać [ / syntax ] - mirekk36]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 5 lis 2012, o 20:19 
Online
Moderator
Avatar użytkownika

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

Nic nie sugeruję, twierdzę jedynie, że sterowanie zasilaniem znacznie poprawia reakcję na jakieś błędy nieraz. Ale bez tego też powinno, hmm wręcz musi poprawnie działać.

_________________
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: 5 lis 2012, o 20:27 
Offline
Nowy

Dołączył(a): 31 paź 2012
Posty: 5
Pomógł: 0

ale to co tam moze byc nie tak? wogole jak sie odniesc do tego co pisze autor w dokumentacji ze tej funkcji nie powinno sie wywolywac? czemu jak wkladam karte do czytnika zabezpieczona, funkcja disk_initialize nie zwraca mi STA_PROTECT?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 5 lis 2012, o 20:39 
Online
Moderator
Avatar użytkownika

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

poczekaj poczekaj - czy ty masz moją pierwszą książkę ?

http://atnel.pl/mikrokontrolery-avr-jezyk-c.html

bo coś mi się wydaje, że przechodzisz błędy które przecież w niej dokładnie opisałem i przeprowadziłem przez to - czy może opuściłeś ten rozdział ?

_________________
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: 5 lis 2012, o 23:17 
Offline
Nowy

Dołączył(a): 31 paź 2012
Posty: 5
Pomógł: 0

Nieno, szczerze mowiac nie pominalem tego rozdzialu bo nie czytalem niestety Twojej ksiazki :) Jutro wybiore sie na uczelnie i dowiem sie, czy takowa posiadaja :) Tak sie zastanawialem, czy moze skoro reset po zapisie ratuje ta karte, to resetowanie programowe rozwiazaloby sprawe tylko czy wypada? :)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 6 lis 2012, o 06:27 
Online
Moderator
Avatar użytkownika

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

Widzę, że całkowicie źle mnie zrozumiałeś. Zapomnij na razie o tym resetowaniu, bo nagle upatrujesz w tym jakiegoś cudownego lekarstwa na każde zło i problem jaki masz z kartą pamięci. Nigdy tak nie pisałem i nie mówiłem.

Z opisów wynika, że ty masz kłopoty na dużo wcześniejszym etapie czyli prawidłowego przygotowania plików do obsługi karty. I po raz kolejny zapewniam cię, że można, ba! wręcz należy zacząć bez myślenia o tym resetowaniu za pomocą zasilania itp.

Ale ja teraz z marszu nie podpowiem ci co i jak bo w sumie ładnych "parę stron" opisałem na ten temat (przygotowanie FatFS) dla AVR ... i najczęstsze problemy jakie ludzie z tym mają. A na płycie DVD dołączonej do książki masz co NAWAŻNIEJSZE pliki źródłowe wraz z kodami napisanymi przeze mnie - dzięki czemu można go w podstawowej formie odpalić i to jak wspominałem bez żadnych dziwnych resetowań, które na razie rozpaliły twoją wyobraźnię jak cudowny lek. I bez tego FatFS ruszy ci bez kłopotu - zobaczysz.

_________________
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  
Wyświetl posty nie starsze niż:  Sortuj wg  
Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 10 ] 

Strefa czasowa: UTC + 1


Kto przegląda forum

Użytkownicy przeglądający ten dział: Bing [Bot] i 1 gość


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