SBC6502 - 2. 7 chip computer. 32kB RAM. Vlastná stavba.

By Administrator at januára 20, 2016 18:00
Filed Under: SBC6502

Stavba SBC6502 7 čipová verzia, popis stavby.

 

SBC6502 postavený v 7 čipovej verzii.

 

Upozornenie:

 

Správne by mali byť popísané niektoré veci v tomto článku asi v opačnom poradí, ale nakoniec som sa rozhodol že to nechám tak ako to je, proste je to v poradí  ako som článok postupne písal. Niektoré veci možno na prvý pohľad nedávajú v danom okamžiku zmysel, ja zase dúfam že to správne z popisu si aj v správnom poradí dokážete poskladať u seba v hlave - aj napriek popisu ktorý nie je zďaleka systematický. Takže buďte zhovievaví, potom som to už nechcel redigovať, možno to osvetlí niektoré - hrdo to nazvem "myšlienkové pochody" pri tom ako som sa to snažil rozchodiť.

Ďakujem.

 

Vlastná binárka pre napálenie do Eprom 27128 alebo ak použijete Eprom 2756 je k dispozícii v 5.časti pokračovania.

(Link priamo na stránky Searle Granta je v predchádzajúcej kapitole.) 


Napájací zdroj pre SBC6502 - napájanie z 12V, DC/DC menič 12V/5V:

Tak použitie DC/DC meniča 12V/DC/5V/DC sa ukázalo pri tejto stavbe SBC6502 ako najväčšia "hovadina" /ale potrebujem ho .../ z celého projektu, pritom som si tým vlastne len chcel uľahčiť robotu ... (Mať tých 12V priamo dostupných na motherboarde som zvažoval z dlhodobého hľadiska - pri dostavbe ďalších vecí.) Použitý DC/DC čip síce krásne vyrába potrebných 5V, ale pri použití vypínača na prívode od 12V tam boli také stavy (čo som zistil až dodatočne) že som až nadskakoval, pretože som ani vo sne netušil že to robí práve tento spínaný DC/DC zdroj 12V→5V. Proste SBC6502 raz nabehla, potom trebárs nabehla ešte 10x po sebe a šlus ! Jednoducho 5 minút nenabehlo nič, vôbec nič. Vypol som, počkal trebárs 5 minút a zase všetko išlo akoby sa nič nestalo. No, boli to stavy - pokúšal ma infarkt ... Tento stav som zo škrípaním zubov akceptoval pri 7 čipovej verzii, ale pri 10 čipovej verzii SBC6502 to proste naozaj kompletne prestalo rozumne chodiť. Hľadal som zo začiatku chybu všade inde, DC/DC zdroj som ale nepodozrieval (sic!). Skúsil som aj zväčšiť kapacitu na vstupe meniča, pridal som tam ešte 1000uF kondenzátor, ale nič sa nezmenilo. Myslel som si že mám problém niekde v drátkování prívodov, preto som konečne dosku umyl v liehu a - problém aj tak pretrval.

Hľadal som problém tam kde problém nebol ... 


Prvé, problémové zapojenie DC/DC meniča 12V/5V

 

Nepomohol ani nanovo postavený zložitejší reset, pretože som sa domnieval že ten "veľajednoduchý" pôvodný reset môže spôsobovať tieto problémy (omyl !, nebola to pravda, zase raz trefa vedľa) - tak som si dal celé 2 dni pauzu a potom ma napadlo prehodiť vypínač napájania až na výstup 5V z DC/DC meniča. Vzhľadom na to že je to na univerzálke tak táto zmena bola vcelku bezbolestná.


B i n g o  !


Všetky problémy zrazu zmizli. A dovtedy pri prepnutí a testoch absolútne nechodiaci a maximálne tvrdohlavo odolávajúci čip od Atari číslo popisné = 14806 tak isto okamžite poslušne "sklonil" hlavu a začal fungovať akoby po šibnutí čarovným prútikom a odvtedy funguje na jednotku v kuse. No, vydýchol som si, poriadne.

 

Druhé, už bezproblémové zapojenie DC/DC zdroja

 

Takže poučenia z toho plynúce:

- že aj ten mnou podozrievaný superjednoduchý reset s jedným odporom bol na 100% funkčný 

- spínané zdroje vedia byť občas pekné "svine"

- škoda len ak to musíte zistiť na vlastnej koži (pravdepodobne je to zvoleným, konkrétnym DC/DC meničom), tiež treba zobrať do úvahy že v zapojení idú vlastne dva DC/DC meniče "za sebou" /najprv 230V/AC → 12V/DC a potom ešte nasleduje druhá konverzia cez DC/DC menič 12→/5V, ale nakoniec nové umiestnenie vypínača to vyriešilo

- môžete použiť priamo napájanie z USB (do 0.5A je stále ešte slušná rezerva) a teda nemusíte použiť ako ja spínaný DC/DC zdroj 12→/5V (len keď potrebujete mať tých 12V priamo na SBC - môj prípad)

- ak môžete tak použite priamo iný, pre Vás dostupný 5V zdroj

- alebo potom hľadajte iného výrobcu spínaného DC/DC meniča, ak nie potom použite vypínač na nakreslenom mieste (ušetríte si tým kopu času hľadaním neskutočnej hovadiny ...)


Mne zabralo nájsť problém dobre cez týždeň, pretože som medzitým staval rozšírenie s obvodom 8255A a riešil som aj iné veci, proste tak nejako som dúfal že tým novým resetom sa problém "blbých" štartov dosky SBC6502 vyrieši, jednoducho som DC/DC menič za zdroj problémov nepokladal, moja chyba. Samozrejme, nevyriešilo sa to - musel som na to prísť pekne, postupne, ešteže ma z toho nekleplo, nuž ak sa spoľahnete na to že je zdroj na 100% v poriadku a neskontrolujete si to - máte zarobené na problém tak ako som si zarobil ja.


A ako som nakoniec na to prišiel ? Síce som ten spínaný zdroj na 5V vôbec nemeral na zákmity pri jeho pripojení na zdroj 12V, ale jednoducho ma napadlo proste pripojiť to priamo na iný 5V zdroj a SBC6502 naskočil okamžite a fungoval bez najmenších problémov ... a to vždy, po každý krát a to po zapnutí a aj po x-tý krát. Keď si na to pomyslím, naprosto by som na to rýchlo prišiel ak by som výstup z DC/DC meniča vtedy pripojil na osciloskop ... zase raz po bitke som aj ja generál. Teraz už viem že pri najmenších pochybnostiach o stave výstupu zo zdroja si to vždy hodím priamo na osciloskop - dá sa takto ušetriť skutočne veľa nervov, času a neprídete o chuť niečo vyvíjať a robiť.


Pri použití DC/DC meniča na 5V typu RECOM R-785.0-1.0 je povolené napájacie v rozsahu 6.5V÷18V/DC, povolený výstupný prúd je do hodnoty 1A (znesie preťaženie aj na vyššiu hodnotu, tu to ale rozhodne nehrozí). To je celkom dosť, hlavne ak viem že aj pri použití Atari procesoru ideme zo spotrebou tak do hodnoty cca 200mA, ak nasadíme viacej pamäte (40kB) tak s ním vylezieme maximálne na hodnotu tak cca 240mA. Ak použijeme procesor 65C02 tak sa na hodnotu 200mA ani pri rozšírení pamäte určite zďaleka nedostaneme (cca 120mA aj s pripojeným čipom 8255A). Z toho vyplýva, že stačí použiť menič s menším výstupným prúdom, konkrétne by tu stačil aj typ na prúd do hodnoty 0.5A. Jeho označenie je RECOM R-785.0-0.5, výhodou je väčší rozsah povoleného vstupného napätia, ktorý sa pohybuje v rozsahu 6.5V÷34V/DC. Mal som doma 1A verziu, do dosky išla teda tá silnejšia verzia a ako som už spomínal mám doma dostatok 12V/DC zdrojov a teda povolené hodnoty vstupného napätia použitého meniča ma nijako neobmedzili. Až na tie spomenuté trable pri zapínaní, ale to sa napokon podarilo vyriešiť.

___________________________________________________________

Ešte predtým pri prvom základnom oživení bola ešte jedna vec čo mi spôsobovala "hodne veľké vrásky na čele":


U mňa bol ten "vtip" v tom, že som mal pri oživovaní naraz 2 problémy, jeden čo robil zdroj som už popísal, ale problém bol ešte jeden a nevyriešený (a vzájomne sa prelínali a tak sa pekne dopĺňali, vzájomne prekrývali a spôsobovali mi vrásky na čele), to už bolo postavené aj rozšírenie s 8255A:

Postavené, zapojené, skontrolované, prepískané a čo ja viem čo ešte, potom zapnuté - a nič ...

Zase nasledovalo kompletné premeranie a prepískanie - všetko sa ukazovalo O.K, ale mašina ani nepípla, no proste fakt najlepší stav aký som si len mohol želať ... Odber dosahoval iba 42mA na 5V, na nejaký totálny skrat to nevyzeralo, oscilátor bežal, sonda bola na adresných a dátových vodičoch svojím spôsobom nepoužiteľná, síce ukazovala že sa tam niečo deje, ale nedávalo mi to vôbec žiaden zmysel.

Až asi po ďalšom cca 2 hodinovom hľadaní (kedy som to celé kompletne multimetrom prepískal minimálne 3x - a bez rozumného výsledku - vrŕŕŕŕŕrŕŕŕŕ (samozrejme bola kontrola schémy vodič po vodiči - aj s postupným obkresľovaním už prepískanej trasy), potom zase nasledovala krátka pauza - ale aj tak som nebol schopný problém nájsť, až nakoniec ma neviem prečo napadlo prehodiť prívody pri meraní na multimetri (možno to bola naozaj náhoda že som ich zamenil, teda zmenil som polaritu káblov pri meraní, prečo ma to napadlo neviem, ale pomohlo to !) a potom som zistil že adresné vodiče A14 a A15 (na pätičke procesora 65C02, ten stav tam bol aj keď som procesor z pätičky vybral) majú medzi sebou odpor 42 Ohmov, ak som sem multimeter priložil s opačnou polaritou (tak som meral predtým) tak tam bol nekonečný odpor. Dióda ako vyšitá ... jeden môj známy týmto javom hovorí:

"Laik žasne, odborník je v prdeli." (Rozhodne môj prípad - teda aspoň v danej chvíli.)

No a ja som to dovtedy stále meral s priloženou opačnou polaritou t.j. práve toto prepojenie mi vždy ukazovalo s nekonečným odporom - meral som to zjavne práve s tou opačnou polaritou kedy to neukázala chybu. Aby som to  vysvetlil a aby som nezabudol - bolo vtedy práve piatok 13-teho, čo by mnohé vysvetľovalo. A potom vraj neverte na dátumy ...Laughing
Nezostalo nič iné ako zapojiť túto časť znova - v podstate bolo treba zlikvidovať "skrat" na adress bus medzi A14 a A15 a toto už vysvetľovalo prečo mi to nebežalo - prívody som nanovo pre istotu prepájkoval - stav zotrval - a tak mi nezostalo už nič iného - odpájkoval som tie 2 konkrétne adresové vodiče a dal som tam nové kábliky. Následne zase premerané - O.K, tak som založil procesor a zapol som to.

A mašina naskočila ... no čo si budem nahovárať, vždy je to dobrý pocit keď niečo postavíte a tá potvora ožije.

____________________________________________________________

Doplňujúca a vysvetľujúca poznámka:

 Vydržalo to funkčné len tuším 2 dni ...

Až po nejakom čase som si poskladal čo to vlastne bolo a čo sa to tam porobilo. Merania som robil tak že som vytiahol mikroprocesor (aby som mal dobrý prístup). Ostaté čipy som nechal osadené. Áno, asi už začínate šípiť kde bol problém. Čip 74LS138 ... Prepájkoval som nanovo prívody - A14 a A15 na čip priamo idú, nič sa ale na prvýkrát nezmenilo - to som už spomínal. Nakoniec som vodiče A14 a A15 idúce k nemu vymenil - idú priamo z procesoru. Druhé nové spájkovania čip 74LS138 z nejakých mne neznámych príčin na čas nejako asi tepelne "nakoplo" (čip som nechal pri prepájkovaní vodičov v pätičke) a chvíľu sa správal normálne. Odkedy som pôvodne použitý čip 74LS138 vymenil za iný je všetko O.K. Ten čip mal v sebe skutočne tak nenormálne prepojené "vodivé" cesty že sa divím že nenarobil viac škody ako to že to iba blblo. Keby som nebol lenivý vybrať všetky čipy pri meraní tak by som si pri oživovaní SBC 6502 (teda po jeho rozšírení) ušetril naozaj pekných pár hodín ... Jedna hovadina, ale zato poriadna - fakt ma to pri oživovaní slušne potrápilo.

Ako som medzičasom zistil tak takéto problémy s čipmi 74LS138 existujú, stáva sa to aj iným.

_________________________________________________________________________________

Po správnom zapojení a pripojení napájania sa objaví na termináli nasledovná správa:

Cold [C] or warm [W] start?

Stlač C
Následne sa vypíše:

MEMORY SIZE?

Stlač [Enter]

vtedy sa použije maximálna veľkosť dostupnej RAM
Po necelej sekunde (beží memory test) sa objaví hláška:

TERMINAL WIDTH?

Stlač [Enter] pre default (72 znakov na riadok) , inak maximálna použiteľná hodnota =80.
Potom už nasleduje základný startup message:

 32255 BYTES FREE


OSI 6502 BASIC VERSION 1.0 REV 3.2
COPYRIGHT 1977 BY MICROSOFT CO.

OK

Bums ! A ste v tom až po uši - tak ako ja ...

Poznámky:


Ak na hlášku Memory size? reagujete napísaním A + Enter vyskočí na Vás Easter eggs - objaví sa meno autora Basicu (Richard.W.Weiland), ktorý BASIC "preklonoval" z verzie pre procesor 8080 na procesor 6502. Urobil to naozaj parádne !
Pri Warm (reštarte) máte vo výsledku o celé 2 byte RAM menej k dispozícii - ale zase zostáva kompletný Basic program stále v pamäti k dispozícii (t.j. aj po resete).
___________________________
Poďme na celkovú spotrebu - vlastná SBC6502 doska, použitý procesor 65C02 (má nižšiu spotrebu - na rozdiel od 6502C) - teda zapojenie čo používa 7 čipov (teda bez rozšírenia):

- odber 53,6mA na 12V, t.j 12x 0,053A = 643mW = celková spotreba
- odber 97mA na 5V, t.j. 5x 0,097A = 485mW - vlastná spotreba SBC 6502, reálne je to ale ešte menej:

              !  !  !

/Indikácia na prednom paneli je urobená 5mm zelenou  LED na 20mA, takže 100mW z vlastnej spotreby SBC 6502 si kľudne ešte môžete odrátať, potom to už začína byť fakt zaujímavo malý odber celej dosky./

 

Bez zelenej LED je vlastná spotreba SBC6502 iba 385mW.

Dokončím:

Preložené do slovenčiny rozdiel 643-485= 158mW je vlastná réžia DC/DC meniča
___________________________

BASIC TEST RAM 31kB:

 

Pridám sem krátky Basicový program, ktorý dokáže otestovať celých 31kByte RAM (spodných 1kB RAM potrebuje SBC6502 pre vlastnú činnosť - a je tam aj testovací program - ten sa predsa musí niekam tiež zmestiť, nie ?), test trvá pár minút (použitý x-tal = 1.8432MHz, ak ideme na polovičnej frekvencii tak sa ten čas úmerne predĺži). Každá bunka pamäte (byte) je otestovaná na zápis a prečítanie postupne číslami: 0, 55, AA, FF hexa,teda vlastne 0, 85,170 a 255 dec. Takto sú otestované všetky bity jednotlivých byte v rámci 31kByte RAM na kombináciu núl a jedničiek. V prípade chyby (ak sa zápis líši od následne prečítanej hodnoty) sa vypíše adresa a jej obsah - dekadicky, následne program ukončí svoju činnosť.

Ak je všetko v poriadku program zbehne a na konci vypíše: Complete !

 

Poznámka:

Program nesmie presiahnuť určitú veľkosť, inak už zasiahne adresu 1024(dec) od ktorej testuje RAM smerom nahor. Takže ak chcete program upraviť - dávajte pozor na výslednú veľkosť testovacieho programu ! Preložené do slovenčiny, alebo do reči SBC6502 - tak isto nesmiete prekročiť povolenú dĺžku riadku - potom sa to proste "ureže" - maximálna dĺžka programového riadku je vždy 72 znakov (platí to aj pre povolenú dĺžku riadku =80). To len na vysvetlenie prečo je to takto a nie inak. Takže nesnažte sa nacpať do jednoho riadku všetko - inak narazíte. Nie je to nejaké strašné obmedzenie, stačí na to len pri tvorbe programu pamätať a niekedy to čo treba urobiť stačí iba rozložiť do pár samostatných riadkov. Ak na to zabudnete - SBC6502 dĺžku riadku ustrihne a pri spustení programu Vám to potom chodí chybu.

 

Spôsob postupného testovania bytov RAM pamäte:

jednotlivé bity

00000000            -     zapisuje sa 00h,   0d

01010101            -     zapisuje sa 55h,  85d

10101010            -     zapisuje sa AAh,170d

11111111            -     zapisuje sa FFh, 255d

 

A tu je vlastný Basic program:


 10 ? CHR$(12):G=1024:K=2:? " SBC 6502 SHORT 31kB RAM MEMORY TEST"
 12 ? " (c)2017 Igi":? " I do not test the first 1kb of RAM"
 13 ? " Controlled";K;"kB"
 

 14 FOR F=G TO G+1023

 15 POKE F,0:IF PEEK(F)<>0 THEN 22

 16 POKE F,85:IF PEEK(F)<>85 THEN 22
 17 POKE F,170:IF PEEK(F)<>170 THEN 22
 18 POKE F,255:IF PEEK(F)<>255 THEN 22
 19 NEXT F
 20 G=G+1024:K=K+1:IF K=33 THEN 23
 21 GOTO 13
 22 ? "Problem at:":? "  adress - data":? F, PEEK(F):GOTO 24
 23 ? "Complete !"
 24 ? "End":END


Program sa samozrejme dá optimalizovať do inej podoby a aj veľkosti, tu je teraz skôr snaha aby bol program svojou funkciou zrozumiteľný.

 

Zjednodušená verzia programu, ale na základný test postačuje (je 2x rýchlejší ako predchádzajúci program, stačí zrušiť riadky č.15 a 18):

 

 10 ? CHR$(12):G=1024:K=2:? " SBC 6502 SHORT 31kB RAM MEMORY TEST"
 12 ? " (c)2017 Igi":? " I do not test the first 1kb of RAM"
 13 ? " Controlled";K;"kB"
 

 14 FOR F=G TO G+1023

 16 POKE F,85:IF PEEK(F)<>85 THEN 22
 17 POKE F,170:IF PEEK(F)<>170 THEN 22
 19 NEXT F
 20 G=G+1024:K=K+1:IF K=33 THEN 23
 21 GOTO 13
 22 ? "Problem at:":? "  adress - data":? F, PEEK(F):GOTO 24
 23 ? "Complete !"
 24 ? "End":END

______________________________________________________

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:35 #

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: