RTV forum PL | NewsGroups PL

[8bit] Niezainicjowana karta CF powodem problemó w?

NOWY TEMAT

elektroda NewsGroups Forum Index - Elektronika Polska - [8bit] Niezainicjowana karta CF powodem problemó w?

Atlantis
Guest

Sat Oct 26, 2019 12:52 pm   



Eksperymentuję ostatnio z konstrukcjami retro. jakiś czas temu odpaliłem
prosty komputer ośmiobitowy na 6502. Całość siedzi na dwóch płytkach -
jedna z CPU i pamięciami, druga z układami I/O. Działa na tym na razie
BASIC obsługiwany przez terminal szeregowy, a ja powoli zabieram się za
uruchamianie kolejnych układów I/O (RTC, karta CF, kontroler klawiatury AT).
Dzisiaj zabrałem się za kartę CF. Oryginalny plan zakładał
eksperymentowanie pod BASIC-iem, za pomocą komend PEEK i POKE. Karta to
32MB wersja przemysłowa. Połączenia na płytce wykonane wg tego schematu:
http://www.waveguide.se/?article=8-bit-compact-flash-interface
Tak więc karta ma pracować w trybie 8-bit.

Włożyłem kartę, odpaliłem komputer i tutaj niespodzianka. Nie
wystartował. Zamiast normalnego komunikatu powitalnego miałem w
terminalu krzaki. Wyłączyłem komputer, wyjąłem kartę, włączyłem go
ponownie i wszystko wróciło do normy. Przy ponownej próbie uruchomienia
konstrukcji z kartą problem się powtórzył.

Teraz zabieram się za debugowanie. Połączenia zdają się być w porządku.

Chciałem zapytać Was co sądzicie o roboczej hipotezie - czy to możliwe,
że powodem jest niezainicjowana karta? Czy może ona mieszać coś na
magistrali? Czyżbym nie mógł eksperymentować z nią od początku w
BASIC-u, tylko muszę z poziomu asemblera zainicjować ją do pracy w
trybie 8-bit, tuż po starcie komputera?

A może powinienem szukać gdzie indziej?

Dawid Rutkowski
Guest

Sat Oct 26, 2019 7:27 pm   



Pierwsze co rzuca się w oczy to intelowski interfejs na CF - jak to podłączyłeś do motorolowskiego interfejsu 6502?

Atlantis
Guest

Sat Oct 26, 2019 7:30 pm   



On 26.10.2019 19:27, Dawid Rutkowski wrote:

Quote:
Pierwsze co rzuca się w oczy to intelowski interfejs na CF - jak to
podłączyłeś do motorolowskiego interfejsu 6502?

To akurat bardzo proste - intelowskie sygnały !WR i !RD bardzo prosto
generuje się z motorolowskich E oraz R/!W. Wystarczy prosta logika na
paru bramkach. Jej obecność i tak wymuszają pamięci projektowane z myślą
o procesorach zgodnych ze standardem Intela.

Dawid Rutkowski
Guest

Sun Oct 27, 2019 10:48 am   



W dniu sobota, 26 października 2019 21:30:04 UTC+2 użytkownik Atlantis napisał:
Quote:
On 26.10.2019 19:27, Dawid Rutkowski wrote:

Pierwsze co rzuca się w oczy to intelowski interfejs na CF - jak to
podłączyłeś do motorolowskiego interfejsu 6502?

To akurat bardzo proste - intelowskie sygnały !WR i !RD bardzo prosto
generuje się z motorolowskich E oraz R/!W. Wystarczy prosta logika na
paru bramkach. Jej obecność i tak wymuszają pamięci projektowane z myślą
o procesorach zgodnych ze standardem Intela.

No racja - to pozostaje jeszcze kwestia, co podłączyłeś do !CS0 (i ew. !CS1)?
Bo skoro z wyjętą kartą działa, to w interfejsie nie narobiłeś zwarć.
CF w trybie IDE działa jak dysk twardy - można go podłączyć do gniazda PATA.
Tak samo można było zrobić z dyskami PCMCIA.
Zaś PATA to podzbiór 16-bit ISA + dodatkowe sygnały.
Bez CS karta CF powinna się od magistrali odłączać, niezależnie od ustawienia na 8 bitów.

Ale nie myśl, że zobaczysz kartę CF jako bajty pamięci - będzie widoczna jako dysk IDE/ATA niezależnie od trybu (w trybie mem i i/o będxie miała dodatkowe funkcje jak karta PCMCIA).

J.F.
Guest

Mon Oct 28, 2019 7:55 pm   



