SBC6502 - 3. 7 chip computer. 32kB RAM+8255. Name:"Erika0".

By Administrator at februára 02, 2016 18:05
Filed Under: SBC6502

 

Tááák a máme tu SBC6502 spolu zo zapojeným čipom 8255. Nakoniec to teda už bude vo výsledku celých 10 čipov, ale základ 7 čipov zostáva bezo zbytku - len pribudne ďalšie bižu. Počítač vyzbrojený čipom 8255 má k dispozícii 3x 8bit brány, nastaviteľné ako vstupné, alebo výstupné, alebo aj ako zmiešané. A takáto mašinka už dokáže údaje zbierať, vyhodnocovať a riadiť. Povedal som si že tento počítač aj pomenujem - takže SBC6502 "Erika0", keď sú v tom vlastné prsty a vlastná hlava. Použité poradie v tomto prípade nechám na Vás.

 

Nakoniec - dnes je Eriky ...a aj moja manželka je Erika.

 

Potrebné zmeny sú nasledujúce:

 

Treba zmeniť reset (v schéme je to nakreslené zrozumiteľne), zapojenie je vcelku jednoduché, reset sa vyvoláva pomocou čipu 555 a negovaním výstupu cez jedno hradlo čipu 74LS00 máme potom k dispozícii potrebný reset aj pre čip 8255. Potrebujeme ešte jeden čip - 74LS138, je to adresný dekodér. Tu v tomto zapojení je čip namapovaný hneď za RAM, t.j. základné 7-čipové zapojenie sa vôbec nemení, iba proste pridáme ďalšie 3 čipy a meníme zapojenie tlačítka Reset. Na úvodnom obrázku je vidieť ako sú rozložené jednotlivé čipy, na pravej strane sú konektory (J1, J2, J3), kde sú vyvedené jednotlivé porty a je tam jeden dlhý konektor (J4). Tým že je J4 taký veľký tak sa tam vojdú všetky vývody jednotlivých portov (ak treba), tak isto je tam možné pridať doteraz nepoužité vývody chip selectov a aj riadiace signály, konektor je dostatočne dlhý aby sa tam všetko toto vošlo a ešte zostane voľné miesto aj tak. Čo všetko si reálne dáte na J4-ku je na Vás. Ja som ho volil preto taký veľký (má 2x 17 vývodov, t.j. 34 pinov), že má slúžiť ako "samonosný", t.j doštička čo sa do neho založí a už nie je ničím iným podopretá. Takže dostatočne dlhý konektor = dostatočný počet voľných vývodov na rôzne použitie + netreba držiak na vloženú doštičku. Nakoniec som tam priviedol aj napájanie +5V. Proste som chcel aby sa počítač  a jeho periférie ešte dali ďalej rozšíriť ak to bude potrebné. A na univerzálke si tam pripojíte a zapojíte iba to pre Vás potrebné podľa Vašich potrieb. Konektoru J4 sa už nebudem v tomto dieli venovať, ale príde na neho rad v niektorom z ďalších dielov. Je tu aj tzv. activity indicator - dva tranzistory spolu s dvomi hradlami z obvodu 74LS00 a červenou a oranžovou LED, ktoré indikujú posielanie dát cez linku RS232 (výhoda ? - nemusíte mať zapnutý monitor a vidíte aj tak či sa dáta posielajú jedným a aj druhým smerom.).


Dnes fotkami budem trošku skrbliť - pohľad na počítač SBC6502 Erika0 otočený o 180° oproti úvodnej fotografii:


Tu ešte nie je zapojený nový reset, proste išiel som v step by step režime, čiže je to staršia fotka ako je

v úvode článku. Proste ešte som len hľadal optimálne zapojenie jednotlivých komponentov na doske.

(Otočené o 180°.)

 

Nasleduje zapojenie počítača SBC6502 "Erika0":

SBC6502ver1_1.PNG (109,87 kb)

 

Zapojenie ako na to už máme, ale to nestačí, čip 8255 treba vedieť aj ovládať (musíme mať aj nejaké programové vybavenie) - tu je to veľmi jednoduché, v Basicu nám na to stačia iba jednoduché príkazy Peek a Poke. Obvod 74LS138 nám mapuje výstupy pekne po 1kB od adresy 32768d (8000h), ja používam hneď prvý výstup, ostatných 7 je voľných pre Vaše ďalšie použitie, proste adresácia beží na čipe po 1kB. Áno - je to plytvanie pamäťovým miestom - ale nezabúdajme že doteraz, teda v nultej verzii je to priestor ktorý je absolútne nevyužitý, nepoužitý a nepoužívaný - a tak si z neho jednu 1kB časť v pohodičke "čmajznem" pre svoje veci. "Sadisti" ktorí nevedia čo zo sebou môžu osadiť trebárs ďalších 7 čipov 8255 - ale bacha, potom nestačí iba jedna univerzálna doska (a ani neviem načo by bolo dobrých toľko ovládaných kusov 8255) - tak isto sa dá osadiť čip 6520 - ale tam potom máte v jednom čipe iba 2x 8bitovú bránu - a tak isto potrebujete iné ovládanie portu - tu to nerozoberám.

 

Prikladám tabuľku adresácie výstupov 74LS138 v tomto zapojení, používam iba výstup na pine č.15:

 

 

Dobre, toto máme za sebou a pokračujeme ďalšou časťou, kde si povieme že na ovládanie čipu 8255 slúžia 4byty, prvé tri sú konkrétne portA, portB a portC, štvrtý byte je tzv. riadiace slovo, ktoré určuje ako sa čip bude správať (CWR):


 

Čiže najprv musíme nastaviť riadiacie slovo a poslať ho do riadiaceho registra. Napríklad ak chceme aby boli všetky porty A, B, C nastavené ako výstupné, potom musíme poslať na adresu 32771d (8003h) číselný obsah 128.

 

Vlastne v Basicu je to potom tento príkaz:

 

POKE 32771,128

 

Nuž a potom posielame potrebný obsah:

- na port A príkazom POKE 32768,X kde X = naše potrebné číslo v dekadickom tvare (0÷255)

- na port B príkazom POKE 32769,X kde X = naše potrebné číslo v dekadickom tvare (0÷255)

- na port C príkazom POKE 32770,X kde X = naše potrebné číslo v dekadickom tvare (0÷255)

 

Áno, možno to vyzerá trošku nezrozumiteľne ale len do okamžiku ak si pozrieme tabuľku riadiaceho registra, tu nám už začne byť jasné ako si vieme jednotlivé porty nastaviť.


Chcete mať dva porty vstupné a jeden výstupný ?

 

- do riadiaceho registra zadáte číslo 137, teda POKE 32771,137, potom je port A a port B výstupný, na port A zapisujeme POKE(32768),X na port B zapisujeme príkazom POKE(32769),Y, port C je vstupný, z portu C čítame príkazom ? PEEK(32770)

  (X a Y nadobúda hodnotu 0 až 255)

 

Chcete mať všetky porty vstupné ?


- do riadiaceho registra zadáte číslo 155, teda POKE 32771,115, potom sú porty A, B, C vstupné, z portu A čítame príkazom  napríklad  ? PEEK (32768), z portu B čítame ? PEEK(32769)a z portu C čítame príkazom ? PEEK(32770)


Čiže z vybratého 1kB priestoru nám vlastne stačia 4 byty ...

Tu si to plytvanie pamäťovým priestorom ale môžem dovoliť.


A teraz na ovládanie tohoto čipu máte reálne k dispozícii voľných celých 32kB RAM - možno to znie úsmevne ale je to naozaj hodne miesta na hodne vecí. A zvládne tento stroj bežať aj bez Arduina ...Wink - pretože ukladanie basicovských príkazov prebieha komprimovane (tokenizuje sa) - tak v skutočnosti program môže byť reálne o cca 30% dlhší a stále sa vojde do pamäte.

 

Rozmiestnenie konektorov na doske SBC6502 "Erika0". Ani tu ešte nie je  použitý nový

resetovací obvod.  V tejto dobe ma "trápil" DC/DC menič (len som ešte o tom nevedel).

_______________________________________________________________________________

Popis SBC6502 "Erika0" activity indicator:

Na predný panel som mimo indikácie napájania (zelená LED) vyviedol ešte dve LED-ky - červenú a oranžovú. Červená slúžia na indikáciu prenosu Tx - t.j. zo zariadenia smerom von, oranžová zase indikuje prenos Rx, .t.j. smerom do zariadenia. Pretože na obvode 68B50 je Tx a RX v kľudovej polohe v log.1, treba použiť 2 hradlá obvodu 74LS00 na invertovanie signálu. Ak nahrávame program tak LED-ky veselo poblikávajú, pri posielaní údajov smerom von bliká iba červená LED. Je to celkom dobré na sledovanie stavu zariadenia, netreba potom mať stále zapnutý monitor. Pozor, táto verzia ponúka len veľmi krátke záblesky LED (ideme na 115.200Bd !) Tu som to nechcel "komplikovať" nejakým zložitejším zapojením a dumať nad nejakým monostabilným klopným obvodom, v ďalšom už je to použité, ale aj v tejto verzii to ako základná indikácia postačuje. Ak použijete nižšiu prenosovú rýchlosť tak sa dĺžka zábleskov úmerne predlžuje.


Použité LED a púzdra na ne sú zkanibalizované zo starého PC (tak isto aj tlačítko Reset) - konečne sa pre ne našlo nejaké rozumné využitie ...


Celé activity indicatoru nie je potrebnou súčasťou stavby SBC6502, takže rozhodnutie o tom či si vylepšíte zariadenie o túto indikáciu je iba na Vás.

____________________________________________________________

Opravený odstavec 23.07.2018.


Prenosová rýchlosť na porty 8255:

Pri mojich testoch dokázal počítač SBC6502 "Erika0" zapisovať a čítať v Basicu na port napríklad A čipu 8255 rýchlosťou cca 533 byte/sec (uvedená hodnota platí pre x-tal = 1.8432MHz - pri použití polovičnej rýchlosti hodín by bolo treba tu uvedený údaj deliť/2) - je to dané Basicom, ale na jednoduché riadenie to rozhodne postačuje. Iste, je to dané tým ako je napísaný program, tu som na test použil najjednoduchšiu slučku - a preto je aj najrýchlejšie. Ak budete posielať naraz na 3 porty tak rýchlosť klesne na 1/3. Tu sa musím ospravedlniť za údaj ktorý tu doteraz svietil - niečo cez 150byte/sec, to platí ak sa posielajú data naraz na všetky 3 porty - nejako mi to tu vypadlo pri písaní pôvodného textu. Hodím to na svoj vek, aspoň niekedy sa mi to hodí. Veselšia vec pri tejto mojej (už opravenej) chybe je to, že SBC6502 je reálne rýchlejší ako som tu predtým písal pri práci s portami - a to asi nikomu nebude vadiť.

Testovací program je veľmi jednoduchý, nastaví všetky 3 porty ako výstupné a konkrétne posiela data von iba cez port A. Analogicky dtto sa deje ak by sme port nastavili na čítanie smerom dovnútra (toto test pre jednoduchosť ale nerieši - a ani to netreba).

 

10 REM TEST SPEED PORT A DATA OUT
11 REM chip 8255, Port A = PA
12 REM chip 8255, Port B = PB
13 REM chip 8255, Port C = PC
14 REM Command register = CR

15 PA=32768

16 PB=32769

17 PC=32770

18 CR=32771

19 POKE CR,128:REM PORT A,B,C = DATA OUT
20 FOR A=0 TO 200
30 FOR F=0 TO 255:POKE PA,F:NEXT F
40 NEXT A


Test stopnutý po 1 minúte (CTRL+C), potom výpis ?A a ?F, nasleduje vzorec (Ax256+F)/60 = počet byte/sec. Tu v tomto prípade konkrétne bolo A=129 a F=193.

 

Ak si chcete stopnúť na dobre napísanej slučke posielanie 0 a 1 na port A - zoberiete pôvodný testovací program, vymažete riadky 20, 30 a 40 a dopíšte nasledovný riadok:


20 FOR A=0 TO 50000:POKE PA,0:POKE PA,1:NEXT A

 

Zase test stopnutý po 1 minúte - ?A vypísalo A=19293, teda vzorec A/60= 321 byte/sec. Ani to nie je zlé číslo na Basic, zvlášť ak uvážime že už posielame na port údaje 2x za sebou.

 

Ak pošlete údaje na všetky 3 porty:


20 FOR A=0 TO 20000:POKE PA,0:POKE PB,0:POKE PC,0:NEXT A

