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

By Administrator at January 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 napísal. Preto 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 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. 


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" z celého projektu. (Pritom aby bolo tých 12V priamo dostupných na motherboarde som už uvaž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ý 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 nebol ... 


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

 

Nepomohol ani na novo 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 2 dni pauzu a potom ma napadlo prehodiť vypínač až na výstup 5V z meniča.


Bingo !


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 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 a použitým DC/DC meničom)
- 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 12V/5V (len keď potrebujete mať tých 12V priamo na SBC)
- alebo použite priamo iný pre Vás dostupný 5V zdroj

- alebo 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 to zabralo nájsť problém dobre cez týždeň, pretože som medzitým staval rozšírenie s 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 SBC vyrieši. Samozrejme, nevyriešil sa - 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 ako som si zarobil ja. 

A ako som nakoniec na to prišiel ? Síce som ten spínaný zdroj na 5V nemeral na zákmity, ale napadlo ma proste pripojiť to už priamo na iný 5V zdroj a naskočilo to bez najmenších problémov ... a vždy. A 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 pripojil na osciloskop ...


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 aj preťaženie na vyššiu hodnotu, tu to ale nehrozí). To je dosť, hlavne
ak viem že aj pri použití Atari procesoru ideme zo spotrebou tak do hodnoty =200mA, ak nasadíme viacej pamäte tak vylezieme maximálne na hodnotu tak asi 240mA. Ak použijeme procesor 65C02 tak sa na hodnotu 200mA ani pri rozšírení pamäte určite zďaleka nedostaneme. Z toho vyplýva, že stačí použiť menič s menším výstupným prúdom, konkrétne by 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 verziu na 1A, tak tam išla tá silnejšia a ako som už spomínal mám doma dostatok 12V/DC zdrojov a teda ani povolené hodnoty vstupného napätia použitého meniča ma nijako neobmedzili. Až na tie trable pri zapínaní, ale to sa napokon podarilo tiež 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 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 dopĺňali a spôsobovali mi vrásky na čele):

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 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 obkresľovaním prepískanej trasy), potom zase nasledovala krátka pauza - ale aj tak som nebol schopný problém nájsť, až nakoniec ma napadlo prehodiť prívody pri meraní od multimetru (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 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." (Môj prípad.)

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 ktorá 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 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 15 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.

____________________________________________________________

Ktorý vodič z tých 2 kusov robil tú diódu, tak to dodnes neviem pretože som ich okamžite zahodil do koša, rozumné vysvetlenie na celý jav skutočne dodnes nemám -a to ani s odstupom času - a to som si myslel že ma len tak nejaká vec neprekvapí. V živote som sa nikdy s niečím takýmto nestretol. Zjavne som tu mal k dispozícii celkom nový polovodič (možno to ale bol dvoj-polovodič), pomenoval by som ho ako 2-SBC polovodič, vzhľadom k jeho likvidácii ale nie je možné tento stav niekde ešte nanovo zopakovať a tento teda objav asi nenávratne zanikne, pretože bol pozorovaný len mojou osobou. Zase raz Slovensku Nobelovka unikla o vlások, teda bacha - poučte sa a nehádžte takéto objavy oblúkom ľahkovážne do koša tak ako ja ... 


Wink   Wink   Wink

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


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 A14 a A15 vodiče 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" 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 pri oživovaní slušne potrápila.
Takže nakoniec Nobelovka mi nehrozí ani náhodou ...

_________________________________________________________________________________

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 cca 1 sekunde (beží memory test) sa objaví hláška:

TERMINAL WIDTH?

Stlač [Enter] pre default (72 znakov na riadok) , inak maximálna 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ý ho "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 je kompletný Basic program stále v pamäti (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 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 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:REM SBC6502 32kB RAM version
 11 ? " 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:REM SBC6502 32kB RAM version
 11 ? " 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

6/16/2018 6:56:35 PM #

trackback

Directory SBC6502

Directory SBC6502

Igi blog |

Comments are closed

Info o autorovi

Volám sa Igor Gramblička, bydlisko: Bratislava, Slovakia. Môj nick: Igi. Blog je o mojich záujmoch - je to môj pohľad na veci, dúfam že na mojich stránkach nájdete aj to čo hľadáte ...