Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek dla www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

GPS zapisujący pozycje na karcie SD.

05 Kwi 2011 16:43 5868 30
  • Poziom 9  
    Witam, mam wykonać projekt na zaliczenie i pomyślałem, że będzie to takie urządzonko które:
    1. GPS pobiera dane o pozycji, prędkość, satelitach etc.
    2. (jeśli mi się uda) wyświetli to na ekraniku LCD
    3. zapisze to wszystko na karcie SD (albo M2)
    4. Znowu zaczyna od 1. i tak aż do wyłączenia.
    Takie są założenia. Z mikrokontrolerami miałem do czynienia przy lf'ach i robieniu cube z diod led, programuję w c/c++. Proszę o jakieś linki, materiały albo sugestie bo z modułem GPS (jak one się komunikują z mikrokontrolerem?) nie miałem styczności, to samo jak zapisać jakieś dane na karcie pamięci? Czy to wszystko da się postawić na mikrokontrolerze atmega? Macie jakieś podpowiedzi jakiego konkretnie modelu GPS i LCD użyć? Będę wdzięczny za jakąkolwiek podpowiedź.
  • Poziom 9  
    Nawet lepiej http://sklep.avt.pl/photo/_pdf/AVT5244.pdf ... Ale nie o to chodzi, żeby to skopiować 1:1. Jak patrzę na płytkę to... dużo tych oporników i kondensatorów... No i mikrokontroler całkowicie różny, coś mi się wydaje że atmega to będzie za mało.
  • Poziom 35  
    1. Da się to postawić na mikrokontrolerze AVR, na przykład atmega.
    2. GPS wypluwa dane po rs232 napięcia 5v lub 3.3v, w zależności od modelu
    3. GPS wypluwa dane w szeroko opisanym i dostępnym formacie NMEA
    4. Obsługa karty SD w większości przypadków ogranicza się do SPI
    4a. gotowe rozwiązania są dostępne w internecie

    Polecany moduł gps: FGPMMOSL3 dostepny w maritexie

    Żeby zbudować taki układ potrzebujesz max 8MIPS w osmiobitowym procesorze, peryferium SPI i UART. Aby uniknąć konwersji napięć 3v3<->5v, lepiej zasilić procesor z napięcia 3v3 - ale wymaga to dobrania odpowiedniego procesora.
  • Poziom 9  
    Poczytałem o tym NMEA i jeśli jakoś wciągnę to do Atmegi to z formatowaniem nie będzie problemu (tak myślę:P). Pierwsze pytanie: w tym FGPMMOSL3 są dwa wyjścia. Podłącze jedno pod Atmege32 (bo taką wybrałem, udźwignie?) i... jak ja mam odbierać ten strumień danych, łańcuch znaków czy jak to zwać. Co ile gps będzie wysyłał to? Przeglądałem forum ale nikt za bardzo nie kwapił się żeby użyczyć kawałek kodu w c. Nie ukrywam, że fajnie by było gdyby ktoś podesłał szkic jak ja mam odbierać w atmedze te dane z gpsu.
    Kolejna sprawa: konwersja napięć cokolwiek to znaczy... przy budowaniu cube'a po prostu dawałem oporniki jeśli gdzieś trzeba było i tyle. SPI i UART - czytałem mało co rozumiem.
    Może najpierw spróbuje połączyć gps z atmegą i lcd a sd zostawię na koniec. Tu pytanie: jaki polecacie lcd najlepiej już z jakimś sterownikiem, biblioteką do obsługi.
    Pytanie czysto techniczne: przeczytałem dokumentacje tego polecanego gpsu i... jaki wy macie patent na zlutowanie takich maciupeńkich styków? Bo chyba transformatorówką to igłą bym to musiał robić...
    Jednak diody led i lf'y to była prościzna :D
    //edit
    Czy ten będzie się nadawał?
  • Pomocny post
    Poziom 18  
    Jeżelui znasz C to może ten link się przyda:
    Link

    Pozdrawiam
    Piotrek
  • Poziom 9  
    Łap soga zabieram się za czytanie.
  • Poziom 9  
    Ok czas mija w końcu trzeba coś ruszyć z tym projekcikiem. Jak zwykle masa pytań:
    1. Czy ktoś używał tych bibliotek do obsługi kart SD?
    1a. Czy zna ktoś jakieś inne? Łatwiejsze w obsłudze?
    1b. Lepsze/gorsze od Fatfs?
    2. Co to jest SPI i UART? Czytałem o tym ale nadal nie rozumiem na tip top. Jak to się ma z mikrokontrolerem?
    3. GPS wyrzuca dane po rs. Co to znaczy? Rs to złącze. Będę musiał takie złącze wsadzić na płytkę? Jak to się programowo obsługuje?
    4. Jakiś przykład jak odczytać dane z GPS. Co ile on wysyła dane? Jak to obsłużyć?
    Dzięki za odpowiedzi, mam nadzieje, że jakoś dam radę to zrobić :p

    //edit
    5. Czy można podłączyć kartę M2 zamiast SD?
  • Poziom 20  
    1. Jesli masz na mysli biblioteki typu FatfS to, tak, uzywalem tego i dziala bardzo dobrze.
    1a. FatFS tylko testowalem innych nie znam. Trzeba jedynie 2-3 fcje przerobic zaleznie od sprzetu, a jest juz duzo gotowych przykladow
    1b. patrz wyzej
    2. spi - jest to iface komunikacji szeregowej, gdzie masz linie zegara, dwie linie do komunikacji w dwie strony oraz linie wybierajaca uklad do komunikacji (chip select), uart w najprostszej wersji ma linie tx i rx. Poczytaj na wikipedii tam jest chyba wszystko prosto i przejrzyscie opisane. uC ma wbudowane te peryferia najczesciej i odpowiednio ustawiajac rejestry mozesz sie do nich dobrac.
    3. wyrzuca dane w postaci znakow ASCII po RS inaczej po szeregowym UARCIE.

    4. Przykladow nie mam, sa w internecie znajdziesz bez problemu.
    5. M2 to chyba mem stick, wiec moze byc inny interfejs (nie znam go). SD jest najpopularniejsza i masz do tego gotowe przyklady.
  • Poziom 9  
    Dzięki. Dawno mnie nie było ale projekt nadal aktualny. I kolejne pytania bo buduje schemat a sporo nie jasne jest dla mnie... Dokumentacja wybranego GPS.
    Pytania:
    1. N_Reset, Pin10
    Low active, it causes the module to reset. If not used, keep floating. - nie rozumiem tego w ogóle... Na przykładowym podłączeniu (strona 25) podpięty ten pin jest do napięcia poprzez opornik 4.7k i podłączony do mikrokontrolera.
    2. 1PPS, Pin28
    This pin provides one pulse-per-second output from the module and synchronizes to GPS time.
    Keep floating if not used. Default duration is 100ms. - znowu to floating... jeśli coś zrobię na tym pinie to będzie częstotliwość 1Hz, bo normalnie jest 10Hz? Co to jest to floating?
    3. VBACKUP, Pin11
    This connects to the backup power of the GPS module. Power source (such as battery) connected to this pin will help the GPS chipset in keeping its internal RTC running when the main power source is removed. The voltage should be kept between 2.0V~4.3V, Typical 3.0V.
    IF VBACKUP power was not reserved, the GPS module will perform a lengthy cold start every time it is powered-on because previous satellite information is not retained and needs to be re-transmitted.
    If not used, keep open or ground. - pytanie trochę z innej beczki. Czy jeśli VCC normalnie jest podłączone to GPS pobiera prąd z Vbackup? Czy tylko jeśli na VCC braknie mu to automatycznie przeskakuje na Vbackup i przestaje nadawać tylko utrzymuje się w śpiączce, potem jeśli na VCC pojawi mu się prąd to wstaje i zaczyna nadawać? Dobrze rozumiem?
    4. Czy do podłączenia karty microSD trzeba wstawiać kondensatory do filtrowania napięcia?
    5. Mam zamiar użyć zewnętrznego kwarcu (14.7456 MHz) i czy w złączu ISP mam odłączyć pin SCK od mikrokontrolera?

    Wiem że za dużo tych pytań :P ale GPS ma takie małe te styki że chce żeby było już wszystko na tip top najlepiej jak się da :P bo przelutowywać mi się to nie uśmiecha.
  • Pomocny post
    Poziom 20  
    1. Tym pinem resetujesz procka, mimo ze producent pisze ze jesli go nie uzywasz mozesz zostawci wiszacy. Dobrym nawykiem bedzie zrobienie podciagu od 1 do 10 k

    2. floating - czyli zostawic wiszaca linie w powietrzu.

    3. GPS nie nadaje, jedynie odbiera. Vbackup umozliwia hot/warm start, a nie cold co kazde wlaczenie zasilania

    4. powinny byc w okolicy pinu zasilania karty pamieci kondensatory, dobry nawyk, jeden 100 n w 0805 nie zajmuje duzo miejsca.

    5. Nie rozumiem, nie znam problemu.

    Z hotem przelutujesz ten modulik, sam go nawet 3 razy wylutowaywalem z plytki. Dziala nadal, mimo, ze producent pisze by nie grzac go hot'em, bo moze antena sie odlutowac.
  • Poziom 9  
    Dzięki za poświęcony czas - sog dla Ciebie. Pin 28 - 1PPS - na GPS zrozumiałem to tak, że jeśli nieużywany to ma być luźny i częstotliwość GPS wynosi 10Hz, jeśli ustawie stan wysoki na tym pinie to częstotliwość wyniesie 1Hz (proszę niech ktoś mnie sprawdzi...). A drugie pytanie: ATmega działa na 5v a karta microSD na 3.3v, jeśli puszcze sygnał z ATmegi (czyli jak mi się wydaje stany wysoki = 5v) do karty to czasami jej to nie zaszkodzi? Takie 5v na pinie? Zbić to opornikiem czy co? Czy SPI już sobie z tym radzi i nie obchodzi mnie to że napięcia różne? To samo pytanie do GPS i pinu 1PPS - jeśli z mikrokontrolera będe tym sterował i ustawie stan wysoki (5v) to GPS nie padnie? Znowu oporniki? Załączam pierwszy schemat gdyby ktoś mógł sprawdzić krytycznym okiem, szczególnie te kondensatory przy filtrowaniu napięcia no i ogólnie chce żeby schemat był zrobiony bardzo dobrze, bo chce mieć pewność, że jak coś mi działać nie będzie to skopałem program a nie wina połączenia jakiegoś które przeoczyłem :P Wiec nie "ujdzie", nie "może być" tylko kawa na lawę co zmienić i dlaczego tak będzie lepiej. Pomijam ISP tam chyba filozofii nie ma - złącza do złączy i już. W GPS nadal wiszą mi połączenia reset i ten nieszczęsny 1PPS (1PPS będzie obsługiwany przez mikrokontroler w zależności od położenia przełącznika, ale to później, może reset też będzie pod mikroswitchem). Aha i jeszcze jedno: cały port A ma drugą funkcję: ADC. Czy jeśli chce korzystać z tych portów tak normalnie I\O to musze bity konfiguracyjne zmieniać? Jakiś porządny program do zmiany tych bitów? Mam książkę Mirosława Kardasia i jest tam mkAvr Calculator tylko, że demo... program fajny no ale wersja free mi tej megi32 nie obsłuży.
    GPS zapisujący pozycje na karcie SD.
  • Pomocny post
    Poziom 32  
    Zeander napisał:
    Pin 28 - 1PPS - na GPS zrozumiałem to tak, że jeśli nieużywany to ma być luźny i częstotliwość GPS wynosi 10Hz, jeśli ustawie stan wysoki na tym pinie to częstotliwość wyniesie 1Hz (proszę niech ktoś mnie sprawdzi...).


    Nie bardzo widzę skąd pochodzi ta informacja o 10Hz. Ten pin to wyjście. Jak sama nazwa wskazuje (pulse per second) jest tam 1 impuls co sekundę, bardzo dokładnie co sekundę.


    Zeander napisał:

    A drugie pytanie: ATmega działa na 5v a karta microSD na 3.3v, jeśli puszcze sygnał z ATmegi (czyli jak mi się wydaje stany wysoki = 5v) do karty to czasami jej to nie zaszkodzi? Takie 5v na pinie? Zbić to opornikiem czy co? Czy SPI już sobie z tym radzi i nie obchodzi mnie to że napięcia różne?


    Można rezystorami, ale najprościej ujednolicić napięcie zasilające na 3,3V. Jeśli jednak nie możesz, to na linie wyjściowe z procka dzielniki rezystorowe. Są też specjalizowane układy scalone do konwersji napięć, ale w takim układzie to chyba przesada.
    Sygnały wejściowe mogą wchodzić bezpośrednio - 3,3V zostanie już potraktowane jako H.


    Zeander napisał:

    Aha i jeszcze jedno: cały port A ma drugą funkcję: ADC. Czy jeśli chce korzystać z tych portów tak normalnie I\O to musze bity konfiguracyjne zmieniać?


    ADC to wejścia, więc nie przeszkadzają. Jak nie ruszych rejestrów przetworników, będą nieaktywne.
  • Pomocny post
    Moderator Mikrokontrolery Projektowanie
    ... i podłącz reset uC przez rezystor do Vcc, by problemów nie zaliczać:
    http://mikrokontrolery.blogspot.com/2011/04/minimalne-podlaczanie-pinow.html

    N_RESET - skoro pisze że pozostawić niepodłączony, to możesz tak zrobić. Jednak radziłbym podłączyć tak jak na stronie 25, czyli przez rezystor do Vcc. Podłączenie do mikrokontrolera jest zapewne po to aby mikrokontroler miał pełną władzę nad GPS i mógł go zresetować.

    Kondensatory filtrujące dawaj jak najbliżej pinów, bo ze schematów wynika raczej coś innego.

    A na schematach nie prowadź ścieżek przez symbol mikrokontrolera. Te po skosie także "nieeleganckie". Na przyszłość sugeruję taki sposób:
    http://mikrokontrolery.blogspot.com/2011/04/jak-projektowac-czytelne-schematy.html


    Zeander napisał:
    Aha i jeszcze jedno: cały port A ma drugą funkcję: ADC. Czy jeśli chce korzystać z tych portów tak normalnie I\O to musze bity konfiguracyjne zmieniać?

    Nie, to robi program.

    Zeander napisał:
    Jakiś porządny program do zmiany tych bitów? Mam książkę Mirosława Kardasia i jest tam mkAvr Calculator tylko, że demo... program fajny no ale wersja free mi tej megi32 nie obsłuży.

    W sieci znajdziesz mnóstwo kalkulatorów fusbitów do tego procesora.
    W jakim środowisku programujesz?
  • Poziom 9  
    Dzięki za pomoc. Środowisko Eclipse, chociaż AVR Studio 4 też jest mi znane. Co do kalkulatora: http://www.engbedded.com/fusecalc/ wybrałem ATmega32 (mam ATmega32 16PU ale na liście brak) i ostatnia opcja tj. CKSEL=1111 SUT=11 (wyczytane z książki o której pisałem wyżej, że już od 11MHz można tak ustawiać) czyli LOW 0xFF HIGH 0x99. Teraz czym to przestawić w uC.
    Schemat poprawiłem (tj. te rezystory etc.). Ja wiem, że kondensatory od filtra na schemacie są daleko ale tylko mi chodzi czy to dobrze podpięte jest :P wartości oporników które dałem ogólnie czy połączenia dobre, czy czegoś nie spale :D Na płytce kwarc i filtry będą najbliżej jak się da.
    Następne pytanie: nóżka AREF. W jednym schemacie z loggerem gps jest podpięta pod vcc, w innym luźno, w linakch które mi podałeś pod gnd. Co z nią zrobić?
    MOSI z kartą połączyłem przez rezystor 200 omów, wystarczy? Za dużo, za mało? Niestety z napięciem atmegi zejść nie mogę bo w nocie katalogowej wyczytałem, że jeśli >8MHz to napięcie od 4.5v do 5.5v.
    Ten pin z GPS - 1PPS - to on wysyła wiadomości o położeniu 1 raz na sekundę równocześnie gdy z TXDA płyną znaki do uC?
    GPS zapisujący pozycje na karcie SD.
  • VIP Zasłużony dla elektroda
    Zeander napisał:
    Teraz czym to przestawić w uC.
    avrdude z opcjami pod twój ulubiony programator... ;)
    Code:
    $ avrdude -?
    
    Usage: avrdude [options]
    Options:
      -p <partno>                Required. Specify AVR device.
      -b <baudrate>              Override RS-232 baud rate.
      -B <bitclock>              Specify JTAG/STK500v2 bit clock period (us).
      -C <config-file>           Specify location of configuration file.
      -c <programmer>            Specify programmer type.
      -D                         Disable auto erase for flash memory
      -i <delay>                 ISP Clock Delay [in microseconds]
      -P <port>                  Specify connection port.
      -F                         Override invalid signature check.
      -e                         Perform a chip erase.
      -O                         Perform RC oscillator calibration (see AVR053).
      -U <memtype>:r|w|v:<filename>[:format]
                                 Memory operation specification.
                                 Multiple -U options are allowed, each request
                                 is performed in the order specified.
      -n                         Do not write anything to the device.
      -V                         Do not verify.
      -u                         Disable safemode, default when running from a script.
      -s                         Silent safemode operation, will not ask you if
                                 fuses should be changed back.
      -t                         Enter terminal mode.
      -E <exitspec>[,<exitspec>] List programmer exit specifications.
      -x <extended_param>        Pass <extended_param> to programmer.
      -y                         Count # erase cycles in EEPROM.
      -Y <number>                Initialize erase cycle # in EEPROM.
      -v                         Verbose output. -v -v for more.
      -q                         Quell progress output. -q -q for less.
      -?                         Display this usage.

    avrdude version 5.10, URL: <http://savannah.nongnu.org/projects/avrdude/>
  • Poziom 9  
    -U lfuse:w:0xff:m -U hfuse:w:0x99:m
    Tak? Zobaczyłem na tej stronie z linku który dałem wyżej. A schemat jak? Co do poprawki?
  • VIP Zasłużony dla elektroda
    Z fusebitami opcje OK.
    SCLK i CS też przez rezystor (sprawdź najpierw na 1K i dopiero jak nie zadziała, to zmniejszaj), a najlepiej to jeszcze po diodce zenera 3V3 do masy od strony karty i na SCK, i MOSI, i CS.
  • Poziom 9  
    GPS zapisujący pozycje na karcie SD.
    A teraz? Najbardziej zależy mi na wartościach tych oporników... Wcześniej założyłem, że z ATmegi wyjdzie 10mA prądu (stąd wcześniej 200 Ω opornik) teraz trochę na czuja dałem te 500... Nóżkę AREF przed kondensator do GND. Teraz jest ok? Bo lutowanie moduliku GPS to katorga... wolałbym już płytkę zrobić i tam programować niż na stykowej.
  • Pomocny post
    Poziom 32  
    Założenia dotyczące prądu są niewłaściwe. Nie wiesz ile pójdzie prądu, zwykle będzie to niemierzalnie mało. Na płytce protypowej mam 1k8 w szereg i 3k3 do masy. To chyba najdokładniejszy dzielnik z 5V na 3,3V ze stadardowych wartości rezystorów. Oczywiście można też do masy dać diody zenera, nie wiem tylko, czy są dostatecznie szybkie.
  • Poziom 9  
    Ok dzięki. Wyliczyłem, że wyjdzie mi 3.23v wystarczy? Nie za mało? Daje poprawiony schemat (wiem, że czytelny to on nie jest... ) teraz jest ok? Na oporniki obok led nie zwracajcie uwagi. Proszę o sprawdzenie tych dzielników.
    //edit:
    Przypomniałem sobie, że jeśli zmienie z uC bity żeby kręcił się z kwarcu to już go z płytki nie wyjmę, żeby zaprogramować... Dołączyłem ISP, tak na szybko więc linie są w cały świat, chyba niczego nie pogubiłem, tu się oporników ani niczego nie daje chyba... tylko MISO do MISO, GND do GND etc. No i pytanie ważne: czy jeśli już zmienię bity konfiguracyjne i uC kręci się z kwarcu 14MHz to linia SCK w ISP normalnie ma zostać? Ona odczytuje wartość taktowania czy co robi?
    GPS zapisujący pozycje na karcie SD.
  • Moderator Mikrokontrolery Projektowanie
    Kolega radził tak:

    krru napisał:
    Na płytce protypowej mam 1k8 w szereg i 3k3 do masy.

    A ty masz odwrotnie na schemacie.

    Zeander napisał:
    ...wiem, że czytelny to on nie jest...

    Bo po co na siłę prowadzisz połączenia do góry do GND dodając jeszcze połączenie dwóch GND?
    Skieruj rezystory (R11,R13 i R14) w dół i daj do każdego GND na dole. Od razu będzie przejrzyście :)
  • Poziom 9  
    Tak wiem :P bo jak liczyłem ze wzoru z wiki to mi nie wychodziło nic koło 3.3v http://pl.wikipedia.org/wiki/Dzielnik_napi%C4%99cia As z elektroniki nie jestem, więc założyłem, że minus jest tam na dole w tym rysuneczku przy Uwe a plus na górze. Czyli zamieniać te oporniki miejscami?
  • Poziom 9  
    Zwracam honor kol krru. Faktycznie było dobrze. Przydatna stronka. Kolejny schemat teraz już chyba jest ok.
    GPS zapisujący pozycje na karcie SD.
  • Poziom 9  
    Ok, płytka zrobiona, narazie mruganie diody led działa. Zmieniłem podłączenie tych 3 ledów z portu A na port C, no i problem. Pod PC0 jedna dioda, PC1 - dioda, PC2 dioda, PC 0 i 1 działają PC2 - nie. Ustawiłem cały portc na wyjście, stan wysoki, PC0 dioda świeci, PC1 dioda świeci, PC0 dioda nie świeci... Wziąłem inną diodę i stykam nóżki bezpośrednio do PC0 i GND na mikrokontrolerze - działa, PC1 i GND - działa, PC2 i GND - nie działa, PC3 i GND - nie działa, cała reszta portu C do 7 nie działają. Odczytałem fuse'y z avrdude: High: 99 Low: E1 czy to są fabryczne ustawienia? Jeszcze nie zmieniałem nic żeby taktował kwarcem.

    //edit czy to nie są przypadkiem nóżki od JTaga? Ustawić w fuseach żeby jtag był nieaktywny?

    //edit2 tak to było od JTaga :P zmieniłem fuse i git
  • Pomocny post
    VIP Zasłużony dla elektroda
    JTAG-a możesz również wyłączać w programie :
    Kod: C
    Zaloguj się, aby zobaczyć kod
  • Poziom 9  
    Heh a jednak FatFS dał mi radę :p metodą zastawiania pułapek na diode led znalazłem winowajcę w disk_initialize(0) potem w linijce:
    for (n = 10; n; n--) rcvr_spi();/* 80 dummy clocks */
    w funkcji rcvr_spi(). W pliku makra.h dodałem:
    #define SCK PB7
    #define MOSI PB5
    #define CS PB4
    a w mainie:
    DDRB |= (1<<CS)|(1<<MOSI)|(1<<SCK);
    PORTB |= (1<<CS);
    SPCR |= (1<<SPE)|(1<<MSTR);
    i nadal stoję w miejscu. Postępowałem według przepisu na stronie: http://www.basementcode.com/avr/sd_fatfs/fatfs.php ale opuściłem sekcję DiskIO timing ni w ząb tego nie rozumiem, oprócz tego że w OCR0A mam wpisać 144 jak coś... Wie ktoś gdzie leży problem?

    //edit
    Dzięki LordBlick ale ten JTag pchnął mnie do tak szalonego czynu jak zmiana fuse'ów :P uC na szczęście nadal chodzi i to już na kwarcu
  • Poziom 9  
    Usunąłem poprzedni post. Zrobiłem tak:
    1. Najnowszy sample ze strony chana
    2. Usuwam ata.c, cfc.c cfmm.c
    3. IoInit() usuwam porty E, F, G
    4. Znowu porty E w pliku mmcbb.c (Bitbanging MMCv3/SDv1/SDv2 (in SPI mode) control module), usuwam cały plik, nie ma nigdzie odwołań do niego.
    5. Edycja funkcji get_fattime(), dodaje te elementy struktury, wyrzucam rtc.c z projektu.
    6. Poprawienie UBRRH,UBRRL,UCSRB według książki, usunięcie zer z nazw
    7. Poprawienie nazw wektorów na nowsze.
    8. Wywołania rtc_init, rtc_gettime, rtc_settime – w komentarzach.
    9. Kopiuje nadawanie wartości strukturze rtc do funkcji int main() (to samo co w get_fettime())
    10. Zmiana w pliku ffconf.h i usunięcie pliku strony kodowej (bo już nie była potrzebna)
    11. Obcięcie bufora do 256 -> BYTE Buff[256]
    12. Plik mmc.c CS_LOW(),CS_HIGH(),FCLK_SLOW(),FCLK_FAST()napisane czytelniej. SOCKWP zawsze 0, SOCKINS zawsze 1.
    13. Main.c zdefiniowanie Mosi, Cs, Sck i załączenie portów (nie wiem po co 2 razy CS ale zostawiłem jak jest w książce)
    14. Mmc.c funkcja disk_timeproc() z if else zostawiam: s &= ~STA_PROTECT; /* Write enabled */ i s &= ~STA_NODISK; /* Card inserted */
    15. Main.c w IoInit() ustawienie TCCR2, OCR2, TIMSK
    16. Main.c usuwam całą pętle for bo służy do obsługi komunikacji z konsolą, wyskakują warrningi o nieużywanych zmiennych, zostawiam to i wpisuje w int main() funkcje do inicjalizacji i obsługi plików
    Oczywiście nadal nie działa....... W disk_initialize(0); na siłę zwracam 0; Robiłem jota w jotę z książki mirka tylko najnowszego fatfs'a miałem, podobno schemat ok to gdzie leży problem bo ja chyba ślepy jestem...

    main.c
    Kod: c
    Zaloguj się, aby zobaczyć kod


    mmc.c
    Kod: c
    Zaloguj się, aby zobaczyć kod