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 8255A. Nakoniec to teda už bude mať vo výsledku na doske celých 10 čipov, ale základ 7 čipov zostáva bezo zbytku - len pribudne na základnej doske ďalšiu bižutériu. Počítač vyzbrojený čipom 8255A 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ť. (A časom napríklad postaviť vlastný programátor pre PROM 74188 a podobne.) 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 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 s negovaním výstupu cez jedno hradlo čipu 74LS00, na 555-ke máme potom k dispozícii potrebný reset už aj pre čip 8255A. Potrebujeme ešte jeden čip - 74LS138, to je 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 select 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 konektor 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ží už nie je ničím iným podopretá (samozrejme nemusí to tak byť). 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 - a keď treba aj môžete urobiť nejaké potrebné zmeny, univerzálka to dovoľuje. 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). Activity indicator nie je nutnou podmienkou fungovania, len som využil 2 voľné hradlá a pridal 2 tranzsitory.


Dnes fotkami budem trošku skrbliť - pohľad na počítač SBC6502 Erika0 otočený o 180° oproti úvodnej fotografii, osadený x-talový oscilátor v plastovom púzdre 8 pin:


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. Ešte som len hľadal optimálne zapojenie jednotlivých komponentov na doske. Na ľavej spodnej strane je osadený activity indicator (2 tranzistory). (Foto je otočené o 180°.)

 

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

SBC6502ver1_1.PNG (109,87 kb)

 


Vlastná binárka pre napálenie do Eprom 27128 alebo Eprom 27256 je k dispozícii v 5.časti pokračovania. 

 

Zapojenie ako na to tu už máme, ale to nestačí, čip 8255A treba vedieť aj ovládať (musíme k nemu mať aj nejaké programové vybavenie) - tu je to veľmi jednoduché, v jazyku Basic nám na to stačia iba 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 výstupov je voľných pre Vaše ďalšie použitie, proste adresácia beží na čipe 74LS138  po 1kB. Áno - je to plytvanie pamäťovým miestom - ale nezabúdajme že doteraz, teda v nultej verzii je to priestor ktorý bol doteraz 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 8255A - ale bacha, potom nestačí iba jedna univerzálna doska (a ani neviem načo by bolo dobrých toľko ovládaných kusov 8255A) - tak isto sa dá sem 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 ale nerozoberám.

 

Prikladám tabuľku adresácie výstupov 74LS138 v tomto zapojení, konkrétne 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 8255A 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)

 

Možno to vyzerá na prvý pohľad trošku nezrozumiteľne ale len do okamžiku ak si pozrieme tabuľku riadiaceho registra IC 8255A, tu nám už začne byť jasné ako si vieme jednotlivé porty nastaviť.

 

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

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

Všimnite si že port C môže mať 4 bity napr. vstupné a 4 výstupné.

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

 

- 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 ? PEEK (32768), z portu B čítame ? PEEK(32769)a z portu C čítame príkazom ? PEEK(32770)

(alebo prenesiem údaj priamo do premennej napríklad X, teda čítame X=PEEK(adresa portu))

 


Na ovládanie tohoto čipu máme reálne k dispozícii voľných mierne cez 31kB RAM (niečo berie systém pre svoj chod) - možno to znie úsmevne ale je to naozaj hodne miesta na hodne vecí. A tento stroj zvládne bežať aj trvale - Wink - pretože ukladanie basicovských príkazov prebieha komprimovane (tokenizuje sa) - tak v skutočnosti program môže byť reálne o cca 20 až 30% dlhší a pritom sa stále 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 ich  signálov. 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 (predsa len ideme na prenosovej rýchlosti 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, asi by sa tu dali osadiť supersvietivé typy kde potom stačí použiť zväčšený odpor pre LED = 2k2, tú sú osadené 20mA typy. Tým by sa následne zase ďalej zmenšil odber.


Použitie 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, ak to použijete, je pekne vidieť aktiváciu po Resete - prebehne základná komunikácia smerom von (pin TX), kratučko blikne červená  LED.

____________________________________________________________

Opravený odstavec 23.07.2018:


+ 25.09.2019 - doplnené o údaje SBC6502 pretaktované na hodnotu = 2.4576MHz, oscilátor pre čip 68B50 je stále =1.8432MHz


Prenosová rýchlosť na porty 8255A:

Pri mojich testoch dokázal počítač SBC6502 "Erika0" zapisovať a čítať v Basicu na port napríklad A čipu 8255A 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 to aj najrýchlejšie. Ak budete posielať naraz na 3 porty tak rýchlosť pochopiteľne o niečo klesne. 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ň tu sa táto výhovorka 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 - ale 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

______________

x-tal = 1.8432MHz

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.

Teda = 533 byte/sec.

______________

x-tal = 2.4576MHz

A=171, F=92

Teda = 731 byte/sec

______________

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

______________
x-tal = 1.8432MHz

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.

______________

x-tal = 2.4576MHz

Zase test stopnutý po 1 minúte - ?A vypísalo A=25701, teda vzorec A/60= 428 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 249 byte/sec.pri x-tal=18.8432MHz, pri x-tal=2.4576MHz je to 332byte/sec


Zase platí vzorec A/60= 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 tak 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 tým celý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ímavá 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.

 

***

Poznámka - 26.09.2019 - tak procesor z Atárka sa neupečie, naprosto v pohode beží na 2.4576 MHz už niekoľko dní bez akéhokoľvek prídavného chladenia a na dotyk nie je teplejší ako keď bežal na 1.8432MHz, moje obavy sa nepotvrdili.

***

 

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 5V x 20mA=100mW, 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 ? Pre spínaný DC/DC menič som síce čakal o niečo 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 |

Info o autorovi

Volám sa Igor Gramblička, bydlisko: Bratislava, Slovakia. Môj nick: Igi. Blog je o mojich záujmoch, predtým som pracoval ako IT špecialista na počítačové siete a redakčné systémy pre viaceré denníky - až som pred rokmi nakoniec v jednom z nich zakotvil a kde som to potiahol až do konca mojej profesnej kariéry.

Rok, mesiac, počet článkov: