1

Chciałem się zapytać, czy układ Pokey może być taktowany bardzo niską częstotliwością zegarową, rzędu pojedynczych hertzów? Gdzieś przeczytałem, że układu Sally nie można tak taktować. Z czego to wynika? Obecnie wykonuję testy na Pokeyu i mam problemy z odczytem jego rejestrów przy niskiej częstotliwości.

2

pytanie.. robisz to wewnątrz atarki, czy taktujesz układ poza atari z taką częstotliwością ?

3

a ja czytalem, ze czestotliwosci ponizej jakiejsc granicznej odbierane sa jako zatrzymanie zegara wiec nic dziwnego, ze masz klopoty z odczytem bo uklad stoi :-) jaka graniczna dla jakich ukladow, gdzies dzwonili ale gdzie ? ;-)

http://atari.pl/hsc/ad.php?i=1.

4

Dla 6502 (NMOS) podobno minimum to 100 kHz - czy to prawdziwa liczba, nie wiem, ale pewnie dla Pokeya będzie to z grubsza tyle samo, co dla 6502.

KMK
? HEX$(6670358)

5 Ostatnio edytowany przez asal (2006-10-10 19:48:21)

Robię to poza Atarką - stworzyłem prosty układ podłączany do PC-ta i taktowanie odbywa się za pomocą portu równoległego. Przy nieznacznym zwiększeniu prędkości widzę wyraźnie, jak Pokey wysyła dane na magistralę D, ale mam problem z ich odczytaniem. Być może mój program robi to za późno od narastającego zbocza zegarowego.

A tak w ogóle, to w dokumentacji Pokeya (pokey.pdf) jest błąd, bo z umieszczonego tam ryskunku wynika, że odczyt należy przeprowadzać przy sygnale R/W ustawionym na zero logiczne. A to przecież nieprawda, bo tak się wykonuje zapis.

Nie wiem właśnie, czy te ograniczenia prędkości 6502 obowiązują też w przypadku Pokeya. Być może ja coś źle robię. Wykonuję to tak:

self.set_O2(False)
self.set_RW(True)
self.chip_on()
self.set_A(adr)
ret = self.get_D()
self.set_O2(True)
self.chip_off()

Czy to jest dobrze?

6 Ostatnio edytowany przez macgyver (2006-10-10 19:50:02)

podczas zbocza narastającgo 02 ztcp układy I/O odczytują adres z magistrali adresowej i sprawdzają stan linii R/W, po to, by przy zboczu opadającym odczytać/wystawić z/na szynę danych.... jak u Ciebie do tego ma się 02 ?

Btw. wydaje mi się, że taktowanie nawet bardzo małą częstotliwością nie powinno stanowić problemu... ważne jest, aby przestrzegać w.w. zasady... pokey jak każdy synchroniczny układ w atarce reguje na impulsy zegara taktującego. POKEY dodatkowo jeszcze na podstawie tego zegara napędza swoje liczniki, na podstawie których generuje dźwięk, generuje przerwania, próbkuje wejścia potencjometryczne itp. Oczywiście częstotliwość dźwięku będzie proporcjonalnie mniejsza.

7

Umieściłem właśnie fragment mojego kodu (powyżej). Co na ten temat sądzisz?

8

Zdaje się, że próbujesz na zboczu narastającym pobrać dane... przeczytaj, co wyżej napisałem.

9 Ostatnio edytowany przez macgyver (2006-10-10 19:59:39)

self.set_O2(False)
self.set_RW(True)
self.chip_on()
self.set_A(adr)
ret = self.get_D()
self.set_O2(True)
self.chip_off()

idąc tym śladem spróbuj zrobić tak:

self.set_O2(False)
self.set_RW(True)
self.chip_on()
self.set_A(adr)
self.set_O2(True)
self.set_O2(False)
ret = self.get_D()
self.chip_off()

w wypadku zapisu:

self.set_O2(False)
self.set_RW(False)
self.chip_on()
self.set_A(adr)
self.set_O2(True)
(tu wpisz na szynę danych bajt danych)
self.set_O2(False)
self.chip_off()

tak przynajmniej według teorii powinno to działać... aczkolwiek nie wiem co tak naprawdę robią Twoje procedurki... ale biorąc pod uwagę logiczne nazwy ja bym tak to zrobił

10

Dzięki, popróbuję i może jutro dam odpowiedź. Mam jeszcze takie pytanie - czy sygnały D są typu otwarty kolektor, czy nie? Być może tutaj leży problem. Ja na razie nie wstawiłem rezystorów spinających te sygnały do +5V.

W moim programie funkcja chip_on podaje zero i jedynkę logiczne na wejścia CS0 i CS1, natomiast chip_off - podaje sygnały przeciwne, odłączając Pokeya.

11 Ostatnio edytowany przez macgyver (2006-10-10 20:32:31)

CS0 i CS1 powinny być ustawiane w tym samym czasie co szyna adresowa. Przynajmniej atari tak to fizycznie robi (przez MMU i 74138) i to działa ;) Powodzenia !

12

Dzięki, macgyver. Jak to zadziała, to chyba Cię ozłocę. Sporo się napracowałem robiąc płytkę testową do Pokeya.

13

nie prosciej podpiac to poprzez jakies 80c2051 (20sto nóżkowca) robiącego (razem z pokeyem) na częstotliwości ataraka i przy okazji robiącego za sterownik do rs232->sygnały połkeja?

juz mi sie tu przed oczami wyobrazni rysuje sprzętowy odtwarzacz sapków ;)

The UNIX Guru`s view of Sex:
unzip; strip; touch; finger; mount; fsck; more; yes; umount; sleep

14

Może i prościej. Ja na razie zrobiłem układ bez mikrokontrolera, aby było mniej układów.
Zrobiłem wczoraj test i wydaje mi się, że sposób podany przez Macgyvera nie jest dobry. Po narastającym zboczu na O2 sygnał na magistrali D szybko znika i nic nie udaje się odczytać.
Obecnie mój układ i program odczytuje jakieś dane z magistrali D przed narastającym zboczem O2, ale problem w tym, że nie zawsze takie same - czasami jeden z bitów jest przekręcony.
Czy może ktoś z Was wie, czy potrzebne są rezystory podciągające sygnały magistrali D do +5V? Rezystory takie są w prawdziwym Atari (10k).
Trochę brakuje mi dokumentacji elektronicznej do Pokeya, a w tej którą mam (pokey.pdf) są niestety błędy a niektórych istotnych rzeczy nie ma wcale.
Trochę próbowałem analizować schemat wewnętrzny tego układu i jak na razie nie widzę powodu, dla którego nie będzie on działał przy niskich częstotliwościach. Wszystko jest na bramkach i prostych MOS-owych tranzystorach.

15

z ciekawosci spytam: do czego toto ma byc? bo chyba nie do generowania dzwieku, skoro (jak slusznie pisal mac) przy mniejszej czestotliwosci taktowania i czestotliwosci wydawanych dzwiekow beda inne...

The UNIX Guru`s view of Sex:
unzip; strip; touch; finger; mount; fsck; more; yes; umount; sleep

16

Ma to być do stworzenia pełnego modelu VHDL Pokeya. Wczoraj trochę nie miałem czasu, ale dzisiaj jak przyjdę z pracy, to pooglądam sobie przebiegi na oscyloskopie i może się dowiem co jest grane.

17

jeeeeeaaaa - gód lak

