eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.misc.elektronika › Eksperymenty ze starymi procesorami - MOS6502
Ilość wypowiedzi w tym wątku: 122

  • 101. Data: 2018-06-08 09:04:09
    Temat: Re: Eksperymenty ze starymi procesorami - MOS6502
    Od: "J.F." <j...@p...onet.pl>

    Dnia Fri, 8 Jun 2018 08:43:31 +0200, Atlantis napisał(a):
    > On 02.06.2018 18:53, Grzegorz Kurczyk wrote:
    >> Pisałem o tym trochę wcześniej. Możesz spokojnie użyć peryferiów Intela.
    >> Magistrala 6502 jest synchroniczna. Zapis do na magistralę następuje
    >> przy opadającym zboczu Fi2 przy aktywnym stanie niskim sygnału R/W.
    >
    > Mam jeszcze jedno pytanie, związane z tym tematem.
    > W roli kontrolera szeregowego używam układu 8251, z 8253 używanym w roli
    > baudrate generatora. I teraz pytanie: czym taktować te układy?
    > Powinienem wziąć sygnał zegarowy z Fi1 albo Fi2 procesora, czy też
    > najlepiej będzie podać sygnał brany bezpośrednio z generatora (a
    > właściwe dzielnika za nim)?

    Rodzina 82xx jest raczej asynchroniczna, szczegolnie 8251, ktory
    potrzebuje zegarow dopasowanych do transmisji, i wlasnie 8253, jesli
    on ma te zegary generowac. Nie bez powodu w pececie pojawil sie
    dodatkowy kwarc, 1.8costam.
    A nie chcesz uzyc tego "pecetowego" ... 8250 ?

    Natomiast ... tak mi cos chodzi po glowie, ze
    -ktorys uklad wymagal doprowadzenia sygnalu zegarowego, bo mial
    "konstrukcje dynamiczna" ... czy to wlasnie nie 8251 ?
    pdf trzeba doczytac.
    Byle jaki mial to byc zegar, byle dopuszczalnym w zakresie
    czestotliwosci sie miescil, ale najprosciej z procka pociagnac

    -moze sie okazac, ze cos tam jest sprawdzane w okreslonej fazie
    zegara, jak np linie przerwan w procesorze. Akurat magistrali
    peryferiow intela to nie powinno dotyczyc.

    J.


  • 102. Data: 2018-06-08 11:56:32
    Temat: Re: Eksperymenty ze starymi procesorami - MOS6502
    Od: Atlantis <m...@w...pl>

    On 08.06.2018 09:04, J.F. wrote:

    > Rodzina 82xx jest raczej asynchroniczna, szczegolnie 8251, ktory
    > potrzebuje zegarow dopasowanych do transmisji, i wlasnie 8253, jesli
    > on ma te zegary generowac. Nie bez powodu w pececie pojawil sie
    > dodatkowy kwarc, 1.8costam.

    To nie zmienia faktu, że 8251 posiada trzy wejścia zegarowe: TXC, RXC i
    CLK. Do dwóch pierwszych podłącza się sygnał z baudrate generatora. CLK
    ma być natomiast taktowany z zegara systemowego. W urządzeniach na 8080
    podłączało sie tutaj wyjście zegarowe TTL układu 8224.
    Chciałem jedynie wiedzieć skąd wziąć ten sygnał w systemie opartym na
    6502. Do wyboru mam wyjście generatora (to samo, do którego podłączone
    jest wejście Fi0 procesora) albo jedno z wyjść Fi1 i Fi2.

    A w pecetach dodatkowy kwarc pojawiał się chyba tylko po to, żeby można
    było tam łatwo zastosować częstotliwość dzielącą się bez reszty do
    standardowej prędkości portu szeregowego. W moim przypadku nie ma to
    wielkiego znaczenia, bo główny generator ma być napędzany kwarcem 4.032
    MHz, który potem będzie dzielony przez 2 lub 4 (do wyboru zworką, w
    zależności od typu procesora). Ta częstotliwość ładnie się dzieli na
    potrzeby UART-a.

    Podobne rozwiązanie zastosowałem w projekcie na MCY7880.


    > A nie chcesz uzyc tego "pecetowego" ... 8250 ?

    Parę sztuk 8251 oraz 8253 mam pod ręką. ;)


    > Natomiast ... tak mi cos chodzi po glowie, ze
    > -ktorys uklad wymagal doprowadzenia sygnalu zegarowego, bo mial
    > "konstrukcje dynamiczna" ... czy to wlasnie nie 8251 ?
    > pdf trzeba doczytac.

    Tak. Właśnie 8251 posiada pin CLK, do którego podpinało się zegar systemowy.


    > Byle jaki mial to byc zegar, byle dopuszczalnym w zakresie
    > czestotliwosci sie miescil, ale najprosciej z procka pociagnac

    Nie ma tutaj potrzeby zachowani synchroniczności czy coś? Nie ma
    znaczenia którego"Fi" użyję?


  • 103. Data: 2018-06-08 12:05:25
    Temat: Re: Eksperymenty ze starymi procesorami - MOS6502
    Od: ajt <a...@a...com.pl>

    W dniu 2018-06-08 o 11:56, Atlantis pisze:
    >
    > Tak. Właśnie 8251 posiada pin CLK, do którego podpinało się zegar
    systemowy.
    >
    >
    >> Byle jaki mial to byc zegar, byle dopuszczalnym w zakresie
    >> czestotliwosci sie miescil, ale najprosciej z procka pociagnac
    >
    > Nie ma tutaj potrzeby zachowani synchroniczności czy coś? Nie ma
    > znaczenia którego"Fi" użyję?
    >Nie ma znaczenia, ten zegar jest wyłącznie do taktowania części
    nadawczo-odbiorczej.
    --
    Pozdrawiam
    Andrzej
    www.radom.city


  • 104. Data: 2018-06-08 12:41:27
    Temat: Re: Eksperymenty ze starymi procesorami - MOS6502
    Od: "J.F." <j...@p...onet.pl>

    Użytkownik "Atlantis" napisał w wiadomości grup
    dyskusyjnych:5b1a52d1$0$610$6...@n...neostrada.
    pl...
    On 08.06.2018 09:04, J.F. wrote:
    >> Rodzina 82xx jest raczej asynchroniczna, szczegolnie 8251, ktory
    >> potrzebuje zegarow dopasowanych do transmisji, i wlasnie 8253,
    >> jesli
    >> on ma te zegary generowac. Nie bez powodu w pececie pojawil sie
    >> dodatkowy kwarc, 1.8costam.

    >To nie zmienia faktu, że 8251 posiada trzy wejścia zegarowe: TXC, RXC
    >i
    >CLK. Do dwóch pierwszych podłącza się sygnał z baudrate generatora.
    >CLK
    >ma być natomiast taktowany z zegara systemowego. W urządzeniach na
    >8080
    >podłączało sie tutaj wyjście zegarowe TTL układu 8224.
    >Chciałem jedynie wiedzieć skąd wziąć ten sygnał w systemie opartym na
    >6502. Do wyboru mam wyjście generatora (to samo, do którego
    >podłączone
    >jest wejście Fi0 procesora) albo jedno z wyjść Fi1 i Fi2.

    http://www.nj7p.org/Manuals/PDFs/Intel/205222-002.pd
    f

    No i ciekawie pisza
    No external inputs or outputs are referenced to CLK, but the frequency
    of CLK
    must be greater than 30 times the Receiver or Transmitter data bit
    rates.

    ale w tabelce na stronie 15 (2-18) ... clock Period
    min 320, max 1350 ns. Czyli jakies 0.75-3MHz.

    >A w pecetach dodatkowy kwarc pojawiał się chyba tylko po to, żeby
    >można
    >było tam łatwo zastosować częstotliwość dzielącą się bez reszty do
    >standardowej prędkości portu szeregowego.

    Zapewne.
    Byc moze juz im tez chodzilo, ze systemowe zegary bedą rożnej
    predkosci, wiec nie mozna na nich polegac.

    >W moim przypadku nie ma to
    >wielkiego znaczenia, bo główny generator ma być napędzany kwarcem
    >4.032
    >MHz, który potem będzie dzielony przez 2 lub 4 (do wyboru zworką, w
    >zależności od typu procesora). Ta częstotliwość ładnie się dzieli na
    >potrzeby UART-a.

    Zalezy.
    Jak chcesz 1200, zegar ma byc *16, to sie dzieli ladnie przez 210.
    Jak chcesz 2400, to trzeba podzielic przez 105 ... i juz nie mozna
    najpierw podzielic przez 2.
    Jak chcesz 9600 ... to nie z tym kwarcem :-(


    Podobne rozwiązanie zastosowałem w projekcie na MCY7880.

    J.


  • 105. Data: 2018-06-08 14:41:45
    Temat: Re: Eksperymenty ze starymi procesorami - MOS6502
    Od: Atlantis <m...@w...pl>

    On 08.06.2018 12:41, J.F. wrote:

    > Zalezy.
    > Jak chcesz 1200, zegar ma byc *16, to sie dzieli ladnie przez 210.
    > Jak chcesz 2400, to trzeba podzielic przez 105 ... i juz nie mozna
    > najpierw podzielic przez 2.
    > Jak chcesz 9600 ... to nie z tym kwarcem :-(

    Hmm... Teraz właśnie jeszcze raz na to patrze i faktycznie, wygląda na
    to, że zegar 2000000 Hz jest dużo lepszym rozwiązaniem. Po podzieleniu
    przez 13 (8253), a potem jeszcze przez 16 (wewnątrz 8251) uzyskam
    baudrate w okolicy 9615.

    Okazuje się, że w komputerze z MCY7880 również powinienem podmienić
    kwarc na 18 MHz. Wtedy także będę miał zegar 2MHz i identyczną sytuację.
    W chwili obecnej mam kwarc 18.432MHz, co daje zegar 2.048 MHz i baudrate
    około 9846... O dziwo działa...

    Tak to jest, gdy kopiuje się rozwiązania z internetu, bez przeliczenia
    na wszelki wypadek...


  • 106. Data: 2018-06-08 14:53:41
    Temat: Re: Eksperymenty ze starymi procesorami - MOS6502
    Od: "J.F." <j...@p...onet.pl>

    Użytkownik "Atlantis" napisał w wiadomości grup
    dyskusyjnych:5b1a798a$0$681$6...@n...neostrada.
    pl...
    On 08.06.2018 12:41, J.F. wrote:
    >> Jak chcesz 2400, to trzeba podzielic przez 105 ... i juz nie mozna
    >> najpierw podzielic przez 2.
    >> Jak chcesz 9600 ... to nie z tym kwarcem :-(

    >Hmm... Teraz właśnie jeszcze raz na to patrze i faktycznie, wygląda
    >na
    >to, że zegar 2000000 Hz jest dużo lepszym rozwiązaniem. Po
    >podzieleniu
    >przez 13 (8253), a potem jeszcze przez 16 (wewnątrz 8251) uzyskam
    >baudrate w okolicy 9615.

    >Okazuje się, że w komputerze z MCY7880 również powinienem podmienić
    >kwarc na 18 MHz. Wtedy także będę miał zegar 2MHz i identyczną
    >sytuację.
    >W chwili obecnej mam kwarc 18.432MHz, co daje zegar 2.048 MHz i
    >baudrate
    >około 9846... O dziwo działa...

    Do 5% roznicy na krotkim kablu te uklady toleruja.
    Odbiornik lapie poczatek bitu startu, odczekuje pol bitu czasu, i
    lapie wartosc w polowie bitu.
    Mozna sie o te pol bitu przestawic, a poniewaz bitow ok 10, to 5%,
    no - 4% jeszcze dopuszcza.

    >Tak to jest, gdy kopiuje się rozwiązania z internetu, bez
    >przeliczenia
    >na wszelki wypadek...

    Albo ... po co jakies 8253 - uzyj DDS :-)

    J.


  • 107. Data: 2018-06-10 21:49:04
    Temat: Re: Eksperymenty ze starymi procesorami - MOS6502
    Od: Atlantis <m...@w...pl>

    Udało mi się złożyć prosty komputerek z MOS6502AD. W tej chwili
    konfiguracja wygląda następująco:
    - 32kB RAM, adresowany bezpośrednio (pierwsza połowa przestrzeni adresowej).
    - 16 kB pamięci EPROM (ostatnia ćwiartka przestrzeni adresowej)
    - dekoder adresów na układach TTL-LS
    - szyna adresowa buforowana przez dwa układy 74LS245
    - port równoległy 8255
    Poza tym na płytce znajdują się na razie nie obsadzone podstawki pod:
    - dodatkowy chip pamięci RAM, dostępny jako cztery banki po 8kB
    - port wyjściowy na 74LS373 do sterowania powyższym
    - timer 8253 oraz UART 8251

    Sygnały !WR oraz !RD na potrzeby pamięci oraz intelowskich peryferiów są
    generowane przez następujący układ:
    http://wilsonminesco.com/6502primer/RDnotWRnotCkt.jp
    g

    Podczas wstępnego rozruchu nie obyło się bez wpadki - okazało się, że
    odwrotnie podłączyłem zasilanie do 8255. Popłynął za dużo prąd - nie na
    tyle duży, żeby przepalić 3A bezpiecnzik, ale drucik wewnątrz się lekko
    rozżarzył. Na wszelki wypadek po tym incydencie wymieniłem 8255 i CPU na
    inne egzemplarze.

    Na chwilę obecną układ przeszedł test "pracy na luzie" - podciągnąłem
    linie danych za pomocą rezystorów, układając wartość 0xEA (NOP). Szyna
    adresowa w tej sytuacji zachowuje się prawidłowo - na kolejnych liniach
    pojawiają się impulsy o dwa razy większej długości niż na linii
    poprzedniej. Dekoder adresów w tej sytuacji także zdaje się działać
    prawidłowo, generując impulsy stanu niskiego we właściwej sekwencji.

    Natomiast za nic nie udało mi się uruchomić programu. W EPROM-ie siedzi
    w tej chwili coś takiego:

    CTRLREG EQU $9000
    PA_8255 EQU $9200
    PB_8255 EQU $9201
    PC_8255 EQU $9202
    CONF_8255 EQU $9203

    .ORG $C000
    INIT:
    LDX #$FF
    TXS
    LDA #$80
    STA CONF_8255 ;tryb 0, wszystkie porty wyjsciowe
    LOOP:
    LDA #$01
    STA PA_8255
    JSR DELAY
    LDA #$00
    STA PA_8255
    JSR DELAY
    JMP LOOP
    DELAY:
    LDY #$FF
    DELAY_LOOP1:
    LDX #$FF
    DELAY_LOOP2:
    DEX
    BNE DELAY_LOOP2
    DEY
    BNE DELAY_LOOP1
    RTS
    IRQ:
    RTI

    NMI:
    RTI
    .ORG $FFFA
    DW NMI
    DW INIT
    DW IRQ

    Program powinien "machać" stanem pinu PA0 układu 8255. Niestety, nie
    robi tego. Oscyloskop pokazuje aktywność na liniach adresowych i danych,
    a także na !WR !RD. Niestety linia CS sterująca 8255 jest nieaktywna,
    podobnie jak wszystkie linie z obszaru I/O. Podczas pracy "na luzie"
    linie te regularnie przełączały się na moment w stan niski.

    Wstępnie sprawdziłem połączenia, przedzwaniając połączenia multimetrem.
    Sprawdziłem też inny EPROM.

    Ktoś ma jakiś pomysł? Może błąd tkwi w moim kodzie?


  • 108. Data: 2018-06-10 23:31:08
    Temat: Re: Eksperymenty ze starymi procesorami - MOS6502
    Od: ajt <a...@a...com.pl>

    W dniu 2018-06-10 o 21:49, Atlantis pisze:
    > Wstępnie sprawdziłem połączenia, przedzwaniając połączenia multimetrem.
    > Sprawdziłem też inny EPROM.
    >
    > Ktoś ma jakiś pomysł? Może błąd tkwi w moim kodzie?
    >
    Może upewnij się, czy wszystko trafia do EPROMu tam gdzie trzeba.
    --
    Pozdrawiam
    Andrzej
    www.radom.city


  • 109. Data: 2018-06-11 07:59:48
    Temat: Re: Eksperymenty ze starymi procesorami - MOS6502
    Od: "J.F." <j...@p...onet.pl>

    Dnia Sun, 10 Jun 2018 21:49:04 +0200, Atlantis napisał(a):
    > Udało mi się złożyć prosty komputerek z MOS6502AD. W tej chwili
    > - dodatkowy chip pamięci RAM, dostępny jako cztery banki po 8kB
    > - port wyjściowy na 74LS373 do sterowania powyższym

    Uzyj ten port do testow

    > Natomiast za nic nie udało mi się uruchomić programu. W EPROM-ie siedzi
    > w tej chwili coś takiego:

    uprosc do

    > CTRLREG EQU $9000
    > PA_8255 EQU $9200
    > PB_8255 EQU $9201
    > PC_8255 EQU $9202
    > CONF_8255 EQU $9203
    >
    > .ORG $C000
    > INIT:
    > LDX #$FF
    > TXS
    > LDA #$80
    > STA CONF_8255 ;tryb 0, wszystkie porty wyjsciowe
    > LOOP:
    LDA #$05
    > STA PA_8255
    LDA #$FA
    > STA PA_8255
    > JMP LOOP

    > IRQ:
    > RTI
    >
    > NMI:
    > RTI
    > .ORG $FFFA
    > DW NMI
    > DW INIT
    > DW IRQ
    >
    > Program powinien "machać" stanem pinu PA0 układu 8255. Niestety, nie
    > robi tego. Oscyloskop pokazuje aktywność na liniach adresowych i danych,
    > a także na !WR !RD. Niestety linia CS sterująca 8255 jest nieaktywna,
    > podobnie jak wszystkie linie z obszaru I/O.

    Oscyloskop z pamiecia masz ? najlepiej 4 kanaly :-)
    To moze analizator Salae ?

    -zobacz co sie dzieje na liniach adresowych - program chodzi w kolko,
    to powinien byc w miare stabilny wzor na kilkanascie adresow,
    po moich poprawkach jeszcze stabilniejszy

    -masz teraz zapis adresu na stos - powinny sie regularnie !WR
    pojawiac, i to tak w cyklach po 3 - zapis do 8255, potem dwa do RAM.
    Ale bardzo rzadko - masz dlugie petle.

    W moim tylko do 8255 i to czesto.

    -jakie sa adresy w trakcie tych !WR

    -dodaj w petli STA $0010 - bedzie mozna uzyc !WR RAM czy A15 do
    wyzwalania oscyloskopu, nawet analogowego

    -dodaj uklad pracy krokowej :-)

    -czy na pewno dobrze EPROM zaprogramowales ?
    Program jest w zakresie C000-FFFF, trzeba wpisac w 0000-3FFF kosci.

    J.


  • 110. Data: 2018-06-12 08:06:48
    Temat: Re: Eksperymenty ze starymi procesorami - MOS6502
    Od: Atlantis <m...@w...pl>

    Okazało się, że winę ponosił uszkodzony procesor. O ile zachowywał się
    prawidłowo podczas pracy na luzie, to po odpalaniu programu przez chwilę
    zachowywał się dziwnie, a potem w ogóle przestawał pracować - aktywność
    na liniach adresowych zamierała.
    Po podmianie na inny egzemplarz MOS6502 wszystko zaczęło działać tak,
    jak powinno. Pozostało mi teraz tylko odpalenie UART-a. Potem spróbuje
    przeportować i uruchomić którąś wersję MS Basic, a także dopisać obsługę
    ładowania programów przez port szeregowy. Gdy będzie mi się chciało,
    może dorobię interfejs magnetofonowy. ;)

strony : 1 ... 10 . [ 11 ] . 12 . 13


Szukaj w grupach

Szukaj w grupach

Eksperci egospodarka.pl

1 1 1

Wpisz nazwę miasta, dla którego chcesz znaleźć jednostkę ZUS.

Wzory dokumentów

Bezpłatne wzory dokumentów i formularzy.
Wyszukaj i pobierz za darmo: