Elektroda.pl
Elektroda.pl
X
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

Obsługa MMC / Atmega 16

Tomek-85 19 Dec 2007 18:36 8392 9
  • #1
    Tomek-85
    Level 14  
    Czy wykonywaliście obsługę kart MMC ?



    Wykonałem projekt tak jak jest tu napisane,
    http://www.captain.at/electronic-atmega-mmc.php
    ale zamiast dzielników rezystorowych zastosowałem rezystor 300 ohm
    a za nim dałem diodę zenera w kierunku zaporowym na napięcie 3.3V
    Pomiędzy obydwoma elementami podpinałem odpowiedni pin karty.
    Mierząc napięcia na karcie otrzymywałem 3.11V
    Wystarczające by karta ruszyła! Podłączyłem kartę Rs-MMC , czyli
    ze zredukowaną wielkością. Karta może pracować na napięcia
    1.8 i 3.3V

    Niestety po wgraniu programu do Atmegi16 program zatrzymuje się
    na funkcjach:
    int writeramtommc(void)
    int sendmmc(void)

    i wywala mi błędy:
    MMC: write error 1
    MMC: read error 1


    (Mieliście coś takiego?)
    Siedzę już drugi dzień nad projektem, analizuję kod i nic
    nie mogę poradzić na te dziwne zachowania karty.
    Za wszelką pomoc i sugestie będę bardzo wdzięczny.
    Pozdrawiam Tomek.
  • #2
    m3
    Level 11  
    Nie robiłem nigdy obsługi tych kart, ale kiedyś natchnąłem się na taką strone: http://kju.wemif.net/mmc/ . Może tutaj znajdziesz coś ciekawego. Powodzenia!
    m3
  • #3
    Tomek-85
    Level 14  
    Witam ponownie.
    Ponieważ kod ze strony captain
    nie chciał działać, po głębszych poszukiwaniach znalazłem
    stronę pana Ulricha_Radiga
    po wykonaniu kosmetycznych zmian w kodzie, wrzuciłem
    program do Atmegi. Niestety karta MMC ciągle nie daje oznak życia.
    Wgrywanie kolejnego kodu ze strony "www.roland-riegel.de"
    uważam za zbyteczne.

    Znalazłem również niejednoznaczność w połączeniach karty
    z mikrokontrolerem. Autor projektu zamieścił dwa rysunki.
    Na prawym schemacie jest nakreślone, aby nóżkę MMC_DI (pin nr 2 karty)
    podłączyć do MISO a pin MMC_DO (pin nr 7 karty) podłączamy do MOSI.
    Na wikipedii napisane jest, że mosi łączymy z mosi
    a miso z miso. (czyli tak jak na stronie "captain").
    Po zamianie pinów nie otrzymałem pozytywnych rezultatów.
    Kto ma rację przy połączeniu karty?

    Czy można zrealizować takie podłączenie karty do atmegi która jest
    zasilana napieciem 5V w celu obniżenia napięć?
    Obsługa MMC / Atmega 16
    Powinienem zastąpić ten układ dzielnikami rezystorowymi?
    (W taki sposób mam podłączony wyświetlacz od Nokii 3310 i działa
    bez żadnych problemów).

    Napiszcie jak wy zrealizowaliście podłączenie i obsługę karty.
    Za pomoc i sugestie będę naprawdę baaardzo wdzięczny.
  • #4
    Bigfoot
    Level 25  
    MISO z MISO, MOSI z MOSI.

    BF
  • #5
    Januszcz22
    Level 15  
    Pamiętałeś o tym że DataOut w karcie z MISO w uc należy łączyć bezpośrednio, bo na tej linii nadaje karta?
  • #8
    me_super
    Level 29  
    __Grzegorz__ wrote:
    Witam!

    Osobiście korzystałem z tej implementacji FAT16/32 na kartach SD/MMC.

    Podłączenia CardFlash i HDD nie testowałem.

    Przetestowałem to na AT128, 2561, TMS320F2812 i sprawowało się bez zarzutu ... :)

    Może będziesz chciał skorzystać...


    Mam pytanie: czy jesteś w stanie określić czas zapisu bloku na kartę SD przez Atmegę128 (z jakim zegarem)? Jaki jest rozmiar bloku?
    Muszę gdzieś zapisać kawałek z przetwornika, i myślę o karcie SD. Alternatywą jest pamięć na magistrali szeregowej i2c albo SRAM (ale to ostateczność)
  • #9
    __Grzegorz__
    Level 29  
    Domyślny rozmiar bloku w kodzie to 512 bajtów o ile dobrze pamiętam.

    Testy masz tutaj:
    http://elm-chan.org/fsw/ff/img/rwtest.png

    Z tego co pamiętam, moje wyniki były porównywalne (ale mniejsze, bo kwarc był 8MHz).
    Po szczegóły muszę zajrzeć do notatek w pracy...

    Pozdrawiam w nowym roku :)

    [edit 02-01-2008]
    Jednak pracowałem na kwarcu 11 059 200.

    Code:

    Typ Karty   256MB / Kingston   64MB / Sandisk   2GB / Kingston Elite Pro

    Ilość plików   Czas dostępu (ms)      
    250   140   238   139
    500   254   352   238
    750   352   472   376
    1000   452   600   478
             
    Atmega 128 / 11059200Hz         


    Transfery: od nieco ponad 171kB/s do ok 250kB/s w zależności od karty...

    Wyciąg z logów terminala (pełny log w załączniku (śmieci w logu to efekt programowania AVR przez złącze ISP)).:

    Code:

    ...
    >fs

    FAT type = 2
    Bytes/Cluster = 1024
    Number of FATs = 1
    Root DIR entries = 512
    Sectors/FAT = 1024
    Number of clusters = 62160
    FAT start (lba) = 64
    DIR start (lba,clustor) = 1088
    Data start (lba) = 1120

    6 files, 58550208 bytes.
    0 folders.
    62160 KB total disk space.
    4981 KB available.
    >fc

    rc=12 FR_INVALID_OBJECT
    >fl

    ----A 2006/04/11 00:36   5000000  overwri1.txt
    ----A 2006/04/11 00:29  50000000  bigfile.txt
    ----A 2006/04/11 00:31   3550208  przepeln.txt
    ----A 2006/04/11 00:32         0  any.txt
    ----A 2006/04/11 00:32         0  a1
    ----A 2006/04/11 00:33         0  a2
       6 File(s),  58550208 bytes total
       0 Dir(s),       4981K bytes free
    >fo 6 overwri2.txt

    rc=0 FR_OK
    >fw 5000000 45

    5000000 bytes written with 236518 bytes/sec.
    >fc

    rc=0 FR_OK
    >fl

    ----A 2006/04/11 00:36   5000000  overwri1.txt
    ----A 2006/04/11 00:29  50000000  bigfile.txt
    ----A 2006/04/11 00:31   3550208  przepeln.txt
    ----A 2006/04/11 00:32         0  any.txt
    ----A 2006/04/11 00:32         0  a1
    ----A 2006/04/11 00:33         0  a2
    ----A 2006/04/11 00:38   5000000  overwri2.txt
       7 File(s),  63550208 bytes total
       0 Dir(s),         98K bytes free
    >fc

    rc=12 FR_INVALID_OBJECT
    >fc

    rc=12 FR_INVALID_OBJECT
    >fl

    ----A 2006/04/11 00:36   5000000  overwri1.txt
    ----A 2006/04/11 00:29  50000000  bigfile.txt
    ----A 2006/04/11 00:31   3550208  przepeln.txt
    ----A 2006/04/11 00:32         0  any.txt
    ----A 2006/04/11 00:32         0  a1
    ----A 2006/04/11 00:33         0  a2
    ----A 2006/04/11 00:38   5000000  overwri2.txt
       7 File(s),  63550208 bytes total
       0 Dir(s),         98K bytes free
    >fo 6 overwri3.txt

    rc=0 FR_OK
    >fw 100000 47

    100000 bytes written with 243902 bytes/sec.
    >fc

    rc=0 FR_OK
    ...


    [edit 05-01-2007]
    Załącznik usunąłem.

    Pozdrawiam.
  • #10
    Tomek-85
    Level 14  
    Niestety kompletnie zapomniałem o tym temacie.
    Problem okazał się natury technicznej. Trzeba było
    dać stabilizator na napięcie 3.3V i dorzucić kilka
    kondensatorków. (Karta przy zapisie pobiera prąd 200mA)
    Spotkałem się również z innym połączeniem (schematem).

    Obsługa MMC / Atmega 16

    Wszystko pięknie śmiga.
    Może kiedyś pokuszę się na
    implementację Fat16
    temat zamykam.