Tajemnice ATARI

GENERATOR PRZEBIEGÓW IMPULSOWYCH

    Ośmiobitowy ATARI to nie tylko obliczenia, przetwarzanie tekstów i gry. Można wykorzystać komputer jako programowany układ do generowania stanów logicznych i przebiegów impulsowych, do pomiarów i sterowania. Takie podejście zdarza się elektronikom o zacięciu układowym, a rezultaty pracy bywają interesujące. Niektóre z takich aplikacji opisywane były w krajowej literaturze (1), (3), (4). Artykuł niniejszy przynosi nieco praktycznych informacji o przykładowych przebiegach elektrycznych, jakie można wygenerować za pomocą naszego komputera.

Wyjście monitorowe sygnału AUDIO

Rys. 1 Układ wyjściowy fonii w ATARI


   Podstawową funkcją tego wyjścia jest dostarczenie sygnału dźwięku do monitora. Można je wykorzystywać do rozmaitych innych celów. Układ wyjścia toru fonii znajdujący się w komputerze pokazano na rys. 1. Najłatwiej jest sterować częstotliwością i amplitudą sygnału z poziomu Atari Basic, lub Turbo Basic XL - instrukcje "SOUND ..." i "DSOUND ...". Przy programowym ustawieniu maximum amplitudy i minimum zniekształceń (np. SOUND 0,100,10,15) otrzymuje się przebieg zbliżony do prostokątnego o międzyszczytowęj wartości napięcia ok. 0,2V (rys. 8). Zastosowane wewnątrz komputera sprzężenie pojemnościowe powoduje wyraźne różniczkowanie przebiegów o częstotliwościach poniżej 1 kHz. Przy częstotliwościach ponadakustycznych zaczyna odgrywać rolę ograniczone pasmo przenoszenia i sygnał zaczyna mieć kształt bardziej zbliżony do sinusoidalnego, jednak następuje wyraźny spadek amplitudy - do ok. 0,1V przy 50kHz i ok. 0,02V przy 100kHz. Można oczywiście sterować układ POKEY generujący sygnał akustyczny z poziomu języka maszynowego, jednak kształt przebiegów na wyjściu komputera będzie taki, jak opisano powyżej.

Rys. 2 Przebiegi na wyjściu monitorowym (AUDIO)

Generowanie przebiegów na gniazdach joysticków

   Korzystając z możliwości programowych układu PIA obsługującego złącza joysticków można generować przebiegi o prawidłowym kształcie prostokątnym i amplitudzie bliskiej 5V w całym dostępnym zakresie częstotliwości (od zera do ok. 100 kHz). Układ PIA połączony jest z gniazdami joysticków za pośrednictwem elementów zabezpieczających przed przeciążeniem oraz zakłóceniami. Schemat dla jednej takiej linii pokazano na rys. 3.

Rys. 3 Układ połączeń wewnętrznych


   Układ taki nie sprzyja dobremu przenoszeniu na wyjście szybkich przebiegów impulsowych. Znacznie poprawia się ich kształt przez połączenie wyjścia rezystorem ok. 2,2 kilooma do napięcia +5V (dostępne na gnieździe joysticka). Przy takim spolaryzowaniu przenoszone są bez większych zniekształceń impulsy o długości powyżej ok. 10 mikrosekund. Układ PIA może generować stany logiczne i ciągi impulsów dzięki sterowaniu bezpośrednio przez procesor. Po przeprogramowaniu danej linii PIA jako wyjścia, utrzymuje ona stan logiczny, jaki miał odpowiedni bit bajtu dostarczonego ostatnio przez procesor.

   Dostarczając na adres PA ($D300) kolejno odpowiednie bajty, można generować dowolne sekwencje stanów logicznych na poszczególnych liniach. Wszystko byłoby dalej proste, gdyby nie przerwania generowane w systemie przez rozmaite źródła. Wytrącają one procesor z rytmu i jego praca jest zbyt nieregularna jak na generację szybkich przebiegów okresowych. Radą na to jest zablokowanie przerwań: rozkazem SEI dla procesora oraz w rejestrach DMACTL ($D400) i NMIEN ($D40E). Nic nie zastąpi przykładu, oto zatem przykładowy przebieg prostokątny (rys. 4) oraz program umożliwiający jego wygenerowanie. Przebieg pojawia się na linii PAO. Pozostałe są nadal ustawione jako wejścia.

Rys. 4 Przebieg impulsowy na wyjściu PA0

************************************
* GENERACJA IMPULSÓW PROSTOKĄTNYCH *
*      (PRZEZ PORT JOYSTICKA)      *
*        Witold Prokopowicz        *
*              1991                *
************************************
       OPT %10101

CONSOL EQU $D01F
PA     EQU $D300
PAC    EQU $D302

       ORG $600
       LDA #$3     PROGRAMOWANIE PA
       STA PAC
       LDA #01
       STA PA      BIT 0 JAKO WYJSCIE
       LDA #$34    KONIEC PROGRAMOWANIA
       STA PAC
       LDA #$01    STAN "l" NA WYJSCIE
       STA PA

       LDA #1
       JSR $FDFC   "BEEP" I CZEKAM NA
*                   NACISN. KALWISZA
       LDY #0       BLOKADA PRZERWAN
       STY $D40E
       STY $D400   I DMA
       SEI

*                  W "Y" JEST ZERO 
*                  W "A" JEST JEDYNKA

LOOP   STA PA      "l" NA WYJSCIE
       JSR DEL1M
       JSR ICO     SPR. PRZYCISK "START"
       STY PA      "0" NA WYJSCIE
       JSR DEL05M
       STA PA
       JSR DEL01M
       STY PA
       JSR DEL01M
       JMP LOOP

DEL1M  JSR DEL05M  1 milisekunda
DEL05M LDX #174    0,5 milisekundy
DELP   DEX
       BNE DELP
       RTS

DEL01M LDX #29     O,l milisekundy
DELSP  DEX
       BNE DELSP
DEL    RTS
ICO    BIT CONSOL  NACISNIECIE "START"
       BEQ OUT
       RTS
OUT    LDA #$30    PROGRAMOWANIE PA
       STA PAC
       LDA #00
       STA PA      WSZYSTKIE WEJSCIA
       LDA #$34
       STA PAC
       LDA #$40    ODBLOKOWANIE PRZERWAN
       STA $D40E
       LDA #3
       STA $D400   ORAZ DMA
       CLI
       PLA
       PLA
       BRK
       END KONIEC
   Wyłączenie w Atari przerwań i DMA powoduje m. in. zanik obrazu i brak reakcji na klawiaturę. Z tego też względu w programie umieszczono procedurę testowania przycisku "START". Jego naciśnięcie spowoduje przerwanie generacji i wyjście z programu po odtworzeniu stanu przerwań oraz przeprogramowaniu PIA. Bez tego przerwać program można by tylko przyciskiem "RESET", co nie wydaje się szczególnie eleganckie. Trzeba jednak pamiętać, że procedura sprawdzania stanu konsoli zabiera kilka mikrosekund i nie można tego faktu pominąć przy generowaniu bardzo szybkich przebiegów. Procedurę w języku maszynowym można łatwo przystosować do współpracy z Basicem (PLA na początku i zamiana BRK na RTS). Przytoczony listing programu przygotowano za pomocą Quick Assemblera. Z moich doświadczeń wynika, że QA dobrze się nadaje do takich eksperymentów - jest możliwość natychmiastowego testowania programu, a assemblacja jest szybka.

"Primum non nocere"

   Wiele jest interesujących doświadczeń i wynikłych z nich zastosowań, w których do portów pierwotnie przeznaczonych do joysticków przyłącza się inne, nietypowe układy. Atari nie należy do komputerów psujących się zbyt łatwo, jednak w nietypowych aplikacjach pojawia się realne niebezpieczeństwo, jeśli nie są przestrzegane pewne zasady.

  • Układy i ew. przyrządy zewnętrzne (np oscyloskop) przyłączamy do gniazda komputera tylko przy wyłączonym zasilaniu. Mimo, że zarówno komputer, jak i np. oscyloskop mają transformatory oddzielające, to na ogół nie docenia się roli pojemności między uzwojeniem pierwotnym i wtórnym. Prądy płynące przez te pojemności mogą być wystarczające do spowodowania nieodwracalnych uszkodzeń układów komputera w momencie wkładania wtyku do gniazda.
  • Z wyżej wymienionych względów zdecydowanie nie można też dotykać lutownicą żadnych elementów połączonych galwanicznie z gniazdem komputera.
  • Można zasilać układy zewnętrzne napięciem 5V dostępnym na gnieździe joysticka, jeśli pobór prądu nie przekracza ok. 50mA. Przed przyłączeniem do komputera nie od rzeczy jest przetestować taką przystawkę z innym zasilaczem 5V.
  • Obciążeniem danej linii z PIA może być najwyżej jedno wejście układu TTL lub ekwiwalentny układ na elementach dyskretnych. Jeszcze lepiej stosować układy CMOS.
  • Jeśli dołącza się układy z zasilaniem własnym, w których (choćby w stanie awaryjnym) mogą do gniazda komputera dostać się napięcia powyżej 5V, jedynym niezawodnym rozwiązaniem jest stosowanie transoptorów.

    LITERATURA:

    1. P.Strzelecki, W.Zientara "Porty joysticków" cz.1 i 2; Bajtek nr 2 i 4 1988
    2. Prokopowicz W., Sobolewski G. "Chronokomparator do sprawdzania chodu zegarków" - Radioelektronik nr 3 1991
    3. m&a, J.B. Wiśniewski "Centronics dla ATARI XE/XL"; Komputer, nr 9 1988
    4. Ian Chadwick, "Mapping the Atari", COMPUTE Books Publication
    5. Zientara W. "Poradnik Programisty Atari" wyd. SOETO 1989

    Witold Prokopowicz



  • Powrót na start | Powrót do spisu treści | Powrót na stronę główną

    Pixel 2001