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

Zapis i odczyt danych na karcie MMC z użyciem MMC.LIB w Bascom dla Atmega128

prim0 12 Cze 2006 12:10 8651 23
REKLAMA
  • #1 2721898
    prim0
    Poziom 12  
    Posty: 51
    Pomógł: 2
    Ocena: 1
    Pod atmege 128 podpieta mam karte MMC
    chialbym zrobic sobie prosty zapis i odczyt korzystajac z MMC.LIB
    moj kod do testu wyglada tak
     
    $regfile = "m128def.dat"
    $crystal = 16000000
    $include  "Config_MMC.bas"
    $include "CONFIG_AVR-DOS.Bas"
    
    
     Config Lcdpin = Pin , Db4 = Porta.3 , Db5 = Porta.2 , Db6 = Porta.1 , Db7 = Porta.0 , E = Porta.4 , Rs = Porta.5
     Config Lcd = 16 * 2
     Config Date = Dmy , Separator = .
    Config Clock = Soft
    Enable Interrupts
    
    Time$ = "12:00:00" : Date$ = "05.05.03"
    
    Dim Hhh As Byte
    Cls : Lcd "sprawdzam karte ... " : Wait 1
    If Drivecheck() = 0 Then
    Hhh = Driveinit()
    
    Lowerline : Lcd "karta " ; Hhh : Wait 2                     'Hhh=225
    Dim Berror As Byte
    Dim Abuffer(512) As Byte
    Dim Wsrampointer As Word
    Dim Lsectornumber As Long
    Wsrampointer = Varptr(abuffer(1))
    
    Berror = Drivegetidentity(wsrampointer)
    
       Cls : Lcd "OK  " ; Berror : Wait 2                       'Berror=232
    
    Else
    
     Cls : Lcd "Brak karty" : Wait 5
        End
    
    End If
    
    Cls
    Lcd "start zerowania"
    Wait 1
    Cls
    For Lsectornumber = 0 To 512                                'zapisz przypadkowe dane do buforu
    
    Abuffer(lsectornumber) = 24                                 'Rnd(10)
    Next Lsectornumber
    
    Wsrampointer = Varptr(abuffer(1))
    Lcd "pkt pam. " ; Wsrampointer
    Wait 5
    
    Lsectornumber = 34
    
    Berror = Drivewritesector(wsrampointer , Lsectornumber)     'zapis na karte
    Lowerline
    Lcd "kod zap  " ; Berror                                    'Berror=230
    Wait 5
    
    For Lsectornumber = 0 To 512                                'wyczyść bufor
    Abuffer(lsectornumber) = 0
    Next Lsectornumber
    
    Lsectornumber = 34
    Berror = Drivereadsector(wsrampointer , Lsectornumber)      'odczyt danych z karty
    Cls
     Lcd "kod odcz  " ; Berror
     Lowerline                                                  'Berror=229
     Lcd "odczyt " ; Abuffer(1)
     Wait 8
    


    i niestety przy zapisie dostaje błąd 230
    a przy odczycie 229
  • REKLAMA
  • #2 2722082
    arnoldziq
    VIP Zasłużony dla elektroda
    Posty: 5376
    Pomógł: 789
    Ocena: 300
    Twoja ATMEGA to L-ka ? Jeżeli zegar 16MHz to raczej nie .....
    Jeżeli nie, to jak zamieniasz logikę z 5V na 3V3 ?
    Kod na pierwszy "rzut oka" wygląda na poprawny....
    Zamieść schemat.
  • #3 2722163
    prim0
    Poziom 12  
    Posty: 51
    Pomógł: 2
    Ocena: 1
    mam dzielniki na rezystorach wszystko wedlog ogolnie dostepnego schematu
    po sprawdzeniu miernikiem na karcie jest 3,8v (czy to nie za duzo)
    karta wpieta na spi hardwearowe
  • #4 2722242
    arnoldziq
    VIP Zasłużony dla elektroda
    Posty: 5376
    Pomógł: 789
    Ocena: 300
    Hmm... tego nie próbowałem....
    Zazwyczaj działam na czymś takim jak na schemacie.
    Działa w BASCOM-ie bez problemu.
    Zrobiłem też kilka czytników na 74LVX08, też działają pod BASCOM-em.

    P.S. Dopiero zauważyłem że przy DriveInit masz kod 225.... karta się nie resetuje ....
    Const Cperrdrivereset = 225       ' Error response Byte at Reset command
    

    Problemy z komunikacją ? Sprawdź dokładnie połączenia. Poziom 3,8V to trochę sporo, ale karta powinna to przeżyć :)
    Załączniki:
    • MMC.ZIP (139.25 KB) Musisz być zalogowany, aby pobrać ten załącznik.
  • REKLAMA
  • #5 2722576
    prim0
    Poziom 12  
    Posty: 51
    Pomógł: 2
    Ocena: 1
    zmienilem zasilanie karty na 2 paluszki
    dalej to samo
    sprawdzilem karte komputer ja widzi
    aha karta jest nowa bez formatu czy mam ja przeformatowac jesli tak to na jaki format
    jesli nic nie wymysle to kupie 74LVX08 i sprobuje w ten sposob
  • #6 2722598
    arnoldziq
    VIP Zasłużony dla elektroda
    Posty: 5376
    Pomógł: 789
    Ocena: 300
    Błąd wyskakuje już przy inicjowaniu karty.
    Format karty nie powinien mieć znaczenia.

    P.S.: 2 Paluszki to od 2,4 do 3 V ..... może być trochę za mało, tym bardziej, że zawsze są jakieś spadki na elementach.
  • #7 2722632
    prim0
    Poziom 12  
    Posty: 51
    Pomógł: 2
    Ocena: 1
    Paluszki sa nowe maja 3,2v wiec powinno byc ok co znaczy ze to nie zasilanie a sygnaly jutro ide po 74LVX08
  • #8 2722645
    arnoldziq
    VIP Zasłużony dla elektroda
    Posty: 5376
    Pomógł: 789
    Ocena: 300
    Nie zapomnij o scalonym stabilizatorze 3v3 do zasilania 74LVX08.
    Ja polecam LP2980IM5-3.3. Mały, ale jaki sprytny :)
  • #9 2727589
    prim0
    Poziom 12  
    Posty: 51
    Pomógł: 2
    Ocena: 1
    mam stabilizator nie mam 74lvx08 ale mysle ze to inny problem jak w bascomie ustawic External Access Enable dla karty
    (jak wlacze to mam smieci na lcd) jak wylacze bledy init 225 zapis 228 odczyt 227
  • REKLAMA
  • #10 2728277
    arnoldziq
    VIP Zasłużony dla elektroda
    Posty: 5376
    Pomógł: 789
    Ocena: 300
    Opcja "External Access" włącza automatyczne adresowanie zewnętrznej pamięci.
    Co powoduje wystąpienie "dziwnych" stanów na niektórych wyjściach :)
    Wyłącz to raczej.
  • #11 2728913
    prim0
    Poziom 12  
    Posty: 51
    Pomógł: 2
    Ocena: 1
    no tak zewnetrznej pamieci ale ramu i to na tym porcie co mam lcd
  • #12 2737854
    prim0
    Poziom 12  
    Posty: 51
    Pomógł: 2
    Ocena: 1
    ok zeczywiscie problem byl zeczywiscie z komunikacja mala pomylka przy wpieciu spi ale juz smiga
    natomiast jak to jest z tymi formatami
    aby czytac system folderow zapisany z pod windozy jaki format dac karcie
  • REKLAMA
  • #14 2748662
    prim0
    Poziom 12  
    Posty: 51
    Pomógł: 2
    Ocena: 1
    chodzi fat32
    ale jesli wstawie w programie otwarcie jakiegos pliku
    np
    
    Fl = "test.txt"
    S = "test this"
    Ff = Freefile()
    Open Fl For Output As #ff
    Print #ff , S                                               ' print some data
    Print #ff , S
    Print #ff , S
    Print #ff , "A constant" ; S
    Close #ff
    


    to cos sie rypie i karte musze formatowac odnowa

    Dodano po 8 [minuty]:

    a jak dodam puste otwarcie


    
    Fl = "test.txt"
    Ff = Freefile()
    Open Fl For Output As #ff
    Close #ff 
    

    to otwarty plik znika z karty (ale karta przynajmniej nie traci formatu)

    Dodano po 6 [minuty]:

    natomiast
    Open Fl For Append As #ff

    dziala bez problemu

    Dodano po 4 [minuty]:

    for input tez dziala
    problem jest chyba tylko z zapisem
  • #15 2750634
    chszanek
    Poziom 13  
    Posty: 122
    Pomógł: 5
    Ocena: 9
    Witaj.
    Mógłbyś umieścić całkowity kod i podłączenia do avr(albo stronę) ? Sam ostatnio próbuję podłączyć kartę SD więc może i by mi coś to pomogło :)

    z góry dzięki
  • #17 2751190
    volender
    Poziom 13  
    Posty: 101
    Pomógł: 2
    a mam pytanie: jaki jest rozmiar programu urzywającego obsługi mmc/sd (minimalny, tak na oko). W tych darmowych 2 kb bascoma chyba się nie zmieści ;>. Pod pascalem coś czytałem o obsłudze sd i tam piszą, że kod prostego programu (oczywiście po kompilacji) to około 12 kb, więc dałem sobie spokój, bo pascal ma darmowe 4 kb :|.
  • #18 2751627
    ZbeeGin
    Poziom 39  
    Posty: 4324
    Pomógł: 602
    Ocena: 455
    Dla informacji. Bascom AVR DEMO (najnowsza wersja) oferuje już darmowe 4KB.

    Bardzo minimalistyczny program (inicjacja systemu AVR-DOS, sprawdzenie stanu karty, wypisanie jej podstawowych właściwości) z trudem mieści się w 4KB.
  • #19 2755891
    prim0
    Poziom 12  
    Posty: 51
    Pomógł: 2
    Ocena: 1
    pelna obsluga plikow w formacie fat16 i fat32 troszke wazy i 4kb z demo bascoma nie wystarczy


    chszanek
    podlaczenie karty masz tu
    http://www.ulrichradig.de/site/atmel/avr_mmcsd/gfx/MMCSDSCH.JPG
    pamietaj tylko ze np mega128 ma spi wyprowadzone dokladnie odwrotnie niz na tym schemacie
    a przykładowe kody obslugi sa na
    http://members.aon.at/voegel/
  • #20 5474126
    Jacek54
    Poziom 11  
    Posty: 22
    Kto może mi to wytłumaczyc ?
    1. Proszę mi podpowiedzieć, czy ta karta jest formatowana ?
    2. Czy to polega na stworzeniu systemu FAT16 na niej
    3. Gdzie można zaopatrzyć się w płatną wersję BASCOMA ?

    Pozdrawiam,
    Jacek
  • #21 5474203
    janek1815
    Poziom 38  
    Posty: 4513
    Pomógł: 372
    Ocena: 1060
    Dystrybutorem Bascoma bylo AVT tam zobacz. Również kupisz u producenta na www.mcselec.com
  • #22 6031547
    Jacek54
    Poziom 11  
    Posty: 22
    PRIMO napisał:
    Cytat:
    Jak wstawie otwarcie jakiegoś pliku to cos sie sypie i kartę muszę formatować od nowa


    Mam pytanie, jak taką kartę się formatuje, czy przy pomocy Windowsa XP ?.
    Windows XP informuje mnie że jest na niej system FAT, a le nie mówi 16 czy 32
  • #23 6032992
    ZbeeGin
    Poziom 39  
    Posty: 4324
    Pomógł: 602
    Ocena: 455
    Klikasz prawym klawiszem na kartę i Formatuj...
    Karty do 2GB mają system FAT(16), karty powyżej mają system FAT32.
  • #24 6039144
    Jacek54
    Poziom 11  
    Posty: 22
    Zdecydowałbym się na obsługę plików w systemie FAT pod Bascomem z wykorzystaniem karty MMC (7 pinów).

    1. Czy jest to mozliwe przy wykorzystaniu AVR-DOS ?
    2. Czy nie ma tam jakiegos błędu ?
    3. Jakie pliki konfiguracyjne musze dołaczyć (Config_MMC.bas, Config_AVR-DOS.bas)?

