Witam!
Mam problem z przełączeniem karty CF w tryb I/O mode. W trybie PC Memory wszystko działa poprawnie.
Nie wiem czy dobrze rozumiem specyfikację ale próbę przełączenia karty w tryb I/O wykonuję w następujący sposób:
- Wykonuję reset karty
- Ustawiam bity LevlREQ oraz conf1 w rejestrze konfiguracyjnym Configuration Option Register (Base + 00h in Attribute Memory) dokonuję tego poprzez następujące ustawienie linii: A0-A3 =0 , A9=1, -REG=0, -WE=0, -OE=0 , -CE1=0, -CE2=1
- W taki sam sposób jak poprzednio ustawiam bit -XE w rejestrze konfiguracyjnym Card Configuration and Status Register (Base + 02h in Attribute Memory)
- Od tej pory miałem nadzieję, że będę mógł wpisywać/odczytywać z rejestrów CF-ATA Drive Register poprzez wystawianie odpowiedniego adresu A0-A3 oraz -REG=0, -OE=1,-WE=1, IORD=0 ,IOWR=1 , CE1=0, CE2=1 - odczyt A0-A3 oraz -REG=0, -OE=1,-WE=1, IORD=0 ,IOWR=1 , CE1=0, CE2=1 - zapis
Niestety, kiedy próbuję coś z tych rejestrów odczytać, otrzymuję 0xFF, nawet jeśli wcześniej do nich coś wpiszę.
Zauważyłem też, że gdy wpisuję do rejestru konfiguracyjnego Configuration Option Register cokolwiek, to po jego odczytaniu otrzymuję 0x84, jeśli nic nie wpiszę - 0x00. Gdy wpiszę coś do drugiego z rejestrów konfiguracyjnych - Card Configuration and Status Register - odczytuję to co tam zapisałem.
Nie mam pojęcia gdzie leży błąd, może coś przeoczyłem w dokumentacji??
Jeśli ktoś mółby mi podać poprawną sekwencję to byłbym wdzięczny...
Pozdrawiam