User Port 2SD Interfejs UP2SD, czyli jak podłączyć kartę SD do Commodore C64. Wersja 1 dokumentu. Ostrzeżenie!!! Jeśli nie czujesz się na siłach, nie podejmuj się konstrukcji tego interfejsu. Nieumiejętne posługiwanie się lutownicą może doprowadzić do uszkodzenia Twojego ciała, lub co gorsza komputera C64. Jak przenosić dane pomiędzy PC a C64 tutaj -> PORADNIK 1. Wstęp
Około 2006 roku znalazłem stronę, na której Marc Schwarzburg zaprezentował schemat, jak podłączyć kartę MMC/SD do złącza userportu Commodore C64. Niestety obecnie strona nie jest już dostępna, a sam schemat można znaleźć tylko tu: CSDB. Zmontowałem ten układ i uruchomiłem. Udało się nawet napisać procedury zapisujące i odczytujące dane z karty (na podstawie załączonych przykładów do projektu C64 Userport MMC Interface). Projekt podłączenia karty SD do userportu zarzuciłem z tego powodu, że procedury odczytu/zapisu zajmują miejsce w ram komputera i w oryginale były zbyt powolne.
Remedium na te problemy to albo rozszerzenie +60k, albo też kupno GeoAction'a, gdzie procedury obsługi karty SD można zamieścić w pamięci SRAM podtrzymywanej bateryjnie.
Znalazłem także w ofercie AVT moduł AVT1649, który tak się nieszczęśliwie ;-) składa, że zgadzał się z koncepcją mojej modyfikacji interfejsu wykonanego przez Marca Schwarzburga i nie wymaga posiadania profesjonalnego stanowiska elektronika.
Zalety mojej wersji interfejsu to: jego łatwość wykonania, dostępność modułu, oraz szybkość komunikacji. 2. Interfejs.
Do komunikacji z kartami SD w trybie SPI potrzebne są 4 linie: /CS, CLK, Do (MSIO), DI.
Oczywiście musimy dokonać konwersji napięć z 5V na 3v3 akceptowane przez kartę SD. Można to zrobić na kilka sposobów. Interfejs można mieć inwestując mniej niż 10 zł, np. wykonać go tylko na rezystorach (przykład). Konwersję zasilania z 5V dostępnych na złączu user portu można także wykonać wg schematu wspomnianego już Marca Schwarzburga. Najtrudniej jest z złączem karty SD. Trudno dostać takie, które nie rozleci się w rękach podczas lutowania. Ja się zdecydowałem na moduł AVT1649, ze względu na pełnowymiarowe złącze kart SD, oraz zmontowany i uruchomiony układ. Na znanym, polskim portalu aukcyjnym można kupic moduł ADPmicroSD firmy Propox, albo KAmodMMC firmy Kamami. Co prawda nie testowałem ich, ale wg schematów publikowanych przez producentów nadają się do podłączenia do user portu. Jeżeli będzie zainteresowanie tematem, to postaram się zdobyć i przetestować te moduły. Poniżej schemat połączenia pomiędzy user portem C64 a modułem AVT1694.
Lutownica, może być transformatorowa (takowej użyłem). Cyna i kalafonia. Nożyk. Kilka różnokolorowych przewodów. Moduł AVT1649 lub inny z wyprowadzeniami karty SD i konwersją napięć z 5V na 3V3. Karta SD o pojemności 512MB, 1GB, 2GB.(Takie karty testowałem) Karty 4GB i 8GB aktualnie nie działają z napisanymi sterownikami. Na początek przygotowujemy przewody. U mnie max. 10 cm. Zdejmujemy z ich końców (ok. 5 mm) delikatnie izolację i cynujemy. Następnie dajemy trochę cyny z kalafonią na złącza user portu. Następnie lutujemy przewody najpierw do modułu AVT1649 a następnie złacza C64 wg schematu połączeń z rysunku. Link do sklepów, gdzie można kupić zmontowany układ AVT 1649: Cyfronika Sklep AVT Alternatywne moduły nieopisane i nie testowane z C64. KAmodMMC firmy Kamami ADPmicroSD firmy Propox 3. Oprogramowanie. Aktualnie napisałem (na podstawie m.in. analizy sterownika wspomnianego już C64 Userport MMC Interface) obsługę interfejsu, czyli odbiór/zapis bajtów, odbiór/zapis bloków po 512 bajtów z karty SD. Testy wykazują, ze transfer podczas zapisu i odczytu pliku z karty SD porównywalny jest z prędkością zapisu/odczytu z/do stacji 1541 w turbo. Jednak fastloader z ActionReplay, lub każdy inny używający transmisji dwubitowej, jest szybszy. Nie są to jednak tak duże różnice, aby eliminowały funkcjonalność interfejsu. Listing programu wczytującego z karty SD dane do pamięci Commodore C64.Myślę, że analiza listingu pozwoli na zrozumienie działania interfejsu i komunikacji z kartą SD w trybie SPI.
Kilka słów wyjaśnienia. Procedury są zrozumiale nazwane, także nie powinno być problemu z analizą programu. Jeżeli chcemy kontrolować wielkośc pliku ładowanego do pamięci C64 zmieniamy wartość LDA #112 na inną, gdzie 112 jest to liczba bloków 512 bajtowych. Program nie posiada obsługi błędów. Procedury SPI i SPIFR nie są tożsame. O ile procedura SPI jednocześnie odczytuje i wysyła bajt, to procedura SPIFR szybko odczytuje bajt, natomiast na wyjściu ustawia na czas odczytu stan wysoki. Zawartość tego dokumentu może ulec zmianie w miarę postępu prac nad interfejsem UP2SD oraz oprogramowaniem. Tutaj -> FORUM można podyskutować na temat tego dokumentu, interfejsu, oraz możliwości rozwoju projektu. |
|
|
5.02.2013 | Dodanie linka do wątku na forum, gdzie można dyskutować o interfejsie. |
1.02.2013 | Dodałem link do poradnika , jak w praktyce wykorzystać zbudowany interfejs. |
30.01.2013 |
Poprawiłem literówki, nazewnictwo, oraz pomniejsze błędy. Dodałem link do dokumentacji związanej z modułem AVT1694. |
27.1.2013 | Publikacja pierwszej wersji niniejszego dokumentu. |