Podsumowanie tematu

✨ Dyskusja dotyczy implementacji zapisu i odczytu danych na karcie MMC podłączonej do mikrokontrolera Atmega128 z wykorzystaniem biblioteki MMC.LIB w Bascom AVR. Poruszono kwestie prawidłowego zasilania karty MMC (3,3 V), konwersji poziomów logicznych z 5 V na 3,3 V, oraz problemów z inicjalizacją karty (błędy 225, 227, 228). Zalecane jest stosowanie układów buforujących poziomy logiczne, np. 74LVX08, wraz ze stabilizatorem napięcia 3,3 V (np. LP2980IM5-3.3). Wskazano, że formatowanie karty nie powinno wpływać na inicjalizację, ale do poprawnej obsługi systemu plików najlepiej wymusić format FAT16, choć nowsze wersje AVR-DOS obsługują także FAT32. Problemy z zapisem plików w FAT32 w Bascomie zostały opisane, gdzie otwarcie pliku do zapisu powodowało uszkodzenie systemu plików, natomiast tryb dopisywania (Append) i odczyt działały poprawnie. Podano linki do schematów podłączenia karty MMC do Atmegi128 oraz do zasobów biblioteki AVR-DOS. Poruszono także kwestie rozmiaru kodu obsługi MMC/SD w Bascomie, który może przekraczać 4 KB dostępne w wersji demo. Wskazano, że opcja "External Access" w Bascomie powinna być wyłączona, gdyż powoduje konflikty z wyświetlaczem LCD. Ostatecznie problem z komunikacją wynikał z błędnego podłączenia SPI.
Wygenerowane przez model językowy.
REKLAMA