Użytkownik "Atlantis" napisał w wiadomości grup
dyskusyjnych:5db4419c$0$17360$65785112_at_news.neostrada.pl...
Quote:
Eksperymentuję ostatnio z konstrukcjami retro. jakiś czas temu
odpaliłem
prosty komputer ośmiobitowy na 6502. Całość siedzi na dwóch
płytkach -
jedna z CPU i pamięciami, druga z układami I/O.
Dzisiaj zabrałem się za kartę CF. Oryginalny plan zakładał
eksperymentowanie pod BASIC-iem, za pomocą komend PEEK i POKE. Karta
to
32MB wersja przemysłowa. Połączenia na płytce wykonane wg tego
schematu:
http://www.waveguide.se/?article=8-bit-compact-flash-interface
Tak więc karta ma pracować w trybie 8-bit.

Włożyłem kartę, odpaliłem komputer i tutaj niespodzianka. Nie
wystartował. Zamiast normalnego komunikatu powitalnego miałem w
terminalu krzaki. Wyłączyłem komputer, wyjąłem kartę, włączyłem go
ponownie i wszystko wróciło do normy. Przy ponownej próbie
uruchomienia
konstrukcji z kartą problem się powtórzył.

Terminal jakis typowy, łączony interfejsem szeregowym ?

Krzaki sugerowaly totalnie inne dzialanie systemu, czy tylko cos z
portem ?

Quote:
Chciałem zapytać Was co sądzicie o roboczej hipotezie - czy to
możliwe,
że powodem jest niezainicjowana karta? Czy może ona mieszać coś na
magistrali?

Najpierw bym sprawdzil dekoder adresowy i sygnal RD/.
Karta moze przeszkadzac samym obciazeniem magistrali czy pojemnoscia -
zwolnij zegar do testow.

A jakas inicjacja .. kto wie, ale nie znam CF niestety.
Z tego artykulu patrzac ... powinna byc raczej "grzeczna".

J.

Atlantis
Guest

Tue Oct 29, 2019 9:48 am   



On 28.10.2019 19:55, J.F. wrote:

Quote:
Terminal jakis typowy, łączony interfejsem szeregowym ?

Normalny interfejs szeregowy, RS232.
Od strony sprzętowej UART zrobiony na 6551.
Programowo po stronie PC obsługą tego zajmuje się zwyczajny, linuksowy
screen.


Quote:
Najpierw bym sprawdzil dekoder adresowy i sygnal RD/.

Dekoder adresowy zdaje się być w porządku. Mierzyłem poziom napięcia na
linii CS podczas normalnej pracy i wynosi ona 5V, co oznacza nieaktywną
kartę CF. Poza tym ten sam dekoder adresów (układ 74HCT138) obsługuje
także inne peryferia (UART, RTC), które działają zupełnie prawidłowo.
To samo z sygnałem /RD - steruje on odczytem nie tylko z peryferiów, ale
także RAM-u i EPROM-u.


Quote:
Karta moze przeszkadzac samym obciazeniem magistrali czy pojemnoscia -
zwolnij zegar do testow.

Magistrala adresowa jest buforowana przez układy HCT. Bezpośrednio do
procesora są podłączone tylko pamięci (CMOS) - bufory znajdują się przed
złączem magistrali systemowej.
Sygnały /WR i /RD również są generowane za pomocą układów HCT, podobnie
jak sygnały CS. Obciążalność linii powinna więc być całkiem spora.
Pozostaje tylko linia danych, ale ta w karcie CF powinna się znajdować w
stanie wysokiej impedancji, do momentu pojawienia się odpowiednich
sygnałów na liniach CS oraz !RD lub !WR.

W tej chwili mam jeszcze inną roboczą hipotezę - być może winę ponosi
zasilanie. Zasilacz niby powinien dawać 3A, ale kto wie jaka jest jego
rzeczywista wydajność. W układzie znajduje się układ resetujący, który
ściąga linię !RESET do masy, gdy napięcie zasilania spadnie poniżej
określone wartości. Do tej samej linii jest podłączona karta CF. Jeśli
po restarcie zaczyna ona pobierać znaczna ilośc prądu (i/lub występuje
spadek np. na bezpieczniku) to będziemy mieć cykliczny reset.

Sprawdzę, gdy tylko będę miał czas zająć się tym projektem po pracy. Wink

J.F.
Guest

Tue Oct 29, 2019 12:11 pm   



Użytkownik "Atlantis" napisał w wiadomości grup
dyskusyjnych:5db7fcf0$0$17356$65785112_at_news.neostrada.pl...
On 28.10.2019 19:55, J.F. wrote:
Quote:
Terminal jakis typowy, łączony interfejsem szeregowym ?

Normalny interfejs szeregowy, RS232.
Od strony sprzętowej UART zrobiony na 6551.
Programowo po stronie PC obsługą tego zajmuje się zwyczajny,
linuksowy
screen.

To swoja droga - usterka powodujaca "krzaki na terminalu" musi byc
ciekawa.
Bo cos jednak trzeba zapisywac do portu, wczesniej zainicjowac ... byc
moze zle sie inicjuje ...

Quote:
Najpierw bym sprawdzil dekoder adresowy i sygnal RD/.