dostaneme sa na údaj cca 249 byte/sec.


Áno, je to akademické, pretože posielam v slučke to isté. Ale inak nejaké tie údaje z toho nevytlčiem. V reálnej prevádzke číslo klesne, ale aj tak je dobré vedieť ak si správne navrhneme program že sa dajú dosiahnuť celkom zaujímavé čísla. Rozhodne na nejaké jednoduché a nenáročné riadenie takáto SBC6502 bez najmenších problémov bude vyhovovať aj s ovládaním napísaným v Basicu - vlastne toto som celým tým chcel dokázať.

____________________________________________________________

Komu by táto "hviezdna" rýchlosť nestačila - má k dispozícii na riadenie ešte strojový kód kde to potom fičí na úplne iných obrátkach. Ale aj tak to na mnoho nastavovačiek rýchlosťou bohato postačuje, nakoniec hodiny podľa mňa kľudne môžu ísť aj niekde okolo hodnoty 2.5MHz, celý SBC6502 to určite zvládne - akurát potom musíte oddeliť hodiny do 68B50 pretože tam musí ísť dovnútra stále 1.8432MHz. Čiže dá sa to urobiť za cenu oddelených hodín. Proste je to tu pole vhodné na experimentovanie. Ak je na vstupe pre procesor x-tal = 2.457MHz tak sa urýchli celý SBC6502 o celých 25% čo je už celkom zaujínavá hodnota. Naproti originálu (ten beží na x-tale = 1MHz) potom bežíme už skoro na 2.5x násobnej rýchlosti a to je už sakra zaujímavé číslo. Ako vidíte nebránim sa takýmto experimentom ak je výsledkom celkové urýchlenie SBC6502-ky.

Je to dané tým že mám k dispozícii procesor 65C02 ktorý beží až do 4MHz. Ak použijete v zapojení originál Atari čip 14809 (upravený procesor 6502C) tak ten by som v žiadnom prípade nehnal nad tých 1.8432MHz, pretože tento čip má o hodne vyšší odber a slušne "pečie" už na tomto kmitočte, netreba ho uvariť (v počítači Atari čip 14809 beží reálne na kmitočte 1.79MHz, čo je len nepatrný rozdiel - je to len o 53.2kHz nižšia hodnota oproti zapojeniu ak je použitý v SBC6502, takže takéto naozaj len veľmi mierne pretaktovanie ho v žiadnom prípade neohrozí.).

 

A nasleduje zase jedna zaujímavá vec - nameraná spotreba:

SBC6502 "Erika0", použitý procesor 65C02 + rozširujúca doska, spolu 10 čipov:

 

odber 70,7mA/12V = 848mW = celková spotreba
odber 132mA/5V = 660mW = vlastný odber SBC6502 "Erika0"

vlastná réžia DC/DC meniča = 848-660 = 188mW

Tu len dodám že na indikáciu som na motherboarde SBC6502 použil obyčajnú starú zelenú LED s odberom 20mA, teda z celého odberu môžete ak ju nepoužijete ešte odrátať celých 100mW (5V x 20mA), potom odber celej dosky na 5V klesne na 560mW - a to je už slušný rozdiel oproti napísanému, preto na to radšej upozorním.


Celkom rozumné hodnoty na tohoto drobčeka, nie ? Od spínaného zdroja som síce čakal vyššiu účinnosť, ale aj tak to nie sú zlé hodnoty.

________________________________________________________________________________

V ďalšom bude zase popis "radostí", ktoré ma sprevádzali pri tejto prestavbe a teda rozšírenia o púhe 3 čipy, mno -  rozhodne to bolo zaujímavé a dalo mi to zabrať viac ako by som bol čakal. Za niečo som si mohol sám, niečo bolo mimo mňa - ale to už tak býva. Ale stavbu mi to vo výsledku natiahlo o pekných pár dní - než som s tým bol spokojný. Mrňús jeden, dal mi zabrať.

 

Návrat do všetkých pokračovaní o SBC6502:

http://blog.3b2.sk/igi/post/SBC6502-0-UvodIntroduction.aspx

____________________________________________________________

Vaše hodnotenie, Rate post:

Comments

16. 6. 2018 18:56:34 #

trackback

Directory SBC6502

Directory SBC6502

Igi blog |

Comments are closed