logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

Jak skonfigurować AVR DOS do obsługi FAT na kartach SD/MMC? Przykładowy kod?

KJ 19 Sty 2008 03:36 14275 27
REKLAMA
  • #1 4709817
    KJ
    Poziom 31  
    Posty: 2370
    Pomógł: 68
    Ocena: 945
    Witam. Właśnie udało mi się odpalić komunikacje z kartami SD/MMC bez problemu działa MMC 16MB 256MB i SD 1GB :D innych nie testowałem bo nie mam. Mogę bez problemu odczytywać i zapisywać sektory ale chciał bym mieć obsługę systemu plików fat tak aby dało sie włożyć kartę do kompa wgrać pliki i odczytać w urządzeniu docelowym. Z tego co wiem AVR DOS potrafi to zrobić tylko pytanie moje jak. Wiem że jest opis na stronie projektu ale bariera językowa nie pozwala mi go do końca zrozumieć :/ Najchętniej zobaczył bym przykładowy kod z konfiguracją całej biblioteki (póki co używam tylko MMC.lib) Czy potrzebuje coś jeszcze aby móc korzystać z poleceń dotyczących obsługi FAT-a jak to skonfigurować jak odczytać z karty co na niej jest itp ? Jeżeli ktoś to robił to bardzo proszę o pomoc. Ilość zajmowanej w procku pamięci nie ma specjalnie znaczenia choć miło było by się zmieścić z obsługą systemu plików w 20kb bo jeszcze musi zostać pamięci na resztę funkcji mam do dyspozycji atmegę 128. Za wszelką pomoc z góry dziękuję.
  • REKLAMA
  • #2 4709929
    markosik20
    Poziom 33  
    Posty: 2261
    Pomógł: 208
    Ocena: 147
    KJ napisał:
    Najchętniej zobaczył bym przykładowy kod z konfiguracją całej biblioteki (póki co używam tylko MMC.lib)

    Najlepiej zacząć od dokładnego zapoznania się z obsługą FAT'a (16 i 32). Potem zrozumienie kodu to już pestka.
    Na początek polecam link i cos po polsku link
  • #4 4710843
    ZbeeGin
    Poziom 39  
    Posty: 4300
    Pomógł: 600
    Ocena: 438
    Nie pamiętam jaką ostatnio do MCS wersję przesłałem (chyba 1.11.7.4), ale najnowszą wersję zdobędziesz pod tym adresem:

    http://zbeegin.republika.pl/bascom_pocket_20070328.zip (6MB - komplet)

    Co do obsługi to potrzebny jest program główny, biblioteka AVR-DOS.LBX (najnowsza na stronie projektu) i sterownik (też jako biblioteka). Możesz posiłkować się programami przykładowymi z katalogu SAMPLES/AVRDOS:
    FlashCard-demo.bas + Config_MMC.bas.

    Aby użyć MMC musisz zmienić ten fragment:
    ' Here you can include the Drive
    #if Xramdrive = 0
     '$Include "CONFIG_FlashCardDrive.bas" ' use real card
     $include "config_mmc.bas"
    #else
     $Include "CONFIG_XRAMDrive.bas"       ' simulate with "XRAM-Drive"
    #endif


    Przykłady są opracowane pod kątem Mega128 więc przy innych procesorach wymagać będą bardzo istotnych zmian w pilkach kofiguracji sterowników (Config_xxx.bas).
  • #5 4724923
    KJ
    Poziom 31  
    Posty: 2370
    Pomógł: 68
    Ocena: 945
    Karta już od jakiegoś czasu chodzi świetnie ale tylko na spi programowym. Na sprzętowym niestety nie rusza :( Kwarc 14MHz czy to może mieć wpływ ? konfiguracja i połączenia raczej poprawne.
  • #6 4725099
    markosik20
    Poziom 33  
    Posty: 2261
    Pomógł: 208
    Ocena: 147
    KJ napisał:
    Kwarc 14MHz czy to może mieć wpływ ?


    Karta jest w stanie przyjąć dane do 20Mbit/s więc jeszcze masz daleko. Jedynie podczas inicjalizacji w tryb SPI trzeba "trochę" zwolnić z prędkością.

    KJ napisał:
    konfiguracja i połączenia raczej poprawne.


    Co znaczy "raczej" poprawne ? :wink:. Pokaż kod odpowidzialny za konfigurację SPI i wysyłanie.
  • #7 4962488
    kasaidolar
    Poziom 19  
    Posty: 409
    Pomógł: 22
    Ocena: 29
    Hej KJ! Ja wlasnie walcze z MMC w C i Mega32 i Mega162. Napisz mi prosze z czego korzystałes tzn schemat i kod programu. Ja juz powoli nie ma sily do tego :) Napisz prosze ile nad tym siedziales zeby karta sie odezwala (ja juz kilka dni i nic :)) Mam nadzieje ze mnie pocieszysz :)
    Pozdrawiam serdecznie!

    Ps. O FATcie jeszcze nie ma co marzyć :D
  • #8 4976143
    MichW
    Poziom 12  
    Posty: 93
    Witam Kolegów,
    Ja też walczę z obsługą kart MMC/SD ale pod Bascomem i muszę przyznać, że z kartą MMC 32MB, bo taką posiadam tylko działa super, ale niestety mam problemy z kartą SD... SD 512MB jest już błąd podczas inicjalizacji i zwracany błąd to 17, testowałem 2GB i było ok, nie wiem dlaczego tak jest, dodam, że mam dwie karty 512MB i tak samo nie chcą działać, a komputer je widzi normalnie.
    Czy ktoś z Kolegów też miał takie problemy już??

    Pozdrawiam!
  • REKLAMA
  • #9 5014852
    kuch_arc
    Poziom 14  
    Posty: 239
    Pomógł: 3
    Ocena: 19
    Witam wszystkich,

    Ja też zaczynam powoli walczyć z moim data loggerem, który chce zrobić w oparciu o ATMEGA8, AVR-DOS i karty SD.


    Tutaj moje SOFT-spi to ATmega8 ( pozmieniałem piny) , ale nie jestem tego pewien, ponieważ jest to moja pierwsza styczność z BASCOMem.

    ' --------- Start of Section for Soft-SPI --------------------------------------

    ' Chip Select Pin => Pin 1 of MMC/SD
    Config Pinb.2 = Output
    Mmc_cs Alias Portb.2
    Set Mmc_cs

    ' MOSI - Pin => Pin 2 of MMC/SD
    Config Pinb.3 = Output
    Set Pinb.3
    Mmc_portmosi Alias Portb
    Bmmc_mosi Alias 3

    ' MISO - Pin => Pin 7 of MMC/SD
    Config Pinb.4 = Input
    Mmc_portmiso Alias Pinb
    Bmmc_miso Alias 4

    ' SCK - Pin => Pin 1 of MMC/SD
    Config Pinb.5 = Output
    Set Pinb.5
    Mmc_portsck Alias Portb
    Bmmc_sck Alias 5

    ' --------- End of Section for Soft-SPI ----------------------------------------


    Tutaj program:
    $regfile "m8def.DAT"
    $crystal = 8000000

    $include "Config_MMC.bas"

    wydaje mi sie, że to się powinno kompilować, a wyskakuje błąd.

    Error 61 - Label not found [_INIT_SPI

    Czy ktoś mógły zapodać jakimś małym hint'em dlaczego tak się dzieje?
  • REKLAMA
  • #10 5015093
    Freddy
    Poziom 43  
    Posty: 19997
    Pomógł: 1394
    Ocena: 2806
    Wszyscy z was walczą z tym, ale żadnemu nie chce sie użyć klawisza szukaj. Temat był wałkowany już, a ja nawet podałem dwa przykłady działające https://www.elektroda.pl/rtvforum/topic956787.html
  • #11 5038650
    MichW
    Poziom 12  
    Posty: 93
    Freddy napisał:
    Wszyscy z was walczą z tym, ale żadnemu nie chce sie użyć klawisza szukaj. Temat był wałkowany już, a ja nawet podałem dwa przykłady działające https://www.elektroda.pl/rtvforum/topic956787.html


    Ale jakbyś dokładniej przeczytał posty to zauważyłbyś, że większośc tu piszących programuje w bascomie a nie w C. A Ty podajesz link do opisów w innym języku

    Pozdrawiam!
  • #12 5040210
    Freddy
    Poziom 43  
    Posty: 19997
    Pomógł: 1394
    Ocena: 2806
    MichW napisał:
    Freddy napisał:
    Wszyscy z was walczą z tym, ale żadnemu nie chce sie użyć klawisza szukaj. Temat był wałkowany już, a ja nawet podałem dwa przykłady działające https://www.elektroda.pl/rtvforum/topic956787.html


    Ale jakbyś dokładniej przeczytał posty to zauważyłbyś, że większośc tu piszących programuje w bascomie a nie w C. A Ty podajesz link do opisów w innym języku

    Pozdrawiam!

    A jakbyś Ty zauważył, autor postu nie napisał, że pisze w Bascomie.
    Poza tym, można C skompilować do ASM i zrobić wstawkę w Bascomie, ale Ty tegoi nie zauważasz
    Zauważasz jedynie , że można komuś zwrócić uwagę
  • #13 5040411
    MichW
    Poziom 12  
    Posty: 93
    Nie zwracam Ci uwagi, tylko piszę, że nie wszystkie posty jakie są na tym forum pasują do pytań osób, które mają jakieś wątpliwości. Jest wiele różnych postów poruszanych na podobne tematy a nie zawsze znajdujemy to co chcemy w nich.

    Autor postu nie napisał, że pisze w Bascomie, ale pisze jakiej biblioteki chce użyć... a ona jest właśnie spod pakietu BASCOMA.
  • #14 5043065
    Freddy
    Poziom 43  
    Posty: 19997
    Pomógł: 1394
    Ocena: 2806
    MichW :arrow:
    No i dlatego mając źródło w ASM można samemu stworzyć bibliotekę do BASCOMA, a jak się to robi, jest napisane w helpie i przykładach.
    Uważam wię że moja wypowiedź wniosła znacznie więcej do tematu niż Twoja.
    Proszę, załączę tutaj jeden przykład "specjalizowany" do Bascoma.
    Pragnę jednak zauważyć, że nie tylko Bascom jest tutaj obecny, a porady są dla wszystkich.
    Nie rozumie dlaczego wszyscy się tak uparli na Bascoma, chyba dlatego, że AVT pisało o nim. (łatwiej znaleźć pirata :) :) :) ) Jest to jeden z gorszych kompilatorów dla AVR. Jest wiele lepszych i bardziej optymalnych. Nie piszę tu o C i ASM, ale nawet dla języków wyższego rzędu.
    Załączniki:
    • FAT16 32.zip (114.13 KB) Musisz być zalogowany, aby pobrać ten załącznik.
  • #15 5054960
    MichW
    Poziom 12  
    Posty: 93
    Bascom jest czytelny i łatwiejszy w przyswojeniu niż ASM czy C. Ludzie nie chcą sobie utrudniać życia i po prostu wybierają to co jest łatwe i daje szybko efekty. W Bascomie jest pełno gotowych poleceń, które napisane w C czy ASM zajęłyby niektórym dużo czasu. Fakt AVT miało w tym swój udział ale ja np dzięki temu językowi zacząłem zabawę z uC. Wiele razy miałem przesiąść się na C, ale w Bascomie czuję się swobodnie i wiem, że w tym języku napiszę praktycznie wszystko. Mam jednak nadzieję, że niedługo zabiorę sie za C.
    pozdr
  • #16 5057067
    Freddy
    Poziom 43  
    Posty: 19997
    Pomógł: 1394
    Ocena: 2806
    1.
    No i bardzo dobrze, że biblioteka. Skoro ktoś pisze w Bascomnie, a nie
    tylko udaje, to mając źródła w ASM umie sobie zrobić bibliotekę do Bascoma.

    Cytat:
    Fakt AVT miało w tym swój udział ale ja np dzięki temu językowi zacząłem zabawę z uC.

    No i to była największa pomyłka. Znacznie lepszym wyjściem byłoby wybranie innego języka, np. FastAVR. Jest prostszy lepszy i daje optymalniejsze kody.
  • #17 5063915
    pixel7
    Poziom 24  
    Posty: 656
    Pomógł: 53
    Ocena: 160
    Witam,

    Ja też mam problem z fat.
    Karta 512 mb kingstone.
    uP wykrywa, inicjalizuje kartę. Mogę zapisać i odczytać dowolne 512 bajtów.
    Jednak przy próbie zastosowania fat nie rozpoznaje systemu plików.
    Używam AVR DOS z sampli bascom. Próbowałem kartę formatować w różny sposób ale nic to nie daje.





    Freddy napisał:

    Pragnę jednak zauważyć, że nie tylko Bascom jest tutaj obecny, a porady są dla wszystkich.


    Tak na marginesie, zastanawiam się, co by było gdyby rozmowa dotyczyła języka C a któś podałby rozwiązanie dla bascoma! Rwetes co niemiara...
  • #18 5064046
    MichW
    Poziom 12  
    Posty: 93
    Racja, jak wtrącisz się tym co piszą w C to zostaniesz wygwizdany;) no bo Bascom uważają za gorszy. A wydaje mi się, że chodzi tu o zazdrość, że Bascom ma tak wiele gotowych rozwiązań, a w sumie to twórca tego języka też musiał się nad tym namęczyć, żeby inni mieli łatwiej.
    Także język ten ma swoje wady i zalety, przede wszystkim szybkość napisania tego co się chce.

    pixel7 ja zauważyłem, że gdy używałem karty 512MB to wywalało mi błąd 227 z tego co pamiętam i to działo się już przy $include"Config_MMC.bas", teraz już nie pamiętam, ale błąd dotyczy BOOT sektora chyba. Na kartach 1GB i 2GB wszystko działa elegancko.
    Pozdro!
  • REKLAMA
  • #19 5064346
    pixel7
    Poziom 24  
    Posty: 656
    Pomógł: 53
    Ocena: 160
    Mi wywala błąd 226 - inicjalizacja systemu plików karty.
    Czy jest sposób na dopasowanie kart 512mb?
    Może zgrać bootsector z 1gb i wpisać na 512?




    Poradziłem sobie.
    Przy pomocy tego dokumentu:
    http://www.ecgf.uakron.edu/grover/web/ee470/labs/SDCardMap.pdf

    Wpisałem przy pomocy winhex boot sector z pdfa i karta od razu została zidentyfikowana poprawnie.
  • #20 5071925
    MichW
    Poziom 12  
    Posty: 93
    pixel7 Ciekawe to co piszesz... jak znajdę trochę czasu to się też z tym pobawię.
    A ma ktoś może przetestowane jak zachowuje sie obsługa FAT oczywiście w Bascomie, gdy tworzymy dość duże pliki tekstowe? Bo na małych rzędu 50kB działa super ale na większych nie testowałem.
  • #21 5072127
    Fyszo
    Poziom 37  
    Posty: 3987
    Pomógł: 223
    Ocena: 115
    Pamiętajcie że karty SD (Secure Digital) mogą mieć zabezpieczenie przed zapisem/odczytem (hasełko) stąd mogą być trudności w obsłudze.
  • #22 5072141
    pixel7
    Poziom 24  
    Posty: 656
    Pomógł: 53
    Ocena: 160
    Karta pracuje jak trzeba! Testowałem w najróżniejsze sposoby (zapis pliku, odczyt - bez problemu można przenosić dane pomiędzy AVR a PC). Także problem był związany z boot sectorem


    Fyszo napisał:
    Pamiętajcie że karty SD (Secure Digital) mogą mieć zabezpieczenie przed zapisem/odczytem (hasełko) stąd mogą być trudności w obsłudze.


    Hasełko do czego?
  • #23 5072164
    Fyszo
    Poziom 37  
    Posty: 3987
    Pomógł: 223
    Ocena: 115
    Cytat z Wikipedii (marne źródło - ale źródło):
    "SD (ang. Secure Digital) – jeden ze standardów kart pamięci opracowany przez firmy Panasonic, SanDisk i Toshiba w 2000 roku. Karty SD charakteryzują się niewielkimi wymiarami (24 x 32 x 2,1 mm) i masą (ok. 2 gramy). Poza grubością, ich wymiary są identyczne jak kart MMC. Karty SD posiadają 9 wyprowadzeń oraz rzadko używaną funkcję zabezpieczenia danych chronionych prawami autorskimi przed kopiowaniem. "

    Szczegóły tu: http://www.sdcard.org/home
    pt. 4: http://www.sdcard.org/about/memory_card/
  • #24 5085068
    seba_x
    Poziom 31  
    Posty: 2071
    Pomógł: 29
    Ocena: 112
    a ja mam pytanie do was : znalazłem kilka schematów podłączenia karty sd do uP , na każdym jest DATA OUT połączone bezpośrednio z MISO , czy podczas programowania uP nie uszkodzę karty SD ?
    resztę sygnałów chcę puścić przez 74lvc541 .
    Załączniki:
    • Jak skonfigurować AVR DOS do obsługi FAT na kartach SD/MMC? Przykładowy kod? 541.gif (29.05 KB) Musisz być zalogowany, aby pobrać ten załącznik.
  • #26 5307109
    monty_p
    Poziom 18  
    Posty: 377
    Pomógł: 1
    Ocena: 26
    Witam!

    Widzę, że poruszacie temat, który ja mam teraz na tapecie :)
    Chcę uruchomić SD na ATmega8.
    Szczegóły w tym temacie: https://www.elektroda.pl/rtvforum/topic1049420.html#5305840

    Czy mógł bym prosić o pomoc w tym temacie ? Wy, jak widzę, macie to już za sobą :D

    Bardzo dziękuję za wszelką pomoc.

    Pozdrawiam, Monty
  • #27 5470279
    Jacek54
    Poziom 11  
    Posty: 22
    Jestem początkujący i nie bardzo to jest dla mnie jasne.:cry:

    1. Czy pustą kartę SD trzeba jakoś skonfigurować, żeby tworzyć na niej system plików FAT16 ?
    2. Gdzie mógłym poczytać coś na ten temat, o systemach FAT16.
    3.Czy ktoś by mógł zamiescic jakiś program w Bascomie, żebym mógł się zorientować jak µP komunikuje się z karta SD ?
    4. Czy karta MMI ma 7 pinów i jest kompatybilna z SD ?
    5. Czy gdzieś jest opisany sposób komunikacji, mechanizm zapisu i odczytu miedzy SD i uP ?
  • #28 5470358
    d.d
    Poziom 20  
    Posty: 386
    Pomógł: 36
    Ocena: 18
    seba_x napisał:
    a ja mam pytanie do was : znalazłem kilka schematów podłączenia karty sd do uP , na każdym jest DATA OUT połączone bezpośrednio z MISO , czy podczas programowania uP nie uszkodzę karty SD ?
    resztę sygnałów chcę puścić przez 74lvc541 .


    Ja uwaliłem już dwie ATmegi8 przez to że zapomniałem wyjąć karty podczas programowania .
    ATmega niby się zaprogramowała do końca i koniec programator jej nie widzi a program się nie wykonuje.
    Teraz zamontowałem sobie na lini MISO malutki przełącznik przełączający MISO pomiędzy programatorem a kartą.

Podsumowanie tematu

✨ Dyskusja dotyczy konfiguracji biblioteki AVR-DOS do obsługi systemu plików FAT na kartach SD/MMC w środowisku Bascom dla mikrokontrolerów AVR, głównie ATmega128 i ATmega8. Użytkownicy potwierdzają poprawną komunikację z kartami MMC i SD o pojemnościach od 16MB do 2GB, jednak pojawiają się problemy z inicjalizacją i rozpoznaniem systemu plików FAT na kartach 512MB, co często wiąże się z błędami boot sektora (np. błędy 226, 227). Rozwiązaniem jest ręczna modyfikacja boot sektora karty zgodnie z dokumentacją SD. Zalecane jest użycie najnowszej wersji biblioteki AVR-DOS.LBX wraz z odpowiednimi plikami konfiguracyjnymi (np. Config_MMC.bas) oraz przykładami (FlashCard-demo.bas). Komunikacja SPI powinna być na początku inicjalizowana z niższą prędkością, a następnie można ją zwiększyć do maksymalnej obsługiwanej przez kartę (do 20 Mbit/s). Wskazano, że Bascom oferuje wygodne polecenia do obsługi FAT, choć niektórzy sugerują alternatywne języki programowania dla lepszej optymalizacji. Poruszono także kwestie sprzętowe, takie jak bezpośrednie połączenie linii DATA OUT karty SD z linią MISO mikrokontrolera oraz ryzyko uszkodzenia podczas programowania, co można zabezpieczyć przełącznikiem. Wskazano na bariery językowe w dokumentacji projektu oraz na różnice w podejściu do programowania w Bascomie i C. Podsumowując, aby korzystać z FAT na kartach SD/MMC w AVR-DOS, należy użyć kompletnej biblioteki z odpowiednią konfiguracją, zwrócić uwagę na poprawną inicjalizację SPI, a w przypadku problemów z rozpoznaniem FAT na mniejszych kartach, zastosować korektę boot sektora.
Wygenerowane przez model językowy.
REKLAMA