SIO2SD
From Atariki
Wersja z dnia 11:48, 9 kwi 2007 Pigula shpoon (Dyskusja | wkład) ← Previous diff |
Aktualna wersja Jhusak (Dyskusja | wkład) (→Przydatne linki) |
||
Linia 1: | Linia 1: | ||
==Informacje Ogólne== | ==Informacje Ogólne== | ||
- | SIO2SD to interfejs pozwalający na wczytywanie gier/programów na Atari 8-bit poprzez port SIO z kart SD/MMC. | + | SIO2SD to interfejs autorstwa [[Jakub_Kruszona-Zawadzki|Jakuba Kruszony-Zawadzkiego]], pozwalający na wczytywanie gier/programów na Atari 8-bit poprzez port SIO z kart SD/MMC. |
<center>[[Grafika:Sio2sd.jpg]]</center> | <center>[[Grafika:Sio2sd.jpg]]</center> | ||
+ | |||
==Cechy urządzenia== | ==Cechy urządzenia== | ||
- | * Obsługa kart SD/MMC (formaty FAT12,FAT16 i FAT32) | + | * Obsługa kart SD/MMC (formaty FAT12, FAT16 i FAT32) |
* Obsługa plików w formatach ATR (rw), XFD (ro) i COM/XEX (ro) | * Obsługa plików w formatach ATR (rw), XFD (ro) i COM/XEX (ro) | ||
* Wyświetlacz 16x2 pokazujący aktualnie wybrany katalog i plik ATR/XEX podmapowany pod określony numer stacji dysków. | * Wyświetlacz 16x2 pokazujący aktualnie wybrany katalog i plik ATR/XEX podmapowany pod określony numer stacji dysków. | ||
- | * Obsługa SIO z turbo (możliwość ustawienia prędkości - hsindex od 1 do 16, standardowo 6, co odpowiada prędkości ok. 69kb/s, do wersji 2007.02.18 była stała prędkość 51kb/s - hsindex 10) | + | * Obsługa SIO z turbo (możliwość ustawienia prędkości - [[HS Index]] od 1 do 16, standardowo 6, co odpowiada prędkości ok. 68,2 kbps, do wersji 2007.02.18 była stała prędkość 51 kbps - HS Index 10) |
- | * Wszystkie gęstości z sektorami 128B i 256B (TOMS'owe 512B na razie nie obsługiwane), w tym również dyski 16MB | + | * Wszystkie gęstości z sektorami 128 B i 256 B (TOMS-owe 512 B na razie nieobsługiwane), w tym również dyski 16 MB |
- | * Możliwość obsługi 8 stacji równolegle (do wersji 2007.02.08 tylko 4 stacje: D1-D4) | + | * Możliwość równoległej obsługi 8 stacji (do wersji 2007.02.08 tylko 4 stacje: D1-D4) |
- | * Możliwość konfigurowania z poziomu ATARI (możliwe ładowanie programu konfiguracyjnego bezpośrednio z urządzenia, bez potrzeby nagrywania na kartę SD) | + | * Możliwość konfigurowania z poziomu ATARI (możliwe ładowanie programu konfiguracyjnego bezpośrednio z urządzenia, bez potrzeby nagrywania na kartę SD) |
+ | |||
+ | ==Wydajność== | ||
+ | |||
+ | Prędkość zmierzona programem [[RW-Test]] pod [[SpartaDOS X]]: | ||
+ | |||
+ | * DOS Reading: 1719,8 B/sek. | ||
+ | * DOS Writing: 5137,8 B/sek. | ||
+ | * DOS Average: 3428,8 B/sek. | ||
+ | |||
+ | Użyto RW-Test w wersji 3.0 i karty SD Pretec Highspeed 60x. | ||
+ | |||
+ | ==Lista elementów== | ||
+ | |||
+ | Poniżej przedstawiona jest lista elementów elektronicznych potrzebnych do budowy układu. | ||
+ | |||
+ | Lp Ilość Nazwa Elementu Wartość Oznaczenie elementu | ||
+ | 1 2 Rezystor 10k R1,R3 | ||
+ | 2 1 Potencjometr 2.2k R2 | ||
+ | 3 3 Rezystor 1.8k R4,R5,R6 | ||
+ | 4 3 Rezystor 3.3k R7,R8,R9 | ||
+ | 5 1 Rezystor 27R R10 | ||
+ | 6 3 Rezystor 220R R11,R12,R13 | ||
+ | 7 1 Kondensator tantalowy 10uF C4 | ||
+ | 8 2 Kondensator ceramiczny 22pF C1,C2 | ||
+ | 9 4 Kondensator ceramiczny 100nF C3,C12,C10,C11 | ||
+ | 10 5 Kondensator ceramiczny 22nF C5,C6,C7,C8,C9 | ||
+ | 11 1 Kwarc 7.3728 lub 14MHz Q1 | ||
+ | 12 1 Dioda Schottkiego BAT85 opcjonalnie | ||
+ | 13 1 Procesor ATMEGA32-16PI (lub Atmega 32L-8PU) IC1 | ||
+ | 14 1 Stabilizator 3.3V IC2 | ||
+ | 15 3 Diody LED 3V LED1,LED2,LED3 | ||
+ | 16 5 Mikrostyki - S1,S2,S3,S4,S5 | ||
+ | 17 1 Gniazdo SD - SD | ||
+ | 18 1 Wyświetlacz 2x16 LED - JP3 | ||
+ | |||
+ | ==Porady dotyczące uruchomienia układu== | ||
+ | |||
+ | * Dla kwarca 7.3728 MHz fuse procesora Atmel ustawiamy na (H:0xD1 ; L:0xFF) | ||
+ | * Dla kwarca 14.3118 MHz fuse procesora Atmel ustawiamy na (H:0xC3 ; L:0x3F) | ||
+ | * Jeżeli podczas wyboru plików ATR na wyświetlaczu pojawiają się śmieci - należy wymienić stabilizator napięcia 3.3V (na np. precyzyjny stabilizator napięcia 1.0A w obudowie TO-220) | ||
+ | * Komunikat 'Błąd odczytu karty SD' - gdy jest włożona do slotu - przyczyną jest brak styku przy kondensatorze C12 lub stabilizatorze napięcia 3.3V. PCB jest dwustronne, dlatego zaleca się poprawić lutowanie z obu stron płytki dla tych elementów. | ||
+ | |||
+ | ==Programowanie, obsługa SIO== | ||
+ | |||
+ | Sio2SD jest urządzeniem [[SIO]], z którym możemy się komunikować. | ||
+ | Wykorzystuje tę możliwość dedykowany przez autora Sio2SD.com, a także grupy MadTeam [[Atari Commander]] od wersji 1.7 oraz S2S.com autorstwa Truba<br> | ||
+ | |||
+ | Poniżej oficjalne dane zebrane przez [[Pajero]] zgodne z wersją firmware 2.5.<br>Nowsze wersje (3.0) mają o wiele większą liczbę komend, co opisane jest na <b>nowej</b> stronie www... | ||
+ | |||
+ | ===Wykaz komend=== | ||
+ | |||
+ | * $300 DDEVIC = $73 | ||
+ | * $301 DUNIT = deviceID | ||
+ | * $306 DTIMLO = $7f minimum, optymalnie $90 | ||
+ | * $307 DUNUSE = $00 zawsze | ||
+ | |||
+ | DeviceID znajduje się w pliku konfiguracji Sio2SD.com (musi być to 6.bajt programu!).<br>Wartość: 0-3. To pozwala podłączyć do 4 urządzeń do Atari jednocześnie. | ||
+ | |||
+ | <table border=1 cellpadding=6> | ||
+ | <tr><td>$0302 <b>DCMND</b></td><td>$0303 <b>DSTATS</b></td><td>$0304/5 <b>DBUFA</b></td><td>$0308/9 <b>DBYT</b></td><td>$030A <b>DAUX1</b></td><td>$030B <b>DAUX2</b></td></tr> | ||
+ | |||
+ | <tr><td>$00 get status</td><td>$40</td><td>Odczytana wartość:<br>00 = brak karty<br>01 = OK <br>02 = OK zmieniono kartę na inną<br>03 = OK zmiany w D1-D8</td><td>$01</td><td>$00</td><td>$00</td></tr> | ||
+ | |||
+ | <tr><td>$01 get drive</td><td>$40</td><td>Adres bufora dla:<br>- jednego wpisu<br>- wpisów 1-4</td><td><br>$36<br>$36 * Ilość wpisów</td><td>Numer urządzenia:<br>1 - 8<br> 0 - 7</td><td><br>$00<br>Ilość wpisów: 1-4</td></tr> | ||
+ | |||
+ | <tr><td>$02 mount drive</td><td>$80</td><td>Adres bufora:<br>- z jednym wpisem<br>- z wpisami 1-4</td><td><br>$36<br>$36 * Ilość wpisów</td><td>Numer urządzenia:<br>1 - 8<br> 0 - 7</td><td><br>$00<br>Ilość wpisów: 1-4</td></tr> | ||
+ | |||
+ | <tr><td>$03 unmount drive</td><td>$00</td><td>$00</td><td>$00</td><td>Numer urządzenia:<br>1 - 8<br> 0 - 7</td><td><br>$00<br>Ilość wpisów: 1-8</td></tr> | ||
+ | |||
+ | <tr><td>$04 get name</td><td>$40</td><td>Adres bufora dla:<br>- jednego wpisu<br>- wpisów 1-4</td><td><br>$36<br>$36 * Ilość wpisów</td><td><br>$00<br>Ilość wpisów: 1-4</td><td>00 = kolejny wpis<br>01 = rewind i wczytaj kolejny wpis</td></tr> | ||
+ | |||
+ | <tr><td>$05 select directory</td><td>$80</td><td>Adres bufora z nazwą katalogu </td><td>$36</td><td>$00</td><td>$00</td></tr> | ||
+ | |||
+ | <tr><td>$06 up directory</td><td>$00</td><td>$00</td><td>$00</td><td>$00</td><td>$00</td></tr> | ||
+ | |||
+ | <tr><td>$10 lcd set</td><td>$80</td><td>Adres bufora z linią do wyświetlenia</td><td>$28</td><td>$00 = linia górna<br>$01 = linia dolna</td><td>$00</td></tr> | ||
+ | |||
+ | |||
+ | </table> | ||
+ | |||
+ | Uwagi: | ||
+ | * nie wolno przekraczać założenia: 8 >= Numer urządzenia + Ilość wpisów | ||
+ | * obowiązuje zawsze sprawdzenie czy komenda została poprawnie wykonana. | ||
+ | |||
+ | Czyli mamy możliwość sprawdzenia czy urządzenie jest włączone do gniazda SIO - get status; możemy odczytać co jest podpięte do jednego z ośmiu urządzeń - get drive; zmienić to podpięcie - mount drive; lub je wyłączyć (tzw. --OFF-- ) - unmount drive; odczytać zawartość bieżącego katalogu - get name; wejść do wybranego katalogu - select directory; przejść o katalog wyżej (do nadrzędnego) - up directory; a także wysłać tekst na wyświetlacz. | ||
+ | |||
+ | Niestety w tej wersji urządzenia nie można ustawiać dowolnie ścieżki katalogów (nalezy po nich "skakać" krokowo), odczytywać dowolnego wpisu z katalogu - zawsze przekazywany jest wpis po wpisie. | ||
+ | Największym bólem jest brak możliwości zapisywania do samej karty. Czyli nie można założyć nowego [[ATR]]-a. | ||
+ | |||
+ | ===Wpis katalogu=== | ||
+ | |||
+ | Komunikacja odbywa się blokami po $36 bajtów. Zawartość: | ||
+ | * $00-$26 = nazwa wpisu do katalogu wypełniona do końca spacjami | ||
+ | * $27 = status wpisu: 01 katalog, 02 atr, 03 xfd, 04 inny | ||
+ | * $2c-$2f = file size (0=dla katalogu) | ||
+ | * reszta zawiera dane dot.położenia wpisu na karcie SD. | ||
+ | Jeśli pierwszy bajt równy 0 = koniec katalogu, potem znowu wszystko od początku. | ||
+ | |||
+ | Uwaga: dane $28-$35 mają inną organizacje we wersji wsadu od 3.0 włącznie! | ||
+ | |||
+ | ==Programowanie układu ATMEL== | ||
+ | |||
+ | Aby zmienić firmware wystarczy: wgrać program binarny SIO2SD.BIN o długości 30720 B do głównego katalogu karty SD; odpalić Sio2SD z wciśniętym K4 by wejść do trybu konfiguracji; a tam w menu wcisnąć Shift+K3. Ale przy błędzie takiej operacji lub jeśli rozprogramuje się układ Atmel możemy tylko ratować się programując procesor. | ||
+ | Do tego celu może posłużyć dowolny programator (np. [http://allegro.pl/listing.php/search?string=stk200*&from_showcat=1&category=68366&description=1&from_showcat=1&order=p&change_view=1 STK 200/300] za ~12PLN na Allegro) podłączany do portu LPT (drukarki) w PC. Za pomocą programu (np. darmowy PonyProg) szybko odratujemy Atmela. | ||
+ | Podłączamy kable programatora do złącza JP2 w płytce Sio2SD. Oznaczenia pinów - widok na PCB od strony elementów - powyżej jest Atmel: | ||
+ | |||
+ | RESET CLK MISO | ||
+ | GND MOSI VCC | ||
+ | |||
+ | Włączamy PC (wtyk D-Sub 25 wpięty już jest do LPT), podłączamy Sio2SD do Atari i je włączamy. | ||
+ | Uruchamiamy program, który wykona programowanie. Szczegóły obsługi programu dostępne są w sieci lub u sprzedawcy programatora. | ||
+ | |||
+ | ==Przydatne linki== | ||
+ | |||
+ | Więcej informacji na [http://sio2sd.org/ nowej stronie] autora projektu. | ||
+ | Żródło Atari Commandera na [http://madteam.atari8.info/index.php?prod=uzytki stronie MadTeamu] | ||
- | {{stub}} | + | [[Kategoria:Peryferia 8-bit]] |
+ | [[Kategoria:Schematy i specyfikacje]] |
Aktualna wersja
Spis treści |
Informacje Ogólne
SIO2SD to interfejs autorstwa Jakuba Kruszony-Zawadzkiego, pozwalający na wczytywanie gier/programów na Atari 8-bit poprzez port SIO z kart SD/MMC.
Cechy urządzenia
- Obsługa kart SD/MMC (formaty FAT12, FAT16 i FAT32)
- Obsługa plików w formatach ATR (rw), XFD (ro) i COM/XEX (ro)
- Wyświetlacz 16x2 pokazujący aktualnie wybrany katalog i plik ATR/XEX podmapowany pod określony numer stacji dysków.
- Obsługa SIO z turbo (możliwość ustawienia prędkości - HS Index od 1 do 16, standardowo 6, co odpowiada prędkości ok. 68,2 kbps, do wersji 2007.02.18 była stała prędkość 51 kbps - HS Index 10)
- Wszystkie gęstości z sektorami 128 B i 256 B (TOMS-owe 512 B na razie nieobsługiwane), w tym również dyski 16 MB
- Możliwość równoległej obsługi 8 stacji (do wersji 2007.02.08 tylko 4 stacje: D1-D4)
- Możliwość konfigurowania z poziomu ATARI (możliwe ładowanie programu konfiguracyjnego bezpośrednio z urządzenia, bez potrzeby nagrywania na kartę SD)
Wydajność
Prędkość zmierzona programem RW-Test pod SpartaDOS X:
- DOS Reading: 1719,8 B/sek.
- DOS Writing: 5137,8 B/sek.
- DOS Average: 3428,8 B/sek.
Użyto RW-Test w wersji 3.0 i karty SD Pretec Highspeed 60x.
Lista elementów
Poniżej przedstawiona jest lista elementów elektronicznych potrzebnych do budowy układu.
Lp Ilość Nazwa Elementu Wartość Oznaczenie elementu 1 2 Rezystor 10k R1,R3 2 1 Potencjometr 2.2k R2 3 3 Rezystor 1.8k R4,R5,R6 4 3 Rezystor 3.3k R7,R8,R9 5 1 Rezystor 27R R10 6 3 Rezystor 220R R11,R12,R13 7 1 Kondensator tantalowy 10uF C4 8 2 Kondensator ceramiczny 22pF C1,C2 9 4 Kondensator ceramiczny 100nF C3,C12,C10,C11 10 5 Kondensator ceramiczny 22nF C5,C6,C7,C8,C9 11 1 Kwarc 7.3728 lub 14MHz Q1 12 1 Dioda Schottkiego BAT85 opcjonalnie 13 1 Procesor ATMEGA32-16PI (lub Atmega 32L-8PU) IC1 14 1 Stabilizator 3.3V IC2 15 3 Diody LED 3V LED1,LED2,LED3 16 5 Mikrostyki - S1,S2,S3,S4,S5 17 1 Gniazdo SD - SD 18 1 Wyświetlacz 2x16 LED - JP3
Porady dotyczące uruchomienia układu
- Dla kwarca 7.3728 MHz fuse procesora Atmel ustawiamy na (H:0xD1 ; L:0xFF)
- Dla kwarca 14.3118 MHz fuse procesora Atmel ustawiamy na (H:0xC3 ; L:0x3F)
- Jeżeli podczas wyboru plików ATR na wyświetlaczu pojawiają się śmieci - należy wymienić stabilizator napięcia 3.3V (na np. precyzyjny stabilizator napięcia 1.0A w obudowie TO-220)
- Komunikat 'Błąd odczytu karty SD' - gdy jest włożona do slotu - przyczyną jest brak styku przy kondensatorze C12 lub stabilizatorze napięcia 3.3V. PCB jest dwustronne, dlatego zaleca się poprawić lutowanie z obu stron płytki dla tych elementów.
Programowanie, obsługa SIO
Sio2SD jest urządzeniem SIO, z którym możemy się komunikować.
Wykorzystuje tę możliwość dedykowany przez autora Sio2SD.com, a także grupy MadTeam Atari Commander od wersji 1.7 oraz S2S.com autorstwa Truba
Poniżej oficjalne dane zebrane przez Pajero zgodne z wersją firmware 2.5.
Nowsze wersje (3.0) mają o wiele większą liczbę komend, co opisane jest na nowej stronie www...
Wykaz komend
- $300 DDEVIC = $73
- $301 DUNIT = deviceID
- $306 DTIMLO = $7f minimum, optymalnie $90
- $307 DUNUSE = $00 zawsze
DeviceID znajduje się w pliku konfiguracji Sio2SD.com (musi być to 6.bajt programu!).
Wartość: 0-3. To pozwala podłączyć do 4 urządzeń do Atari jednocześnie.
$0302 DCMND | $0303 DSTATS | $0304/5 DBUFA | $0308/9 DBYT | $030A DAUX1 | $030B DAUX2 |
$00 get status | $40 | Odczytana wartość: 00 = brak karty 01 = OK 02 = OK zmieniono kartę na inną 03 = OK zmiany w D1-D8 | $01 | $00 | $00 |
$01 get drive | $40 | Adres bufora dla: - jednego wpisu - wpisów 1-4 | $36 $36 * Ilość wpisów | Numer urządzenia: 1 - 8 0 - 7 | $00 Ilość wpisów: 1-4 |
$02 mount drive | $80 | Adres bufora: - z jednym wpisem - z wpisami 1-4 | $36 $36 * Ilość wpisów | Numer urządzenia: 1 - 8 0 - 7 | $00 Ilość wpisów: 1-4 |
$03 unmount drive | $00 | $00 | $00 | Numer urządzenia: 1 - 8 0 - 7 | $00 Ilość wpisów: 1-8 |
$04 get name | $40 | Adres bufora dla: - jednego wpisu - wpisów 1-4 | $36 $36 * Ilość wpisów | $00 Ilość wpisów: 1-4 | 00 = kolejny wpis 01 = rewind i wczytaj kolejny wpis |
$05 select directory | $80 | Adres bufora z nazwą katalogu | $36 | $00 | $00 |
$06 up directory | $00 | $00 | $00 | $00 | $00 |
$10 lcd set | $80 | Adres bufora z linią do wyświetlenia | $28 | $00 = linia górna $01 = linia dolna | $00 |
Uwagi:
- nie wolno przekraczać założenia: 8 >= Numer urządzenia + Ilość wpisów
- obowiązuje zawsze sprawdzenie czy komenda została poprawnie wykonana.
Czyli mamy możliwość sprawdzenia czy urządzenie jest włączone do gniazda SIO - get status; możemy odczytać co jest podpięte do jednego z ośmiu urządzeń - get drive; zmienić to podpięcie - mount drive; lub je wyłączyć (tzw. --OFF-- ) - unmount drive; odczytać zawartość bieżącego katalogu - get name; wejść do wybranego katalogu - select directory; przejść o katalog wyżej (do nadrzędnego) - up directory; a także wysłać tekst na wyświetlacz.
Niestety w tej wersji urządzenia nie można ustawiać dowolnie ścieżki katalogów (nalezy po nich "skakać" krokowo), odczytywać dowolnego wpisu z katalogu - zawsze przekazywany jest wpis po wpisie. Największym bólem jest brak możliwości zapisywania do samej karty. Czyli nie można założyć nowego ATR-a.
Wpis katalogu
Komunikacja odbywa się blokami po $36 bajtów. Zawartość:
- $00-$26 = nazwa wpisu do katalogu wypełniona do końca spacjami
- $27 = status wpisu: 01 katalog, 02 atr, 03 xfd, 04 inny
- $2c-$2f = file size (0=dla katalogu)
- reszta zawiera dane dot.położenia wpisu na karcie SD.
Jeśli pierwszy bajt równy 0 = koniec katalogu, potem znowu wszystko od początku.
Uwaga: dane $28-$35 mają inną organizacje we wersji wsadu od 3.0 włącznie!
Programowanie układu ATMEL
Aby zmienić firmware wystarczy: wgrać program binarny SIO2SD.BIN o długości 30720 B do głównego katalogu karty SD; odpalić Sio2SD z wciśniętym K4 by wejść do trybu konfiguracji; a tam w menu wcisnąć Shift+K3. Ale przy błędzie takiej operacji lub jeśli rozprogramuje się układ Atmel możemy tylko ratować się programując procesor. Do tego celu może posłużyć dowolny programator (np. STK 200/300 za ~12PLN na Allegro) podłączany do portu LPT (drukarki) w PC. Za pomocą programu (np. darmowy PonyProg) szybko odratujemy Atmela. Podłączamy kable programatora do złącza JP2 w płytce Sio2SD. Oznaczenia pinów - widok na PCB od strony elementów - powyżej jest Atmel:
RESET CLK MISO GND MOSI VCC
Włączamy PC (wtyk D-Sub 25 wpięty już jest do LPT), podłączamy Sio2SD do Atari i je włączamy. Uruchamiamy program, który wykona programowanie. Szczegóły obsługi programu dostępne są w sieci lub u sprzedawcy programatora.
Przydatne linki
Więcej informacji na nowej stronie autora projektu. Żródło Atari Commandera na stronie MadTeamu