Witam, mam w planie zmontować prosty rejestrator temperatury, udało mi się już ogarnąć czujnik temp. i wyświetlacz, no ale została jeszcze karta SD. I tu pojawią się problem. Karta podłączyłem w najprostszy sposób (według tego rysunku ... jak i również skorzystałem z dostępnych tam do pobrania bibliotek petitfs (...). Niestety program w pewnym momencie się zawiesza i nic się nie dzieje (co dziwne raz na kilkanaście uruchomień program wykonał się poprawnie i wywali błąd - FR_NOT_READY - akurat wtedy karta była odłączona). Tak wygląda mój plik main :
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
Po kilku testach i edycjach kodu doszedłem do tego że problem jest w tym miejscu (funkcja DSTATUS disk_initialize (void) w pliku mmc.c):
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
Pętla wywoła prawidłowo funkcje rcv_spi(); ze 2 albo 3 razy a następnie w ten funkcji dochodzi do zapętlenia się programu: (w znacznikach syntax obcina kawałek kodu)
Kod:
SPDR = 0xff;
while(!(SPSR & (1<<SPIF))) ;
data = SPDR;
return data;
}
Gdzie może być błąd ? Mikrokontroler to atmega88PA.