Kolejnym krokiem jest nagranie pliku na kartę pamięci w tym celu należy włożyć kartę do adaptera oraz podłączyć go do portu usb. Jako że wspomniana wcześniej atmega 16 nie radzi sobie za dobrze z obsługa systemu plików. Dane na kartę nagramy w postaci raw - czyli kopiując dane bajt po bajcie ignorując wszystko co było na karcie zapisane. W tym celu skorzystamy z pakietu dd. Najpierw należy określić nazwę wolumenu, można tego dokonać analizując logi systemowe w tym celu w terminalu uruchamiamy sudo taił —f /var/log/syslog |grep dev
Po podłączeniu pamięci masowej ukaże się nam wpis podobny do tego poniżej
W tym przypadku volumenem urządzeniem jest /dev/sdb nr znajdujący się za volumenem to nr partycji - pomijamy go. a volumen wpisujemy do protokołu
gdy określiliśmy już wolumen i mamy przygotowany plik należy go nagrać, tym razem skorzystamy z polecenia dd. UWAGA kolejne polecenie musi być przepisane bardzo dokładnie gdyż w przypadku podania niewłaściwego wolumenu może spowodować uszkodzenie systemu operacyjnego dlatego w przypadku jakichkolwiek wątpliwości dobrze jest zawołać prowadzącego. Prawidłowe wywołanie przedstawione jest poniżej:
Po nagraniu możemy wyłączyć maszynę livecd, nie będzie potrzebna do dalszej części ćwiczenia.
Kod programu napisany w języku C należy pobrać z http://diablo.ict.pwr.wroc.pl/~j drewnia/wav_player/kod.zip
i rozpakować używając hasła mikroklocki. Znajdują się tam wszystkie niezbędne pliki źródłowe ale bez bibliotek dla AVR. W przypadku systemu Linux, wystarczy uruchomić polecenie make, po wcześniejszej instalacji pakietu avr-gcc. W pliku makefile możemy także dostrzec zależności w kodzie i na tej podstawie skompilować wsad mikrokontrolera w innym środowisku.
Jedyny plik, który potrzebujemy edytować przed kompilacją to addresses.h gdzie zapisane są adresy utworów na karcie SD. Dokładnie interesuje nas linijka
uint32_t starting_address[] = {0x14146, 0xld594 , 0x25dbd, 0x2dea4>;
, w której zapisane są szesnastkowo 3 pierwsze początki utworów i adres końca ostatniego. Na tej podstawie kod programu oblicza miejsca odczytu danych i długość trwania utworu. W to miejsce należy wpisać wartości uzyskane z podpunktu 3.2 . Po tej operacji można wszystko skompilować. Uwaga. Program należy wgrywać po uprzednim wyciągnięciu karty microSD.
Mikrokontroler należy zasilić napięciem 5V. Mimo, że karta SD działa na poziomie napięcia 3,3V to jest między nimi dzielnik napięcia i wszystko może działać sprawnie. Przy pinach zasilania należy pozostawić miejsce dla podłączenia zewnętrznego kwarcu. Programator należy podłączyć w standardowy sposób zostawiając jednak miejsce przy mikrokontrolerze gdyż w standardzie SD, karta może także komunikować się za pomocą protokołu SPI, z którego w tym przypadku korzystamy. Dodatkowo będzie potrzebne wyjście PWM mikrokontrolera na pinie PD5 (OC1A) oraz pin PD2 (INTO) dla przycisku.
Projekt wymaga by rdzeń byl taktowany z częstotliowścią 16MHz (w związku z częstotliowością zapisu i odtwarzania muzyki). Należy wpiąć do wyprowadzeń mikrokontrolera odpowiednio przygotowaną wcześniej mini-płytkę z przylutowanym rezonatorem kwarcowym. Należy wpiąć ją w piny GND, XTAL1, XTAL2, w taki sposób by nachodziła swoją powierzchnią na mikrokontroler.