Dekoder adresowy zdaje się być w porządku. Mierzyłem poziom napięcia
na
linii CS podczas normalnej pracy i wynosi ona 5V, co oznacza
nieaktywną
kartę CF.

Oscyloskop by sie przydal.
Albo ... podlacz ja na stale do 5V, i zobacz co wyjdzie.

Quote:
Poza tym ten sam dekoder adresów (układ 74HCT138) obsługuje
także inne peryferia (UART, RTC), które działają zupełnie prawidłowo.
To samo z sygnałem /RD - steruje on odczytem nie tylko z peryferiów,
ale
także RAM-u i EPROM-u.

Karta moze przeszkadzac samym obciazeniem magistrali czy
pojemnoscia -
zwolnij zegar do testow.

Magistrala adresowa jest buforowana przez układy HCT. Bezpośrednio do
procesora są podłączone tylko pamięci (CMOS) - bufory znajdują się
przed
złączem magistrali systemowej.
Sygnały /WR i /RD również są generowane za pomocą układów HCT,
podobnie
jak sygnały CS. Obciążalność linii powinna więc być całkiem spora.

HCT wydajnosc maja umiarkowana, a pojemnosci w ukladach MOS spore.

Quote:
Pozostaje tylko linia danych, ale ta w karcie CF powinna się
znajdować w
stanie wysokiej impedancji, do momentu pojawienia się odpowiednich
sygnałów na liniach CS oraz !RD lub !WR.

Chyba, ze bruzdzi pojemnoscia. Na danych ... lub na adresie.

Quote:
W tej chwili mam jeszcze inną roboczą hipotezę - być może winę ponosi
zasilanie. Zasilacz niby powinien dawać 3A, ale kto wie jaka jest
jego
rzeczywista wydajność.

A owszem. No i takie oczywistosci jak krotkie kable z zasilacza i duzo
kondensatorow na plytce ...

Quote:
Sprawdzę, gdy tylko będę miał czas zająć się tym projektem po pracy.
Wink

Tak sobie czytam, ze CF ma tryb bus master ... ale on chyba wymaga
zainicjowania odpowiedniego.

J.

Atlantis
Guest

Tue Oct 29, 2019 12:31 pm   



On 29.10.2019 12:11, J.F. wrote:

Quote:
Oscyloskop by sie przydal.
Albo ... podlacz ja na stale do 5V, i zobacz co wyjdzie.

Jedno i drugie zamierzam zrobić. Przy czym porządnego oscyloskopu
obecnie nie mam w domu, w związku z czym będę musiał się wybrać do
lokalnego hackerspace'u. :)


Quote:
HCT wydajnosc maja umiarkowana, a pojemnosci w ukladach MOS spore.

HCT mają na tyle dużą wydajność, że można za ich pomocą sterować diodami
LED bez pomocą dodatkowych driverów, w obydwie strony. To jednak sporo
wedle standardów z czasów, kiedy produkowano MOS6502. Smile
No i układ jednak nie chodzi na zbyt szybkim taktowaniu - 2 MHz (CPU to
wersja A), a więc sygnały na większości linii będą miały parę razy
mniejsza częstotliwość.

Dawid Rutkowski
Guest

Tue Oct 29, 2019 9:06 pm   



A skąd masz basic na 6502 obsługujący port szeregowy zamiast monitora+klawiatury?
Wysyła sekwencje ANSI?
Choć w sumie 6502 to nie tylko C64 czy atari xl/xe - lub egzotyczne apple I i ][...

Atlantis
Guest

Wed Oct 30, 2019 8:39 am   



On 29.10.2019 20:06, Dawid Rutkowski wrote:

Quote:
A skąd masz basic na 6502 obsługujący port szeregowy zamiast monitora+klawiatury?
Wysyła sekwencje ANSI?

Współcześnie napisany EhBasic. Kod jest napisany w ten sposób, że
interpreter jest niezależny od warstwy I/O. Twórca konkretnej
implementacji musi dostarczyć dwie niewielkie procedury, odpowiedzialne
za odbieranie i wysyłanie pojedynczego znaku. Interpretera nie obchodzi
czy będzie to port szeregowy, czy też fizyczna klawiatura i monitor.
Trzeba też oczywiście dodać inicjalizację interfejsu szeregowego w
części odpowiedzialnej za ustawienie peryferiów.
Kod zawiera też dwie procedury odpowiedzialne za obsługę poleceń SAVE i
LOAD. Domyślnie nie robią one nic, jednak można je dostosować do
własnych potrzeb.

Wbrew pozorom społeczność ludzi bawiących się sprzętem retro jest
całkiem spora i trochę się w tym temacie dzieje, a 6502 cieszy się
całkiem dużą popularnością.

elektroda NewsGroups Forum Index - Elektronika Polska - [8bit] Niezainicjowana karta CF powodem problemó w?

NOWY TEMAT

Regulamin - Zasady uzytkowania Polityka prywatnosci Kontakt RTV map News map