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

[atmega328][bascom][avr-dos]Odczyt karty mmc nie działa

rafcio363 23 Maj 2011 01:27 5148 25
  • #1 9534780
    rafcio363
    Poziom 30  
    Witam.
    Mam problem z odczytem karty mmc, miałem już działający układ z dobrym kodem ale gdzieś się zawieruszył w gąszczu plików i musiałem się za to wziąść od nowa.
    Jednak niechce mi działać.
    Karty mam 2 (32mb mmc sanyo i siemens, obie w fat 16).
    Na jednej dostaje error init file system 229
    a na drugiej error during drivie init 225

    Co najciekawsze wczesniej działały mi obie na starym projekcie teraz nie chce żadna...
    Połączenia sprawdzone 100razy, zasilanie 3v3 100n i elektrolit przy samym czytniku,dwie masy na czytnik podane.


    [atmega328][bascom][avr-dos]Odczyt karty mmc nie działa
    Kod: text
    Zaloguj się, aby zobaczyć kod


    Kod: text
    Zaloguj się, aby zobaczyć kod


    Kod: text
    Zaloguj się, aby zobaczyć kod
  • #2 9534943
    dondu
    Moderator na urlopie...
    By mikrokontroler działał, niezbędne jest jego prawidłowe zasilenie, ale tego na schemacie nie widać. Gratuluję uporu 100-krotnego sprawdzania podłączenia, ale może jednak włąśnie tu jest problem?

    Programu nie sprawdzałem, bo niestety tego "narzecza" nie znam :)
  • #3 9534970
    domansolarpower
    Poziom 13  
    nie spawdzam ale zaznaczam ze mi zaczelo dzialac jak wywalilem rezystory, po prostu isp do karty + odpowiednie zasilanie 3,3V
  • #4 9535344
    rafcio363
    Poziom 30  
    Zasilania są ok,mam podpięte inne rzeczy i reszta działa ok.
    Na rezystorach działało wcześniej i tym samym procku.
    Podmienilem czytnik sd na próbę.
    Wydaje mi się że źle mam config mmc

    Kod: text
    Zaloguj się, aby zobaczyć kod
    'Res/Cs    Ss B.2
    'Cmd/Di  Mosi B.3
    'Clk/Sck  Sck B.5
    'Dat/Do  Miso B.4
    [atmega328][bascom][avr-dos]Odczyt karty mmc nie działa
  • #6 9539453
    rafcio363
    Poziom 30  
    Dalej niestety nic nie ruszyłem,chyba podmienię procka bo skończyły mi się pomysły (może go za bardzo przygrzałem hotem bo lutowałem go kilka razy..)
    Ciągle dostaję błąd 229 przy inicjacji systemu plików.

    Dodano po 1 [minuty]:

    Chociaż napięcia są wszędzie 3,2V i + 5V na MISO gdzie niema dzielnika na rezystorach.
  • #7 9539466
    drzasiek
    Specjalista CNC
    Jak podłączasz kwarc to jeszcze kondensatory do masy mają być.
    Co do karty, to widzę po dzielniku napięcia, że uC zasilacz 5V a kartę 3,3V. Linia MISO podłączona jest bezpośrednio a więc stan wysoki ( "1" ) na tej linii to 3,3V. Nie wiadomo jak uC zasilany z 5V odbiera to napięcie, czy jeszcze "1" czy już może "0"?
  • #8 9539503
    rafcio363
    Poziom 30  
    Tak wiem ale kondensatory są teraz nie istotne bo taktuje go wewn. oscylatorem.Pod wsadzeniu karty na miso mam 3.7V
    Najdziwniejsze jest to że mi to wszystko działało na pająku,teraz zrobiłem płytkę napisałem kod od nowa i klapa.
  • Pomocny post
    #10 9539594
    drzasiek
    Specjalista CNC
    To ja powtórzę jeszcze raz, choć może nie dokładnie to jest przyczyną ale strasznie to gryzie i ja to bym najpierw sprawdził. Układy CMOS (czyli np Atmega) mają poziom napięcia wysoki równy 0,7 napięcia zasilania. Czyli dla napięcia zasilania uC = 5V powinno być min 3,5V. Na pająku mogło działać bo może zasilałeś z innego zasilacza, innego stabilizatora (innego egzemplarza) a że wszystko akurat mogło jechać po granicy a teraz może już tak nie jest i są problemy. Masz jakiś konkretny powód zasilania uC z 5V? Spróbuj na chwilę wywalić dzielniki i obniżyć napięcie do 3,3V na całości albo na MISO daj tranzystor.
    A co do napięcia 3,7V jakie zmierzyłeś na MISO to skąd ono się tam mogło wziąć? pewnie mierzyłeś stan wysokiej impedancji uC na wejściu czyli przypadkowe wartości.
  • #11 9540042
    rafcio363
    Poziom 30  
    drzasiek napisał:
    To ja powtórzę jeszcze raz, choć może nie dokładnie to jest przyczyną ale strasznie to gryzie i ja to bym najpierw sprawdził. Układy CMOS (czyli np Atmega) mają poziom napięcia wysoki równy 0,7 napięcia zasilania. Czyli dla napięcia zasilania uC = 5V powinno być min 3,5V. Na pająku mogło działać bo może zasilałeś z innego zasilacza, innego stabilizatora (innego egzemplarza) a że wszystko akurat mogło jechać po granicy a teraz może już tak nie jest i są problemy. Masz jakiś konkretny powód zasilania uC z 5V? Spróbuj na chwilę wywalić dzielniki i obniżyć napięcie do 3,3V na całości albo na MISO daj tranzystor.
    A co do napięcia 3,7V jakie zmierzyłeś na MISO to skąd ono się tam mogło wziąć? pewnie mierzyłeś stan wysokiej impedancji uC na wejściu czyli przypadkowe wartości.

    ojj Kolego masz u mnie duuuże piwo :) :popcorn:
    Podpiąłem na krótko 3.3V i układ ruszył :!:
    Wcześniej tak jak wspomniałeś zasilałem układ z innego źródła 5V.
    Muszę jednak zostać przy zasilaniu 5V docelowo bo mam kilka układów i minium zasilania to 4.1V (em4095).Ale wolałbym zostać przy 5V bo mam docelowo tam mieć lm2940-5.
    Czy dodanie tranzystora na miso może rozwiązać problem?
    [atmega328][bascom][avr-dos]Odczyt karty mmc nie działa
  • #12 9540065
    piotrva
    VIP Zasłużony dla elektroda
    Hmm, ja mam parę kart SD/MMC na dzielnikach rezystancyjnych podpiętych do układów 5V i działają... Czy na 100% poprawnie zbudowałeś dzielniki? Bo ja kiedyś na początku pomyliłem i zamiast do masy podpiąłem do zasilania drugi koniec dzielnika...
  • #13 9540074
    drzasiek
    Specjalista CNC
    Lepszy byłby MOS bo w bipolarnym masz spadek napięcia na CE. Ale nie powinno aż tak przeszkadzać. Próbuj, uC ani karty tym nie uszkodzisz :)

    Dodano po 2 [minuty]:

    piotrva napisał:
    Hmm, ja mam parę kart SD/MMC na dzielnikach rezystancyjnych podpiętych do układów 5V i działają... Czy na 100% poprawnie zbudowałeś dzielniki? Bo ja kiedyś na początku pomyliłem i zamiast do masy podpiąłem do zasilania drugi koniec dzielnika...

    Może masz właśnie te przypadki w których napięcie jedzie po granicy i działa. Dużo zależy od stabilizatora i napięcia wejściowego, zobacz sobie na LM7805 albo chociażby LF33 jak się rozjeżdża napięcie wyjściowe przy zmianie wejściowego.
  • #14 9540111
    piotrva
    VIP Zasłużony dla elektroda
    No jeśli VIN jest ok 9V przed LM7805 to później LF33CV podpięty za LM7805 (czyli do +5V) daje równiutkie +3,3V, napięcia na pinach IN karty są też ok, a procesor bez problemu rozpoznaje 3,3V jako logiczną jedynkę (wszystko powyżej 0,7V to logiczne jeden dla tych układów)... Stąd moje zdziwienie dlaczego koledze nie działa, skoro w teorii i praktyce działa i to nie jednej osobie... Stąd prośba o dodatkowe sprawdzenie tego dzielnika.
  • #15 9540209
    rafcio363
    Poziom 30  
    Dzielniki były podłączone dobrze, podpięte jak wspomniałeś "9V przed LM7805 to później LF33CV podpięty za LM7805 (czyli do +5V) daje równiutkie +3,3V" LF nie dawał idealnie 3.3 tylko 3.2 jak dobrze pamiętam.Jutro powalczę i dam znać czy był jakiś błąd.
  • #16 9540211
    drzasiek
    Specjalista CNC
    piotrva napisał:
    a procesor bez problemu rozpoznaje 3,3V jako logiczną jedynkę (wszystko powyżej 0,7V to logiczne jeden dla tych układów)

    Ale 3.3 V w stosunku do 5V to jest 0.66 a nie 0.7 więc ma prawo nie działać. Stabilizator 5V lubi czasem dać nieco ponad, stabilizator 3,3V bywa, że daje ok 3,25 i stosunek jeszcze gorszy się robi.
  • #18 9547896
    manekinen
    Poziom 29  
    rafcio363 napisał:
    Config Spi = Hard , Interrupt = Off , Data Order = Msb , Master = Yes , Polarity = High , Phase = 1 , Clockrate = 4 , Noss = 1

    Spróbuj tak:
    Config Spi = Hard , Interrupt = Off , Data Order = Msb , Master = Yes , Polarity = Low , Phase = 0 , Clockrate = 4 , Noss = 1
    Może nawet z tymi dzielnikami ruszy, jest to poprawne ustawienie.

    Polarity (CPOL) = Low - w czasie bezczynności linia zegarowa powinna mieć stan niski
    Phase (CPHA) = 0 - dane odczytywane przy drugim zboczu zegara (opadającym, jeśli CPOL=0)
    (chyba nie pokręciłem)


    rafcio363 napisał:
    Czy dodanie tranzystora na miso może rozwiązać problem?

    Sądzę że narobi więcej kłopotów jak pomoże. Te tranzystory wprowadzą ogromne opóźnienie (ogromne, jak na zegar 2MHz). Przerabiałem już takie rzeczy i wypadają okropnie. Jeśli już, to opóźniaj również mosi i sck. Albo ustaw baaaardzo małą prędkość :)
  • #19 9553798
    rafcio363
    Poziom 30  
    Obniżyłem zasilanie do 4.2V , zmieniłem dzielnik lini z karty z 3,3k na 5,6k co dało podział napięć na 3.15v. Ale dalej mam błąd przy odczycie.
    0.7 z 4.2V daje 2.9 jak stan wysoki ale i tak nie trybi..

    Jak podam 3.1 =3.5V na procek i kartę bez dzielników to działa bez problemu.
  • #20 9555593
    manekinen
    Poziom 29  
    Wypróbuj zmiany w programie jakie zaproponowałem wyżej.
  • #21 9555605
    rafcio363
    Poziom 30  
    Oczywiście próbowałem ale bez efektu, sprawdzę jeszcze na tych tranzystorach.
    Jak nie zatrybi to zostanie mi chyba tylko dobudować bufor.
  • Pomocny post
    #22 9555719
    manekinen
    Poziom 29  
    A najlepiej to jak byś miał możliwość podglądnięcia tych sygnałów na oscyloskopie, bo podejrzewam że tu chodzi o zbocza sygnałów CLK i MISO - na pewno nie idą w parze z tak dużym zegarem. Zmniejszenie prędkości SPI rozwiązałoby problem, potrzebne Ci aż 2MHz?

    I nie wiem jak z tymi dzielnikami bo nigdy w ten sposób nie łączyłem, ale bezpośrednio to lata mi nawet przy SPI 10MHz (wyżej nie sprawdzałem).

    A może wypróbuj diody zenera zamiast dzielników? Rezystory 220ohm powinny być ok. Lub nawet mniejsze. Tak jak jest to zrobione w USBASP przy konwersji napięcia dla USB.
  • #23 9555837
    rafcio363
    Poziom 30  
    Niestety nie posiadam oscyloskopu,obecnie mam ustawiony zegar 1mhz i clockrate 4. Diód zenera 3v3 nie mam na stanie więc i tak czeka mnie wizyta w sklepie jutro więc może dostanę ten bufor.

    Konwerter poziomów z tranzystorami nie dał poprawy.
    Może problem tkwi w przewodach do czytnika.Obecnie mam podłaczony czytnik do pcb tasiemką komputerową 4żyłową + osobną zasilanie długość ok.20cm.
  • Pomocny post
    #24 9555926
    drzasiek
    Specjalista CNC
    rafcio363 napisał:
    Diód zenera 3v3 nie mam na stanie

    A jak pójdziesz do sklepu to będziesz kupował diódy czy diody? :)
    Cytat:

    Może problem tkwi w przewodach do czytnika.Obecnie mam podłaczony czytnik do pcb tasiemką komputerową 4żyłową + osobną zasilanie długość ok.20cm.

    Daj na krótkich przewodach (nie na taśmie ), długie przewody blisko połączone w taśmie dają jakieś tam pojemności.
  • #25 9557294
    rafcio363
    Poziom 30  
    Wymiana przewodów :scatter: na grubsze i połowe krótsze pomogła :rofl:
    Docelowo i tak muszę mieć dłuższe więc dam znać o efektach i nie zamykam tematu.
  • #26 9582563
    rafcio363
    Poziom 30  
    Kluczowa jest długość przewodów,bynajmniej w moim zestawieniu max 5-10cm. Czym mniej tym lepiej i działa na większej ilości kart (dodam że stabilizator 3v3 mam przy samym czytniku).
REKLAMA