The UNIX Guru`s view of Sex:
unzip; strip; touch; finger; mount; fsck; more; yes; umount; sleep

18 Ostatnio edytowany przez macgyver (2006-10-11 15:29:13)

To pozostaje chyba dorwać specyfikację 65c02 i tam prześledzić przebiegi czasowe, jednak niech się wypowiedzą inni elektronicy, bo mi się zawsze wydawało, że linie R/W i Adresy są akceptowane na zboczu narastającym 02, natomiast dane przy opadającym... chyba, że już pozapominałem i coś mi się pokręciło.

I jeszcze jedna sprawa - czas wystawiania na szynę danych... może w POKEY-u jest realizowane to na tej zasadzie, że jest robione zwykłe opóźnienie związane z czasem przejścia przez ileś bramek i np. dane są wystawiane przez tę samą ilość czasu, niezależnie od tego, czy masz takt 1,77 MHz czy też kilkaset herców ?

19 Ostatnio edytowany przez asal (2006-10-11 20:16:03)

No właśnie, mnie się też wydaje że takie opóźnienie może mieć miejsce. Dzisiaj czytałem sobie dokumentację do GTIA, bo jest to układ trochę podobny do Pokeya pod względem komuinikacji z procesorem znalazłem trochę lepsze schematy przebiegów.

Wydaje mi się, że sprawę może rozwiązać prosty zatrzask (np 74574), który zapamięta stan magistrali D podczas opadającego zbocza. Być może, gdy program odczytuję magistralę D przez zboczem, dane nie są one jeszcze w pełni gotowe, a po zboczu już ich nie ma. W dokumentacji do GTIA znalazłem bowiem informację, że po opadającym zboczu dane utrzymywane są one jedynie przez kilkadziesiąt nanosekund. Może i dla Pokeya jest podobnie, ale to tylko taka moja teoria, gdyż schemat Pokeya jest bardzo nieczytelny. Popróbuję jeszcze.

20 Ostatnio edytowany przez asal (2006-10-14 15:46:59)

Miałem dzisiaj trochę więcej czasu niż w ciągu tygodnia i chyba udało mi się rozwiązać problem. Po obejrzeniu sygnałów magistrali D Pokeya na oscyloskopie od razu się okazało, że są one typu open-collector (sygnały "pływały") i konieczne są rezystory podciągające do +5V. Po ich wstawieniu (15k) otrzymałem piękne przebiegi logiczne i wyjaśniło się, że stan magistrali D należy odczytywać po narastającym zboczu zegarowym. Po zboczu opadającym sygnały znikają natychmiast i jest już za późno. Może komuś z Was te informacje się przydadzą w przyszłości, w każdym razie bardzo dziękuję za pomoc.

No, i teraz mam do zabawy interfejs z Pokeyem, który napędzany skryptem w Pythonie wyciąga "aż" 1KHz na wejściu zegarowym! :)

21 Ostatnio edytowany przez macgyver (2006-10-15 00:16:00)

Ja obstawiam, że to kwestia opóźnienia w POKEY-u, że przy 1,77 MHz (1,78-1,79) szyna danych regauje przy zboczu opadającym.... niech elektronicy, którzy na dzień dzisiejszy coś robią w atarce wypowiedzą się (Piguła ? Pasiu ? Lotharek ?)... 1 kHz to jednak ponad 1000 mniej niż native freqency O2... czyli czas opóźnienia i reakcji jest na tyle szybki, że kończy się na złączu narastającym, a przy właściwej częstotliwości trafia akurat na zbocze opadające... Tak naprawdę układy, które działają na magistrali 6502 mają takie reżimy czasowo-taktowe...i POKEY (podobnie jak inne chipy z atarki) były projektowane pod stałą częstotliwość taktowania.
Potwierdza to choćby realizacja układu DELAY LINE w atarkach bez Freddiego... stała częstotliwość i na jej podstawie opóźnienia do zarządzania pamięciami dynamicznymi (RAS, CAS) generowane m.in. w oparciu o czas przejścia/propagacji przez bramki.

22 Ostatnio edytowany przez asal (2006-10-15 21:48:20)

Nie jestem elektronikiem i napisałem tylko to, co udało mi się zaobserwować. Być może przy wyższych częstotliwościach Pokey zachowuje się tak, jak napisałeś. Ja w każdym razie patrząc na jego schemat wewnętrzny nie zauważyłem elementów opóźniających, takich jak we Freddim.

Układ pracuje mi obecnie bardzo ładnie, dzisiaj na przykład sprawdzałem jak mój Pokey odczytuje sobie klawiaturę, której nie ma, ale ja udaję że jest. Być może coś przyspieszę w moim programie, bo 1KHz to wynik bardzo mizerny.

23

asal napisał/a:

dzisiaj na przykład sprawdzałem jak mój Pokey odczytuje sobie klawiaturę, której nie ma, ale ja udaję że jest.

Jak dla mnie tekst miesiąca.

Czy możecie wyjaśnić, Stirlitz, dlaczego wasz służbowy adres stirlitz@rsha.gov.de ma aliasa justas@gru.su?
Nie czytam PM. Proszę używać e-mail.