SBC6502 - 36 - Programátor PROM 74188. PROM 74188 programmer. Part 4-4.

By Administrator at December 26, 2019 09:30
Filed Under: SBC6502

PROM 74188 BURNER - poznámky zo stavby.

 

 

Ako celá stavba programátoru začala - pozeral som na začiatku na webe aké sú dostupné zapojenia schém programátoru pre pamäte PROM 74188 a teda pravdu povediac je to celkom bieda - dostupné sú zapojenia hlavne tzv. ručného (t.j. "handheld") programovania, niečo je už mierne zautomatizované (cygnus.speccy.cz), tam to ale ide už na PC. Nič mi priamo nevyhovovalo, nezostalo nič iného - navrhol som si to teda sám, postupne som to staval, keď som to postavil tak som ešte doplnil obvody indikácií stavov a až následne som začal kresliť schému zapojenia. A potom som to postupne začal programovo oživovať. Aj takto sa to dá, nič nenormálneho (a nič zložitého) v tomto zapojení nie je. Nakoniec na webe si môžete čo je momentálne k dispozícii sami pozrieť a porovnať s tým čo som postavil.

 
Niektoré z dostupných zapojení:

 

Amatérske rádio 2/1982: Ruční programátor 74188 (74S287)
Amatérske rádio 5/1984: Ruční programátor 74S287 (74S571)
Amatérske rádio 8/1985: Ruční programátor 74188, 74S287
Amatérske rádio 1/1989: Programátor pamětí

 

majú zdroj +10.5V mierne povedané riešený dosť zvláštne. Cez odpor 10Ω sa ide na ZD na 11V, potom nasleduje vlastný spínač. Tranzistor K517 v dvoch zapojeniach tam ide na samú hranicu svojho prúdového zaťaženia (kolektorový prúd Icmax=600mA), takže síce vyzerá že to v zapojení prežije, ale je to naozaj na hrane. V jednom zapojení ide toto napätie cez tranzistor KF508 a tam je to ešte horšie (má max. povolený kolektorový prúd Icmax=500mA). Posledné zapojenie používa tranzistor KFY46 - (zase Icmax=500mA ...). No, je mi jasné - ten výber vhodných tranzistorov v tej dobe bol veľmi, veľmi obmedzený a robilo sa s tým čo bolo (aj to ťažko) dostupné. Naproti tomu tranzistor BD140 ktorý som použil v mojom zapojení má Icmax=1.5A, teda nejaká tá rezerva tu je k dispozícii.

Na prvý pohľad vyzerá že je to v poriadku - ale čip pri 10.5V má mať odber 450mA (TESLA datasheet, jeden TI datasheet hovorí dokonca o možnom odbere až o 750 mA ...), teda počítajte so mnou - na odpore (zapojenia z AR a i.) potom bude strata 4.5V (TESLA) a čip pri programovaní ide skutočne mimo stanovených parametrov (mal by mať na sebe 10.5V). Dtto sa týka aj predradného odporu ktorý sa zavesí priamo na 12V - a vo výsledku je ešte väčší, teda jeho hodnota (= 22Ω, zapojenie speccy) je tam totiž ďalší, rovnaký odpor zavesený proti zemi. To že to aj takto funguje je síce pravda, ale že to funguje aj napriek zjavným kiksom v zapojení, tak to nepovažujem za výhru. Sú to podľa mňa zapojenia vcelku "naprd", preto som tie zapojenia ako celok zavrhol, niečo (ale naozaj len niečo) z časti spínača 10.5V je O.K. (nakoniec, bolo to tam určené na "ručné dlapanie", nie na automatiku) použil som iné typy tranzistorov, to si zase vyžiadalo zmeny hodnôt odporov (a teda následne aj nejaké to laborovanie). Výsledné zapojenie mojej verzie zdroja 10.5V už poznáte z uverejnenej schémy.
A ako to už býva až následne som začal hľadať na webe ako má vyzerať programovací pulz. Síce som programátor (ručný) pred už naozaj strašnými rokmi (je to už 35 rokov) postavil a teda predstavu o dĺžke potrebných pulzov rozhodne mám (vtedy som použil 10msec napaľovací pulz), len som si to chcel overiť. Vtedy som programátor použil na napálenie asi tak cca 15 kusov PROM, vtedy fungovali všetky na prvú dobrú a dokonca som pri programovaní nezmrvil ani jednu PROM, bol som vtedy dosť opatrný - a naprosto všetky jednotlivé bity v PROM išli správne naprogramovať jedným 10ms pulzom.

Našiel som v katalógu TI (Texas Instruments) z roku 1975 (mám ho doma) že PROM 74188 odporúčajú programovať následne - 10msec pre CS=1 a nasleduje 700ms programovací pulz, potom zase CS=1, toto už ale potom nie je napaľovanie ale priamo barbecue pre PROM v priamom prenose, škoda že už nepíšu koľko potom trvá blackout aby sa pamäť ochladila a spamätala ... no, je tam tých rozporuplných údajov viacero - takže som od toho katalógu dal radšej ruky preč. TESLA uvádza v svojom katalógu už podstatne prijateľnejšie údaje. (Pozri tiež speccy.) Ešte dodám že programovacie napätie uvádzajú rovných 10V (TI-1975), pričom neskoršie verzie sa už ustálili na nám známych a pekných 10.5V.

TI katalóg z roku 1976 už ponúka o poznanie rozumnejšie informácie a z tých aj vychádzam (vybrané informácie z datasheetu sú uverejnené na konci tohtoto článku).

 

Ešte pár slov ku katalógovým hodnotám programovacieho napätia:

Maximálna horná, neprekročiteľná hranica je +11V, stredná odporúčaná hodnota PGM napätia je +10.5V, spodná hranica je na hodnote +10V. Držím sa strednej hodnoty, vtedy je to O.K., pri hranici 11V už môže prísť k tomu že sa začnú "prepaľovať" hodnoty bitov v už napálených byte ... alebo aj bitov nepoužitých, t.j. dostaneme zničenú PROM. Ak na napájanie použijeme priamo nejaký fajnový zdroj ktorý dodá priamo +10.5V s potrebným prúdovým odberom (minimálne 1A) tak môžeme ním priamo napájať aj DIP relé, relé pri tomto napätí bezpečne zopne tak isto a potom ušetríme v zapojení dve diódy 1N4007.

Dnešné spínané zdroje 12V/DC sú dobre dostupné - jediná vec - skontrolujte si aké výstupné napätie dodáva, niektoré idú s napätím dosť nad deklarovanú hodnotu, takto predídete nepríjemným prekvapeniam pri ich nasadení.

Malé, výkonné tzv. laboratórne spínacie zdroje ktoré sú k dostaniu na webe (napríklad tie čo sa ponúkajú často na bazoši veľmi neodporúčam - napríklad tie do 30V/5A, alebo do 30V/10A), pretože majú veľké zvlnenie výstupného napätia čo môže spôsobovať rozličné problémy pri tomto použití. Mimo iného pri ich použití hrozí že nenastavíme správne výstupné napätie a to z akýchkoľvek príčin. Skutočné laboratórne zdoje majú cenovku posunutú naozaj na hodne vyššiu hodnotu.


SBC6502 s nasadenou doskou samostatných oscilátorov s x-talmi 1.8432MHz a 4.0000MHz pre clock procesoru.


Na tomto obrázku pripomeniem ako teraz vyzerá počítač SBC6502 Erika0, ktorý obsluhuje dosku programátoru pre PROM 74188. Pri sériovom konektore sa nachádza malá doska oscilátorov pre procesor (je tu možné prepínať medzi hodnotami 1.8432MHz a 4.0000MHz), tesne nad konektorom prívodu napájania 12V je jumper ktorým sa prepínajú rýchlosti procesoru. (5.00MHz oscilátor som bohužiaľ zatiaľ nezohnal v tomto prevedení.) Poloha jumperu smerom od konektoru 12V je clock = 4.0000MHz /teda k vypínaču/, ak je jumper umiestnený bližšie ku CANNON konektoru je clock procesoru = 1.8432MHz.

___________________________________________________________


Teraz sa pozrime na to ako som uvažoval ako na to - a úplne (odlišne) na úplnom začiatku projektu:

 

 

Takto vyzeral úplne prvotný návrh dosky s použitím DIL relé, súčiastky sú len voľne položené na základnej doske (bolo to iba v štádiu rozvrhu kde by boli súčiastky, DIP prepínač mal vedieť vyradiť ovládanie relé, prívody portov čipu 8255A - A, B a C mali ísť cez predný konektor), takto nejako vyzeral môj pôvodný základ návrhu kde by to zvládalo mimo svojej základnej funkcie aj naprogramovať PROM 74188. Malo to mať smerom von dostupné 2 porty - jeden by obsluhoval 8 relé (výstupy pravá strana foto), druhý mal slúžiť ako vstupný, to je tých 9 vstupov v strede dolu (8x vstup + zem). Ak by bolo treba dal sa pridať aj tretí port, s ním som v tomto riešení na vonkajšie použitie nerátal. Ako vidieť - od tejto cesty vytvorenia programátoru som nakoniec upustil a zvolil som úplne iné riešenie.

Veľký predný konektor na SBC6502 Erika0 som úplne zrušil (funkčne) a zapojil som všetky 3 porty 8255A priamo na vývody konektoru J4 (pinov je tam dosť), tým sa otvorila cesta pre postavenie uverejneného programátoru ktorý cestu nasadenia až 9 relé na svojej doske opustil a v zapojení sa používa iba jeden jediný kus DIL relé.

___________________________________________________________


Použitie tranzistorov BS170 v programátore PROM 74188 bolo inšpirované pred časom stretnutím s Martinom Lukáškom na Foreveri a rozhovorom s ním na danú tému, za "nakopnutie" správnym smerom mu touto cestou dodatočne ďakujem. Predtým som uvažoval nad použitím 8x DIP relé na spínanie (viď foto v predošlom odstavci), pretože tam by sa to dalo použiť tiež na priame ovládanie relé (len by to chcelo navyše ďalší prepínač na dvojité použitie - programátor, alebo samostatné ovládanie relé). Akurát to vo výsledku zvyšovalo zložitosť dosky (a hlavne - mne dostupné jazýčkové relé nemajú v sebe potrebný prepínací kontakt - aby to bolo skutočne univerzálne), nakoniec som si povedal že doska s relé tak isto bude (možno), s výkonnejšími kontaktami (a teda budú tam k dispozícii aj prepínacie kontakty) ale bude to riešené ako samostatná doska, nie na tomto programátore a tak tu prišlo na použitie spomínaných tranzistorov.

Výmenný systém hornej dosky na SBC6502 takéto riešenie umožňuje.

 

Kto má chuť si naštudovať datasheet tak som ho tu nachystal, sú tam aj ďalšie PROM, extra som nevypichol PROM 74188, takže tých pár stránok si treba prejsť a vybrať si to čo Vás zaujíma a čo pre seba potrebujete:

(Obsahuje datasheet PROM 74188 s presným popisom programovacieho pulzu:)

Programmable ROM 74188 TTL memory.pdf (2,90 mb)

Poznámka:

Aby som nezabudol, existujú ekvivalenty tejto PROM:

K155RE3 = N8223N = 74188 = SN74188N

____________________________________________________________

 

Poznámka 1:

(Niekde doma mám "dobre" založený hodne starý programátor na 74188 postavený pred mnohými rokmi (vlastný návrh), ale je to taká skutočná "ručná dlapačka", všetko sa nastavuje prepínačmi, adresa - tak isto aj jednotlivé bity v rámci byte, je to pri používaní dosť pomalé a je tam veľká možnosť chyby pri zadávaní. Má to 5 prepínačov ktorými sa nastavuje konkrétna adresa (binárne váhy 16, 8, 4, 2, 1), jeden vodič a 8 kolíkov do ktorých sa vždy pripne konkrétny programovaný bit. Vtedy som PROM 74188 použil ako dekodér z BCD kódu na sedemsegmentovky LED - kedysi sa nedali zohnať dekodéry D146 a ani D147, zato 74188-ky áno. A ak som ich chcel použiť - musel som si postaviť na ne programátor - klasická cesta za socializmu, urob si všetko sám čo potrebuješ - aj tak to bolo vo výsledku rýchlejšie ako tie dekodéry niekde zohnať. Osadenie konkrétnymi tranzistormi mimo generátoru 1Khz si už nepamätám. Nechcem to tu nejako ďalej rozoberať ale chcel som sa teraz už jeho používaniu vyhnúť a ísť na niečo modernejšieho.

Ako to bolo postavené dnes už naozaj nemá zmysel do hĺbky pitvať, len spomeniem že to pracovalo v takte hodín =1ms, bol tam dekodér 1 zo 16 (74154), hnal to čip 74LS93 (multivibrátor 1kHz robili 2 tranzistory KC507, čip 555 akosi nebol dostupný) a dekodér vyberal postupne cez maticu diód to čo sa malo v daný okamžik robiť (programovací pulz =10ms). Čiže bolo tam ešte niekoľko diód, 2x čip 74LS00 + 2 tranzistory na spínanie 10.5V, zdroj na napájanie dodával dve potrebné napätia - +5Vcc a +10.5Vpp. Fungovalo to dobre a asi by to fungovalo aj dnes, len to nemám chuť používať, zautomatizovaný programátor (a aj jeho používanie) to predsa len posúva niekde inam. Celé to mám založené niekde v pivnici a než by som to našiel tak som si radšej postavil niečo čo je modernejšie.

___________________________________________________________

09.09.2023

Tak som ten staručký (ručný) programátor pre PROM 74188 predsa len nakoniec v pivnici našiel, ak si dobre pamätám tak rok jeho zhotovenia bol 1983 ...:

 

Jedna krytka na prepínači už chýba, v pätici je ešte stále založená PROM 74188 ...

hneď vedľa pätice sa nachádza modrý káblik ktorým sa "prizemňoval" konkrétny

bit pri jeho programované do "1".


Pohľad dovnútra, čipy 2x 74LS00, 1x 74LS93 a 1x 74154. Tranzistory na spínanie LED

sú KSY62. Použité sú LED TESLA, tie bodové - hovoril som im "sliepňáky",

nič lepšie vtedy nebolo dostupné, ale predsa len poslúžili.


Perlička - pozrel som sa na založenú PROM v pätičke, niečo tam v nej už bolo, skúsil som naprogramovať do nej zase nejaké tie ďalšie bitíky - a programátor fungoval naprosto v pohode aj po tých rokoch. Aby som sa len nechválil - na konci ako spínač programovacieho napätia 10.5Vpp som mal použitý tranzistor KF517 - typ s Icmax=500mA, proste dávalo sa vtedy do zapojení len to čo bolo k dispozícii - aj keď to bolo na hrane. Ale ako vidieť tranzistor to prežil na tomto mieste až do dnešných dní.

No a potom som už tento programátor bez nejakého sentimentu úplne zrušil, fakt som sa nechystal ho naďalej používať. Tranzistory som z plošáku vybral a mám pre ne ďalšie využitie, LED-ky išli priamo do koša.

RIP ... 1983-2023

___________________________________________________________


No a teraz som si to zautomatizoval na SBC6502 ktorý je ešte o nejaký ten rok starší (1977) ako môj pôvodný návrh ručného programátoru, urobil som to na viac ako 42-ročný (v roku 2019) počítač - teda keď sa to tak vezme - vlastne je to teraz mašina v najlepších rokoch.


Zdôrazním - odporúčaná maximálna povolená záťaž PROM 74188 na jednotlivom výstupe je=12.5mA, teda minimálna hodnota zaťažovacieho odporu by mala byť 470Ω a viac, teda netreba čip zbytočne zaťažovať nižšou hodnotou, ak to dodržíte tak životnosť napálenej PROM bude naozaj výborná.


Poznámka 2:
Tu by som rád spomenul jednu vec - a to na to že som pri vývoji programátoru naďabil na jednu 8255A (Mitsubishi) ktorá už na takte hodín =5.00MHz vytrvale blbla, jednoducho nefungoval správne výstup na porte A (porty B a C pritom na clocku 5.00MHz fungovali - a to bez najmenších problémov, išlo prepínať na režim vstupu a výstupu, sedelo to aj po bitoch), po znížení taktu na 4.00MHz ale šváb už išiel ako víno, takže bacha - sem-tam sú čipy ktoré môžu pripraviť celkom nečakané a o to nepríjemnejšie prekvapenie ! Merať a kontrolovať - výborná cesta na to aby sme mali istotu že všetko beží tak ako treba. (Na rozdiel od ostatných 8255A ktoré mám, tie dávali na výstupe log.1 =3.98V tak tento konkrétny "odpadlík" dával na log.1 =3.78V, teda o celých 0.2V menej.) Takže ak sa Vám niečo nezdá - merať, merať, merať niekde sa to nakoniec prejaví. (Čip nakoniec išiel do inej mašiny kde "fičí" síce na púhych 2.00MHz - ale tam je už skutočne naprosto bezproblémový, takže nie je na totálny odpis.)

Obvod MHB8255 (Tesla) som v zapojení neskúšal, aj keď niekoľko kusov doma mám - čiže tu skúsenosťami s ich možným nasadením naozaj neposlúžim.

Ešte by som dodal - pozor na správne zapojenie vývodov jednotlivých tranzistorov - toto vie ušetriť naozaj hodne času ! (Jeden kus BC547 som osadil do dosky opačne a nestačil som sa diviť, niečo išlo niečo nie, zobralo mi to zbytočne čas než som prišiel na to kde som urobil chybu, proste klasika - zle som si zapamätal rozloženie prívodov - načo je doma tester tranzistorov, keď je k dispozícii a pritom zostal ležať v šuplíku ...), ruku na srdce - občas sa to stane asi každému kto bastlí. Nepoteší to, ale vo výsledku poučí.

 

Poznámka 3:

Ak ste si položili otázku či to zapojenie nie je príliš zložité a či by sa to nedalo zjednodušiť:

Zapojenie programátoru sa samozrejme dá zjednodušiť ak sa úplne vynechá obvod 74LS245 a ideme priamo na port C.

Celá schéma je potom jednoduchšia - ale na druhú stranu by som tým poprel pôvodnú požiadavku a to dôkladné oddelenie čipu 8255A od programovaného obvodu. Takže - dá sa riešiť aj takto, ale túto cestu som si nevybral, radšej som použil o niečo zložitejšie zapojenie - čip 8255A je teraz dobre zapezpečený pri možnej poruche samotnej PROM - a o to mi v tomto zapojení programátoru išlo.


K použitiu čipu 74xx245 v tomto programátore ma inšpirovalo zapojenie ktoré som uverejnil v tomto článku :

http://blog.3b2.sk/igi/post/SBC6502-32-Hardware-Part2.aspx

_________________________________________________________

 

Poznámka 4:

Čo ma hodne pobavilo - (pozri datasheet TESLA a pokec o čipe MH74188)  - citujem priamo z neho:

"Za dobré sa považuje ak sa podarí bez problémov napáliť 90% čipov"  ... husté, fakt husté.

Mne sa zatiaľ darí dodržovať úspešnosť napálenia = 100% pri čipoch TESLA MH74188 (iné k dispozícii nemám), fakt je že som ich doteraz na tomto programátore napálil asi tak cez 40 kusov, čo síce nie je až tak veľa, ale štatistika by sa asi už zákonite mala začať prejavovať - alebo mám teraz postavený lepší programátor ako vtedy mala k dispozícii samotná TESLA ...

_________________________________________________________

 

Poznámka 5:

Teraz menej vážne - o jednej drobnosti ktorú som si uvedomil po postavení a pri následnom meraní na osciloskope:


Dióda 1N4148 v zapojení je určená na rýchle vybitie kapacity 1uF - lenže v uverejnenej schéme je v podstate nefunkčná - pri otvorenom tranzistore je tam na kapacite napätie cca 0.7V a ide sa vybíjať cez kremíkovú diódu ktorá má na sebe rovnaký úbytok ..., no je to poviem diplomaticky "hodne nedokonalé". Toto som prevzal zo zapojenia v AR (a nefunguje to presne tak isto ako to nemohlo fungovať ani v zapojení z AR) - došlo mi to až po postavení, niekedy mám dlhé vedenie ako sa patrí, uff. Patrila by tam dióda zo zlatým hrotom (OA9 alebo niečo podobné) alebo germániová dióda, tie majú napätie na prechode niekde okolo 0.25V, Schottkyho dióda sa na toto miesto príliš nehodí (väčší záverný prúd, asi by tu ovplyvňovala aj to čo netreba). Na osciloskope bolo potvrdené že to napriek tomu aj tak funguje dobre (vybitie kapacity prebehne v správnom časovaní - to zabezpečí zmenšený odpor s hodnotou 2k2) v rozsahu testovaných hodnôt hodín SBC6502 a to platí pre 1.8432MHz, 2.4576MHz, 4.00MHz a tak isto aj 5.00MHz (obrázky k tomuto sú uverejnené v 3.časti, kde je dobre vidieť že sa kondenzátor 1uF nabíja a vybíja v správnych časových úsekoch).

 

Keď sa to tak vezme - každé správne zapojenie má mať v sebe zabudované nejaké kurvítko - tak tu je to práve táto dióda. Ak ju tam necháte - nič sa tým nepokazí a pritom žiadnu prácu neodvedie - ale ak kurvítko odoberiete - tak to celé nakoniec zaručene nebude fungovať - a teda diódu 1N4148 som v zapojení nechal.

 

Teraz môžem smelo tvrdiť že to celé správne funguje aj napriek jej prítomnosti. Proste dokonalé kurvítko v praxi. Pekné, nie ?

_________________________________________________________

 

Poznámka 6:

Ako to už v živote býva - o niekoľko dní neskôr (cca 1 týždeň) po postavení uvedeného hardware a napísaní programového vybavenia ma napadlo ako skombinovať do jedného - "All In One" programátor pre pamäte PROM 74188 (32x 8bit), PROM 74S287 (256x 4bit) a aj PROM 74S571 (512x 4bit). Síce by si to vyžiadalo zmeny v hardware a kompletné prepísanie programového vybavenia - ale dá sa to, schému ako na to už mám v hlave vymyslenú. Neviem či do toho pôjdem, pretože som nikdy nemal pamäte PROM 74S287 a ani PROM 74S571 - a nemám ich k dispozícii doteraz. Ale ak by bol záujem, mohol  by som sa do toho pustiť, stále mi stačia na ovládanie 3 brány čipu 8255A a bolo by to teda 3v1. Ale či bude záujem, to je asi málo pravdepodobné.

(Doplnené - 03.01.2020)

__________________________________________________________

11.09.2023

Dnes som "objavil" článok kde sa autor inšpiroval mojím programátorom a použil ho ako základ programátoru PROM 74188 pre ZX Spectrum:

ZX Spectrum PROM 74188 programmer

__________________________________________________________

Priama možnosť skočiť do ďalšej časti:

SBC6502 - 33 - Programátor PROM 74188. PROM 74188 programmer. Part 1-4.

SBC6502 - 34 - Programátor PROM 74188. PROM 74188 programmer. Part 2-4.

SBC6502 - 35 - Programátor PROM 74188. PROM 74188 programmer. Part 3-4.

__________________________________________________________

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

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

____________________________________________________________

Vaše hodnotenie, Rate post:

SBC6502 - 35 - Programátor PROM 74188. PROM 74188 programmer. Part 3-4.

By Administrator at December 23, 2019 09:50
Filed Under: SBC6502

PROM 74188 burner - vlastný program pre napaľovanie - ver.1.01 a 1.02:

   

Ak je spustený program v SBC6502 a až potom zapneme dosku programátoru (tak by sa to patrilo), tak nás vítajú na prednej strane dve rozsvietené zelené LED - jedna na základnej doske počítača SBC6502 a druhá na vlastnom programátore. Čip 8255A je už vďaka spustenému programu správne inicializovaný a teda je v stave kedy sa s ním dá komunikovať a zároveň blokuje 10.5V na PROM a vlastná pätička PROM 74188 je tak isto bez napájania.

     

Ak sa však príliš ponáhľame a najprv zapneme napájanie programátoru tak sa objaví toto ... nič strašné sa síce nestane - teda ak tam náhodou nemáme už založenú PROM 74188.  Ak je všetko v poriadku po spustení programu (inicializuje sa 8255A-ka) na hornej doske zhasne červená a dve modré LED a na doskách nám potom následne svietia iba zelené LED (viď prvý obrázok).

 

Autor nenesie žiadnu zodpovednosť za škodu ktorá vznikne

zničením PROM pri nesprávnom použití programátoru !

- - -

(Uvedené by sa nestalo ak by som použil v zapojení namiesto čipu 7417 čip 7416 - ale to by znamenalo mimo iného aj zmenu programového vybavenia pretože by výstupy na porte A museli byť negované - a mimo iného - čip 7416 som doma pri stavbe programátoru nemal.

- - -

Program je napísaný tak, že je ho možné ľahko modifikovať pre rôzne hodnoty použitých x-talov, stačí len meniť dĺžku niektorých wait stavov a nastaviť správnu dĺžku programovacieho pulzu. Program bol napísaný pre 32kB RAM verziu, pričom momentálne využíva adresy 31000÷31031 (dec) pre uloženie 32 byte RAM a adresy 32032÷32039 (dec) pre rozloženie jedného bytu na jednotlivé bity (teda tu zaberá ďalších 8 byte). (Je možné preložiť tieto použité adresy aj na iné miesto, tieto adresy sú uložené v premenných a teda zmena je veľmi jednoduchá, zadal som si ich takto na začiatku písania programu.) Tak isto priamo v programe sú uvedené najdôležitejšie adresy pre ovládanie samotného čipu 8255A. Miesta v RAM som mal dosť a teda nemusel som skrbliť s miestom kde to umiestnim -a takto nakoniec už zostalo travle nastavené na tieto adresy.


Dôležité adresy (dec) čipu 8255A použité v SBC6502 Erika0:


adr.32768 - port A

adr.32769 - port B

adr.32770 - port C

adr.32771 - CWR register


Celé programové vybavenie bolo napísané v jazyku OSI 6502 BASIC VERSION 1.0 REV 3.2 (c) 1977 BY MICROSOFT CO. Kontrolný súčet, teda CRC použité v programe je riešený najjednoduchším spôsobom ako sa len dalo - je to jednoduchý súčet obsahu všetkých 32 byte (dekadicky). CRC je po spustení programu vždy nanovo počítaný z DATA riadkov (cez RESTORE a READ) a kontroluje sa voči CRC ktorý je priamo súčasťou DATA riadkov. Ak toto vzájomné porovnanie z akýchkoľvek dôvodov nesedí = koniec programu + vyskočí upozornenie že nesedí CRC aj s konkrétnym výpisom hodnôt CRC z DATA riadku a nanovo vypočítanej hodnoty. Pretože použitý BASIC cez HyperTerminál nevie skočiť na začiatok obrazovky ak je už popísaná textom tak ma to nútilo písať program čistejšie, pretože táto koncepcia naozaj neumožňuje robiť nejaké nezmyselné odskoky smerom naspäť v terminálovom okne. Nehodlám tu robiť podrobný popis programovacieho pulzu, to si pozrite v datasheete (bude uverejnený v poslednej, záverečnej 4. časti), tu je to v programe zabezpečené tak ako treba, nakoniec pozrite si to na konci tohoto článku - sú sem priložené dumpscreeny z osciloskopu.

 

Charakteristické pre tento typ pamäte je špeciálne programovanie,

programuje sa bit po bite v rámci bytu, nie naraz celý byte.

 

PROM 74188 musí byť pre programovanie tzv. "čistá" t.j. musí obsahovať samé nuly aby sa dalo pokračovať, ak je v založenej PROM už niečo zapísané tak na to program upozorní (vždy sa to pred vlastným programovaním PROM kontroluje) a nedovolí do nej previesť zápis. Program najprv napaľuje všetky byte postupne pekne jednotlivo bit po bite tak ako predpisuje datasheet (ak je obsahom na potrebnom mieste hodnota =0 tak programovací pulz je obídený, 0 sa do PROM neprogramuje). Potom nasleduje verifikácia PROM - ak z akýchkoľvek dôvodov nie je verifikácia v poriadku, zopakuje sa celý postup napálenia ešte 1x a nanovo sa verifikuje. Ak ani potom nie je v PROM požadovaný obsah - program vyhlási PROM 74188 za zlú a ukončí sa. Oteplenie čipu vďaka wait stavom v programe je úplne zanedbateľné, je to určite pod hodnotou 40°C, merané bezdotykovým teplomerom.

Z uvedeného vyplýva jedna vec - čím viac bitov v PROM obsahuje 0 tak tým rýchlejšie sa vlastná PROM naprogramuje a teda platí to v opačnom garde - čím viac bitov obsahuje 1 tým pomalšie zbieha celý zápis. Tak isto je výhodné ak nepoužité výstupy naďalej obsahujú 0 - potom je totiž možné obsah na týchto miestach zmeniť neskôr na nami potrebné hodnoty (ak by sa ukázalo že ešte potrebujeme niečo zmeniť, ak sú voľné výstupy nie je to problém).

 

Najprv na začiatku som uvažoval že si rozložím 32 byte pekne hneď pred napálením najprv do jednej jedinej postupnosti 256byte (rozložím si 32byte pekne postupne na 32x 8bit) kde to bude pekne už zoradené bit po bite a potom už len budem jednotlivé bity po jednom bite hnať cez programátor - lenže raz večer tesne pred spaním ma napadlo že bude stačiť ak budem postupne rozkladať vždy len jeden konkrétny byte (čas čo to spotrebuje aj tak treba na vlastné zotavenie PROM) a tento jeden rozložený byte na bity naprogramujem a až potom pôjdem na rozklad ďalšieho byte, takže v tom nebude žiaden problém. A u toho som aj zostal, funguje to dobre a bez najmenších problémov. A na rozklad jedného byte na jednotlivé bity mi postačuje púhych 8byte ... (aj keď tu potrebná RAM naozaj nehrá rolu, tu máme k dispozícii "celých" 31kByte RAM, 1kB RAM zaberajú systémové veci).

Pozostatkom pôvodnej koncepcie je použitie adries (31000d a vyššie, tu som počítal že budem potrebovať 256 byte), ale pretože RAM je dostatok tak som už nastavené adresy v programe nezmenil, posun v RAM smerom nahor určite ešte časom skúsim, ale to až niekedy neskôr.

___________________________________________________________


V programe oproti uverejnenému manuálu v predchádzajúcej časti nastala jedna jediná, drobná zmena.


Do programu pribudla nová premenná ID=32, síce sa v programe momentálne nepoužíva, ale ak by som sa ešte niekedy rozhodol v programe (a tak isto aj v hardware) vŕtať tak ju tam mám teraz ako zadné vrátka (potom by som ju už nerád dopĺňal). Pretože túto premennú som do programu pridal až včera, nie je zahrnutá v manuáli a teda nie je ani v zobrazení manuálu. Na uverejnené programové vybavenie nijako nevplýva (len sa zmenilo označenie verzie programu z 1.00  na 1.01), preto nepovažujem za potrebné prerábať manuál. Ďakujem za pochopenie.

 

Táto premenná pribudla do riadku 9000 a teda je aj  priradená

k záznamu v DATA riadkoch.

___________________________________________________________

Celý program som kompletne na nečisto napísal najprv v Notepade, rozhodne sa mi tam píše lepšie ako v okne HyperTerminálu. Jediná nevýhoda - ak tam (v Notepade) náhodou neúmyselne zdvojíte číslo riadku - tak to dá poriadne zabrať než nájdete chybu, program v SBC6502 poctivo prepíše riadok z rovnakým číslom obsahom iného riadku s tým istým číslom ... to sa mi počas písania stalo niekoľkokrát a problém sa hľadal naozaj dosť blbo. Napriek tomu mi Notepad pre písanie vyhovuje. Ako vždy keď píšem program ak je jedna časť odskúšaná - a funguje, tak už tam ak to nie je potrebné zbytočne nesiaham (a neprepisujem). Preto môže byť že niektoré veci sa zdajú príliš komplikované, ale tak ako to je teraz tak to funguje. V rámci svojich možností som sa pokúsil priamo vložiť do REM riadkov v programe vysvetlivky ktoré informujú o tom čo sa v programe práve deje (vďaka popisu program celkom slušne "nabobtnal"), niekde nájdete REM riadky kde je možné ich odblokovaním spustiť podrobnejší výpis (hodí sa ak sú nejaké "trable" - toto je ale už vo verzii 1.02 zrušené - pozn. 08.01.2020), tu priamo v texte nejaké ďalšie vysvetľovanie považujem už iba za zabíjanie času. Dlhšie časové rezervy (čakacie slučky FOR-NEXT, programové riadky 2010 ÷ 2100) použité v programe slúžia výlučne na zotavenie PROM čipu po programovacích pulzoch (ak to programujete "ručne" tak čakacie slučky netreba, pretože ruky sú v konečnom výsledku vždy výrazne pomalšie ako počítač ...).

(Program som začal písať 19.11., kompletne bol dokončený do základnej, uverejnenej verzie za mesiac.)


Nasleduje ukážka napaľovania PROM 74188 na tomto programátore:

PROM 74188 BURNER.mp4 (12,92 mb)  video


(Je tu celkový pohľad na nasadený programátor na SBC6502 Erika0, potom už nasleduje ukážka napaľovania, po napálení nasleduje krátka pauza, potom ešte nakrátko bliknú modré LED - vtedy prebehne čítanie, t.j. prebehne verifikácia obsahu PROM. Na spodnej doske - SBC6502, prebieha intenzívna komunikácia - červená LED = TX - posielajú sa priebežne údaje na HyperTerminál = zobrazenie informácií. )

_____________________________________________________


Teraz sa môžeme pozrieť ako vyzerajú programovacie pulzy pri rozličných rýchlostiach procesoru

na doske SBC6502 pri sledovaní na digitálnom osciloskope:

 

Priebeh programovacieho pulzu pre x-tal=1.8432MHz. Presná dĺžka programovacieho pulzu je daná opakovaním v slučke FOR-NEXT v riadku 3750, čiže nie vždy je to úplne presne 17msec, ale odchýlka nie je nejaká zásadná (programovací pulz môže mať podľa datasheetu použitú dĺžku v rozmedzí 1÷20msec - a tam sa s prehľadom nachádzam). Moje rozhodnutie bolo že programovací pulz bude mať nastavenú základnú dĺžku na 17msec. Snažil som sa označiť všetky dôležité body na snímku tak aby to bol zrozumiteľné, dúfam že sa to podarilo. Na obrázku je pekne vidieť ako najprv CS! ide do log.1, následne nabieha napájacie napätie z 5V→10.5V, CS! ide do log.0, vtedy prebieha vlastný programovací pulz, potom zase CS! do log.1, zhadzuje sa 10.5V→5V a CS! ide zase do log.0.

Poznámka:

Označenie CS! (Chip Select) je negované, môj editor textu v BlogEngine nedokáže negáciu priamo vypísať do textu, v obrázkoch je to uvedené správne.

 

Priebeh programovacieho pulzu pre x-tal=2.4576MHz. Ako sa zvyšuje rýchlosť procesoru tak sa zákonite začína zmenšovať šírka pulzu pre CS!, táto šírka zostáva bez nejakého nastavovania dostatočne široká aj pre 5.00MHz. Hodne pomohlo zníženie odporu v báze tranzistoru BC546 na hodnotu = 2k2, vďaka tomu to stíha aj nabíjať aj vybíjať kapacitu 1uF vo vhodnom a nám potrebnom čase.

 

Priebeh programovacieho pulzu pre x-tal=4.00MHz. Dĺžka pulzu má byť v rozmedzí 1÷20msec, zmenou hodnoty premennej F (0 až naša hodnota) v uvedenom riadku je možné ju meniť, ja som si stanovil =17msec, tak ako to je - tak to funguje na jednotku.

 

Priebeh programovacieho pulzu pre x-tal=5.00MHz. Presná dĺžka programovacieho pulzu je daná opakovaním v slučke FOR-NEXT v riadku 3750. Je jasné že ako sa procesor zrýchľuje tak sa zvyšuje číslo v slučke FOR-NEXT aby sa dosiahlo požadovaných 17msec.

 

SBC6502 + doska programátoru PROM 74188.


Program - verzia 1.1 a 1.2 je pre x-tal:
1.8432MHz
2.4576MHz
4.0000MHz
5.0000MHz

version 1.01.zip (15,27 kb)

version 1.02.zip (15,50 kb)

_________________________________________________________________________________

V uvedenom odkaze sú uverejnené všetky vydané verzie programového vybavenia pre programátor PROM 74188:

SBC6502 - 66 - PROM 74188 - všetky verzie programu, all program version.

_____________________________________________________________

V štvrtej časti bude popis vlastnej stavby spolu s "perličkami".

Priama možnosť skočiť do ďalšej časti:

SBC6502 - 33 - Programátor PROM 74188. PROM 74188 programmer. Part 1-4.
SBC6502 - 34 - Programátor PROM 74188. PROM 74188 programmer. Part 2-4.

SBC6502 - 36 - Programátor PROM 74188. PROM 74188 programmer. Part 4-4.

____________________________________________________________

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

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

____________________________________________________________

Vaše hodnotenie, Rate post:

SBC6502 - 34 - Programátor PROM 74188. PROM 74188 programmer. Part 2-4.

By Administrator at December 20, 2019 08:58
Filed Under: SBC6502

PROM BURNER 74188 - obrazový manuál:

  

 Len chcem upozorniť na to že programové vybavenie sa zatiaľ stále vyvíja a objavilo sa niekoľko postupných verzií programového vybavenia a preto sa veci v detailoch môžu líšiť.


 

No a teraz už idem k používaniu vlastného programu:

 

Úvodná obrazovka hneď po spustení programu, už je aktivovaný čip 8255A,

teraz už môžeme zapnúť napájanie programátoru.


Pri zapnutí programátoru vždy dbajte na to aby nebola vložená PROM 74188 v programátore !!!


Ak budeme pracovať len s voľbou (D) alebo (H)  - vôbec nie je potrebné zapnúť napájanie programátoru.

(V obidvoch prípadoch len ručne vkladáme data a príde k vygenerovaniu  DATA riadkov.)

 

Vlastné menu, všimnite si že teraz DATA riadky v programe obsahujú samé nuly (0),

čiže v programe nie je prítomné nič na napálenie, nakoniec - vypíše sa to na displej.

 

Tu som už nahral nejaký obsah do Data riadkov, čiže tu už máme "živé"

Data, program na to reaguje a upozorní na to.


Zvolená možnosť (D), vkladáme vždy kompletne celých 32 byte, všetky údaje sa vypisujú (aj zadávajú) v dec tvare, na začiatku zadáme názov. Maximálna dĺžka názvu pre DATA je 40 znakov, po prekročení dĺžky na to program upozorní a ponúkne možnosť napísania nového názvu. Toto obmedzenie dĺžky názvu na túto hodnotu som si určil sám, myslím si že 40 znakov na popis dát by malo stačiť.

 

Pokračujeme vo vkladaní dát (tu je uvedený príklad) na dané adresy

PROM až nakoniec prídeme na posledný byte č.31 (dec).


Tu už program hneď vygeneruje výsledné DATA riadky. Do vlastného tela programu potom vkladáme riadky 90009005 (tak ako je to popísané na displeji). Vyrátané jednoduché CRC sa tak isto prenáša, pri spätnom nahratí do SBC6502 je vždy nanovo vypočítané a kontrolované s uloženou hodnotu CRC - ak nesedí = koniec programu (síce je to krajná možnosť pretože to značí že je niekde naozaj problém, ale kontroluje sa to, štandartne to samozrejme zbieha bez najmenších problémov).

Ak je všetko O.K. - program sa po vygenerovaní DATA riadkov ukončí a cez CAPTURE môžeme DATA nahrať buď do programu, alebo si ich odložíme pre neskoršie použitie. Výhodou je to že k tomu už ukladáme aj názov týchto dát, dá sa v tom potom naozaj ľahko orientovať.

 

Teraz ideme ukladať data - voľba (H) z inými vstupnými údajmi - teraz sú všetky údaje v hexa tvare. Niekedy sú údaje na vkladanie dostupné len v tomto tvare (a my ich nemusíme prácne prepisovať do (dec) tvaru, program pri tejto voľbe to urobí za Vás. Tak isto zase ukladáme celých 32 byte (0÷1Fh).


Možná dĺžka názvu sa nemení, adresa a data sú ale teraz zadávané v hexa tvare.


Po kompletnom načítaní údajov z klávesnice sú zase vygenerované Data riadky, tie sú vždy v (dec) tvare. Program sa ukončí a my môžeme cez CAPTURE vlastné DATA riadky buď niekde odložiť alebo ich nahrajeme priamo do programu.


Tu pomocou voľby (R) sa pokúšame načítať obsah PROM, ak je PROM aktívna (naprogramovaná) tak sú vygenerované DATA riadky s príslušným obsahom dát, čiže ak je živý obsah - vzniknú DATA riadky s následným ukončením programu. Ak je PROM čistá, nepoužitá, program nás na to upozorní a nevytvorí zbytočne DATA riadky obsahujúce samé nuly a vráti sa naspäť do menu.


Táto voľba (T) nerobí nič iného - len kontroluje či máme k dispozícii čistú, nepoužitú PROM. Čistá PROM (obsah = samé nuly). Nič viac nič menej. Po požadovanej informácii sa program vráti do menu. Ak je založená "živá" PROM program zase na to upozorní (tu by nebolo dobré do nej niečo zapisovať).


Voľbu (V)  verifikáciu vynechávam, pretože k verifikácii prichádza tak isto vždy po napálení. Tak isto ak si nahráme potrebné DATA riadky tak ich vieme verifikovať zo založenou PROM (kontrola obsahu PROM = DATA). Podmienkou pre verifikáciu je založená PROM a k tomu nahraté príslušné DATA riadky zo žiadaným obsahom.

 

Ale poďme späť na voľnu (W) - zápis. Tu je viacero možností. Najprv vždy je skontrolovaná PROM či je čistá (t.j. musí obsahovať samé nuly), ak je teda PROM O.K. ide sa v programe ďalej.

 

Program si sám skontroluje či ste nezaložili aktívnu (t.j. naprogramovanú)  PROM, ak áno nedovolí pokračovať. Nedovolí tiež pokračovať ak je PROM čistá a nemáte v DATA riadkoch už uložené "živé" údaje (náš prípad na obrazovke). Vráti nás do menu. Možno sa to zdá zbytočné, ale naozaj je to treba skontrolovať.

 

Ak máme čistú PROM a tak isto máme živé DATA, program sa už len opýta - idete ďalej ?

N - nás vráti do menu, Y - začne vlastné napaľovanie.

 

Tu je už vidieť priebeh napaľovania, postupne sa napaľujú bity 0 až 7 v jednotlivých byte, časové slučky sú zvolené tak aby sa PROM 74188 po programových pulzoch neprehriala, takže chvíľku to napaľovanie predsa len trvá. Ale to pohodlie oproti ručnému "dlapaniu" na jednoduchom programátore je naozaj neporovnateľné ...

 

No a na záver - ak máme dobrú PROM a napálenie zbehlo v poriadku, tiež zbehla aj jej verifikácia - tak uvidíte túto hlášku. Po pár sekundách zmizne a vráti nás naspäť do menu. Že táto hláška po chvíli zmizne nie je na závadu, pretože ak PROM nie je v poriadku program sa ukončí, čiže vždy rozpoznáte či to zbehlo aj keby ste práve odišli z miestnosti. PC neznamená skratku pre Personal Computer ale adresu portu C (podrobnejšie priamo v programe). Ak uvedený spôsob nevyhovuje, stačí si príslušne upraviť programové vybavenie.

 

Takto to pracuje ak je všetko O.K.

___________________________________________________________

No a tu by sa mohlo skončiť, lenže život občas môže priniesť aj nepríjemné prekvapenia - napálenie sa nemusí podariť, pritom zbehol kompletný celý cyklus zápisu 32byte - čo teraz ? Programové vybavenie na to pamätá, cyklus ešte 1x nanovo zopakuje.

 
Ukážka čo sa stane ak napálime PROM a nezbehne v poriadku verifikácia:


Ukážka čo sa stane ak napálime PROM a nezbehne verifikácia, príde k zopakovaniu napaľovania s ďalšou následnou verifikáciou (tá je na poslednom obrázku). Vypisuje sa rozdiel na danej adrese toho čo je v počítači a čo je v PROM. Ak pri druhom pokuse napaľovanie zbehne a následne zbehne bez chyby aj verifikácia je PROM považovaná za dobrú (potvrdí to aj oznam na obrazovke) a program sa vráti do menu. Ak nezbehne verifikácia tak sa dostávame k poslednému obrázku.

 

Ak nezbehne ani po druhom pokuse o napálenie správne verifikácia - PROM pamäť je vyhlásená za vadnú a program končí. Je to síce výnimočný stav, ale je dobré pripomenúť že ovládací program počíta aj s takouto alternatívou.

(Síce toto tam mám, ale zatiaľ som sa reálne k tejto hláške nedostal - nechýba mi, túto konkrétnu chybu "simulujem" len vybratím PROM z pätičky).

___________________________________________________________


Doplnková informácia - ako vkladať DATA riadky do programu:

 

Ešte sa raz vrátim k tomu ako si zaznamenať obsah toho s čím sa robí v HyperTermináli, je to funkcia Capture - toto nám umožní si zaznamenať aj Data riadky ktoré program vygeneruje. Už som spomínal že SBC6502 a jeho BASIC nemá implementované príkazy LOAD a SAVE, tak tento "nedostatok" musím nejako obísť. Ako ? Takto ...

 

Pred spustením funkcie z MENU programu, napríklad D alebo H,

tak isto R spustíme záznam do txt súboru cez CAPTURE.


Zvolíme adresár kde sa bude zapisovať a meno vytváraného súboru.

Používanú cestu kde sa vytvorí txt súbor vidíte na samotnom obrázku.

(Moja voľba.)


Ak zbehne nami požadovaný záznam tak ho následne môžeme stopnúť, otvoríme (napríklad v Notepade) nami vytvorený .txt súbor a môžeme DATA riadky priamo skopírovať do nášho programu - alebo si záznam odložíte pre neskoršie použitie. DATA riadky obsahujú názov - čiže nie je problém neskôr vedieť k čomu sa DATA riadky vzťahujú.


Ak DATA riadky chceme vložiť do programu - v textovom súbore (zo záznamu Capture) označíme požadované REM riadky a pomocou CTRL+C si ich zapamätáme a následne pomocou Paste to Host vložíme priamo do programu. Presne takto isto môžeme aj nahrať celé programové vybavenie jedným ťahom. Tento zložitejší spôsob vkladania DATA riadkov je daný tým že SBC6502 nemá v BASICu implementované príkazy LOAD a SAVE, tak som to musel nejako obísť.

____________________

Pdf verzia tohoto "manuálu":


SBC6502 PROM 74188 programmer_manual.pdf (883,66 kb)


No a to je asi tak všetko.

___________________________________________________

V tretej časti bude vlastný program.

Priama možnosť skočiť do ďalšej časti:

SBC6502 - 33 - Programátor PROM 74188. PROM 74188 programmer. Part 1-4.

SBC6502 - 35 - Programátor PROM 74188. PROM 74188 programmer. Part 3-4.

SBC6502 - 36 - Programátor PROM 74188. PROM 74188 programmer. Part 4-4.

____________________________________________________________

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

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

____________________________________________________________

Vaše hodnotenie, Rate post:

SBC6502 - 33 - Programátor PROM 74188. PROM 74188 programmer. Part 1-4.

By Administrator at December 17, 2019 16:42
Filed Under: SBC6502

SBC6502  PROM 74188 burner.

  

(Dá sa použiť po úprave programu aj pre iné typy SBC.)

    

Počítač SBC6502 (spodná doska) + programátor PROM 74188 (horná doska).

 

Tak som sa predsa len pustil do tohoto projektu - programátor pre pamäte PROM 74188, ktorý spolupracuje z SBC6502 Erika0. Cca 20 kusov týchto pamätí mi už dlhú dobu doma ležalo v šuplíku - takže už bolo načase s nimi niečo konečne urobiť. Síce mi naozaj hodne dlho trvalo než som sa do toho pustil (na druhú stranu - mal som čas si poriadne premyslieť čo od takéhoto projektu očakávam, bolo to mimo iného dané aj tým že sa vždy našlo niečo na prácu čo v danom okamihu bolo dôležitejšie - tento stav asi poznáme všetci), stavba a celá realizácia vrátane napísania programového vybavenia mi zabrala viacero týždňov - vlastná doska zabrala stavbou asi tak 3 dni, zbytok času zabralo napísanie základného programového vybavenia. Trúfam si povedať že celé zapojenie je vlastná konštrukcia, dosť mi dalo zabrať programové vybavenie, keď som v ňom urobil jednu vec a dotiahol ju do konca tak mi hneď napadlo že ešte by tam bolo dobré zabudovať ďalší nápad atď., a nejako mi to potom akosi stále bobtnalo a bobtnalo ... až som si povedal dosť ! a teraz je to už v stave na uvoľnenie. Napísanie základného programu mi trvalo cca 1 mesiac, "odsedel" som to celkove asi tak na 14 pokračovaní, padlo na to naozaj pekných pár hodín. Nesedel som nad tým každý deň, čo zase bolo dobré lebo vždy ma niečo na nové, doplnkové napadlo a snažil som sa to potom do programu prepašovať, celkom sa zadarilo.

 

Pamäť PROM 74188 je síce kapacitou hodne, hodne malá (má púhych 32 Byte), ale výborne sa hodí na použitie napríklad ako konečný automat, dekodér adries, dekodér pre sedemsegmentovky zo spoločnou anódou, alebo spoločnou katódou, alebo je z nej pekný BCD dekodér z plným hexa výstupom zobrazenia (v jednom dekodéri pri piatich vstupných adresách krásne zobrazíte plný rozsah 0÷1Fh na jednej dvojitej sedemsegmentovke) a čo ja viem na čo ešte. Pamäte PROM 74188 sa stále dajú zohnať, pritom nie sú drahé a sem tam sa niečo objaví čo sa do nich naozaj oplatí naprogramovať.


Pred tými rokmi (roky osemdesiate) v našich končinách toto bola jediná možnosť ako sa pokúsiť nahradiť vtedy nedostupné GAL čipy (teda jasne - kombinačná logika nedosahuje možností GAL čipu, ale aj tak sa s tým dalo dosť urobiť - ak niekto vedel čo a ako). Lenže - najprv ste museli PROM 74188 zohnať. A následne si aj postaviť programátor, bez neho to akosi nedávalo zmysel, že áno. Celé to bolo plne v rámci vtedy veľmi zaužívaného (a plne využívaného) hesla USVS - Urob Si Všetko Sám. (Ešte aj výskumné ústavy si stavali vlastné programátory, pretože oficiálny programátor sa buď nedal kúpiť, alebo jeho cena dosahovala výšku nákupu vtedajšieho osobného automobilu - a to ešte nehovorím o dodacej dobe ...) Toto bolo pravdepodobne najväčším problémom pre nasadenie týchto PROM pamätí v praxi, inak by boli ešte viac používané. Výhodná je krátka prístupová doba, ktorá je omnoho kratšia (viac ako 3÷4x) ako má štandartná 150nS EPROM.


Pre neznalých - PROM 74188 je jednorázovo programovateľná pamäť, programuje sa jednotlivo bit po bite až je naprogramovaný celý byte a potom sa tento cyklus postupne opakuje pre všetky byte, zase pekne bit po bite, t.j. ak sa napríklad pri "dlapaní" na ručnom programátore pomýlite pri programovaní jedného jediného bitu, tak pokus musíte kompletne zopakovať - ale už iba s novou PROM, pretože tá prvá je vhodná už iba na vyhodenie ... a vtedajšia cena PROM 74188 bola všetko iné - len nie ľudová, dnešný stav je samozrejme omnoho lepší a tieto PROM sa dajú zohnať bež väčších problémov - a stále za slušnú cenu.

 

Platí: Raz už zapísaná hodnota bitu =1 sa nedá prepísať na nulu !

Bipolárne PROM sú programovateľné iba raz a nie je možné ich vymazať.


Dodatok ktorý z toho vyplýva:

Prázdna, nenaprogramovaná PROM 74188 obsahuje samé nuly, programuje sa do nej hodnota bitu=1, nuly sa neprogramujú.

 

Definoval som moje požiadavky na programátor PROM 74188:


č. 1 - aby táto doska fungovala (aj keď za cenu istých obmedzení - pre SBC6502 nie je

          k dispozícii príkaz Load a Save) priamo v SBC6502 Erika0

č. 2 - programátor (jeho doska) sa bude priamo nasadzovať na SBC6502 Erika0

č. 3 - možnosť totálneho odpojenia dosky programátoru od SBC6502 Erika0, teda príde

          k odpojeniu napájania (vypínač +5V a +12V) a tiež všetkých 3 portov 8255A aj pri

          nasadenej doske programátoru (vtedy treba v zapojení použiť DIP spínače - ale

          ukázalo sa že odpájanie portov na dosku programátoru nie je potrebné ... )

č. 4 - v zapojení nie sú použité žiadne exotické obvody

č. 5 - pripojenie bude realizované cez čip 8255A, teda cez jeho tri 8-bitové brány

          (toto riešenie umožňuje tento hardware pripojiť aj k inému počítaču ktorý má v sebe

       k dispozícii čip 8255A teda je tu možnosť práce programátoru aj s iným počítačom)

          V zapojení na doske SBC6502 je použitý čip 8255A od firmy NEC , Mitsubishi, Intel

          (pretože ich mám), iné ( napr. TESLA) som neskúšal.

č. 6 - príkazy v programe sú realizované priamo pomocou BASIC-u príkazmi POKE a PEEK

          (programové vybavenie sa dá použiť s každým počítačom ktorý má k dispozícii čip

       8255A, len bude potrebná úprava vlastného programového vybavenia)

č. 7 - chcem dôsledné oddelenie čipu 8255A od vlastného programovaného čipu 74188

          (vďaka tomu je použitá  väčšia obvodová zložitosť, to ale z hore uvedeného dôvodu

           plne akceptujem)

č. 8 - pripojenie a odpájanie napätia čipu 74188 je pomocou DIP relátka, t.j. pri vkladaní

          a výbere čipu nemá na sebe žiadne napätia, mimoriadna rýchlosť spínania a rozpínania

          DIL relé je výborná, je možné bez problémov vkladať "pauzy" (t.j zotavenie čipu)

          medzi jednotlivými programovými pulzami bez najmenších problémov

č. 9 - indikácia základných stavov programátoru  sa robí pomocou LED, výborná vec ak sa

           objaví problém (akýkoľvek), stačí znížiť rýchlosť prg. pulzov a hneď je vidieť čo sa

           práve prevádza. (Naprosto parádna vec pri oživovaní ...)

č.10 - vytvoriť verziu s DIP vypínačmi a aj bez nich

           (občas uvoľnenie vývodov čipu 8255A pre inú prídavnú dosku sa môže hodiť)

č.11 - použiť vlastné programové vybavenie ktoré sa bude postupne zdokonaľovať

č.12 - pre programátor treba 12V napájanie, ostatné potrebné napätia sa potom priamo

           z neho odvodia ( +5V a +10.5V)

č.13 - v zapojení použiť vlastné zapojenie zdroja +10.5V pre programovanie čipu 74188

        (dostupné zapojenia sa mi z viacerých príčin nepozdávajú)

č.14 - celé programovanie PROM 74188 "odmaká" samotný počítač SBC6502, (dosiahne sa

           markantné zníženie možnosti chyby dát priprogramovaní oproti ručnému "dlapaniu"

           údajov)

č.15 - pre zjednodušenie vlastného programu sa v jednom "ťahu" napaľuje všetkých 32byte,

           až potom následne zbieha verifikácia, ak kontrola nesedí - tak sú tieto možnosti:

           a. - program skúsi nanovo napáliť obsah (s rovnakou dĺžkou  PGM pulzu), platí pre prvé

           verzie programového vybavenia, ak je potom obsah v poriadku tak je PROM napálená

           a prehlásená za naprogramovanú (O.K.), inak program skončí chybovou hláškou.

           b. - obsah sa skúsi nanovo napáliť obsah (s nastaviteľnou dĺžkou druhého PGM pulzu),

           platí pre novšie verzie programového vybavenia, ak je potom obsah v poriadku je PROM

           napálená a prehlásená za naprogramovanú, inak program skončí chybovou hláškou.

           c. - obsah sa pokúsi nanovo napáliť (pričom máme možnosť nastaviť základnú dĺžku

       PGM pulzu a dĺžka PGM pulzu v druhom kole je napevno nastavená na 1.5x dĺžky

           základného PGM pulzu), toto platí pre najnovšiu verziu programového vybavenia, ak je

           potom obsah v poriadku je PROM napálená a prehlásená za naprogramovanú, inak program

           skončí chybovou hláškou.

          d. - v prípade že nesedí verifikácia ani po druhom kole napaľovania, tak až potom je PROM

          74188 definitívne prehlásená za zlú a program ukončí svoju činnosť.

          /Takto "nejako" by mal bežať vývoj prg. vybavenia, myslím tým tento konkrétny bod./

 

Takto to vyzeralo na úplnom začiatku, tu ešte ani nebol na doske pripravený konektor J5.

Vľavo na doske osadený konektor J4. Na ďalšom obrázku je už mimo iného J5 osadený.


Vpravo osadený konektor J5 - zatiaľ len návrh čo kde bude

postupne na doske programátoru umiestnené.

 

Tu je základné rozmiestnenie na doske programátoru, potom už len postupne pribúdali ďalšie a ďalšie súčiastky, v základnom prevedení sú použité 3x DIP prepínače ktoré umožňujú totálne odpojenie dosky programátoru od všetkých troch portov čipu 8255A bez toho aby bolo potrebné dosku programátoru vyberať z motherboardu SBC6502. Toto bola jedna z mojich požiadaviek, nakoniec ak som vybral DIP spínače z pätičiek tak som mohol pokojne merať na pätičkách či dostávam z portov potrebnú odozvu. (Celkom sa mi to pri oživovaní programátoru hodilo.) Jediná vec s ktorou sa treba zmieriť je to, že všetky DIP prepínače majú na sebe číslovanie v rozmedzí 1÷8, pritom ale robíme s bitmi 0÷7, s tým sa dá žiť, hlavne ak o tom "probléme" vieme. Proste pri základným meraniach pri oživovaní a testoch musíme vedieť na vývodoch prepínačov mierne rotovať zároveň s bitmi a reálnymi číslami na DIP-och a to priamo v hlave ...Laughing 

 

Jediná vec ktorú som celkom dobre nezvládol - zapojenie vývodov na konektore J4 - aby mi to sedelo kde treba - musel som prekrížiť na doske prívody k DIP spínačom. Prekríženie je nakreslené v schéme, ale nie je to nič hrozného, miesto na prekríženie vodičov tam je - takže to len na vysvetlenie.

 

Doska programátoru PROM 74188. Tu je už tých súčiastok na doske programátoru osadených o niečo viac. 

(Zatiaľ nie sú osadené čipy, DIP switche a DIP relay.)


Na všetkých fotografiách je verzia programátoru Full 1.

 

Programátor existuje v 2 verziách - (s DIP prepínačmi na doske a bez nich). Popíšem to podrobnejšie - je tu úplné odpájanie napájania PROM 74188 pomocou kontaktu DIP relé. DIP relé spína za 3ms, alebo preložené do slovenčiny spína už za 3 tisíciny sekundy, plná rýchlosť spínania relé v zapojení sa ale nevyužíva. Napriek tomu tá jeho rýchlosť v danom zapojení je naozaj výhodná, naozaj netreba dlho čakať ...

Oprava:

Nakoniec som na tomto mieste použil ešte rýchlejšie jazýčkové relé EDR201A1200 - spína za 1ms, vypne za 0.5ms  - je teda 3x rýchlejšie oproti pôvodne nasadenému, dokáže spínať 1A namiesto 0.5A - bolo k dispozícii - tak prečo nie ?


Jazýčkové relé spína iba +5V pre napájanie PROM cez Schottky diódu, pripojenie programovacieho napätia +10.5V už prebieha pri zopnutom kontakte relé. Kontaktom relátka teda tečie väčší prúd pri programovaní iba v jeho zapnutom stave, potom sa zase odpojí programovacie napätie, až potom následne sa odpojí kontakt relé. Výhodou je to že potom vôbec neprichádza k opaľovaniu kontaktu, DIP relé je pritom naprosto tiché v prevádzka, nie je počuť žiadne "cvakanie", čo je podľa mňa veľké + (tichučko by ste ho počuli iba vtedy ak by ste si priložili ucho priamo na relé - čo ale zase nie je normálny prevádzkový stav mať hlavu položenú na programátore ... myslite na to ako by reagovalo Vaše okolie ak by Vás pri tom sledovalo Smile).


Ďalej je tu k dispozícii indikácia na prednom paneli pomocou LED, tiež je možné zasunutú dosku totálne odpojiť (teda odpojiť tri 8-bitové porty čipu 8255A od dosky programátoru) pomocou DIP spínačov - toto ale nie je celkom nutné, je to iba moje rozhodnutie, bez problémov je toto možné odpojovanie úplne vynechať - osobne len vypnem napájanie programátoru a DIL spínače sú trvale zapojené, zatiaľ som sa zo žiadnym problémom pri používaní nestretol. Použité zapojenie umožňuje po naprogramovaní jedného bitu úplne vypínať napájanie programovaného čipu PROM 74188 (odporúčané výrobcom - tento čas slúži na zotavenie čipu po programovom pulze), toto sa fakticky nikde na webe v publikovaných zapojeniach PROM programátorov nepoužíva, tu to mám kompletne vyriešené a programové vybavenie túto uvedenú možnosť skutočne naplno využíva, predĺženie samotnej doby programovania je pritom zanedbateľné a teda nevidel som dôvod aby som to nepoužil - ak to mám vďaka svojmu návrhu zariadenia priamo k dispozícii.

 

Kompletne osadená doska programátoru PROM 74188.

 

Funkcia LED na doske programátoru:

 

Zelená LED  (x1) - indikácia napájania dosky programátoru

Modré LED  (x2)  - indikácia - čip 74188 je pod napätím (dané dostupnosťou púzdra iba na 2x2 pre LED)

Červená LED (x1)  - indikácia programovacieho pulzu (zvýšenie Ucc z 5V→10.5V)

 

Vlastný počítač SBC6502 teraz beží na frekvencii =4MHz - mám urobené a pripravené programové vybavenie aj pre iné hodnoty x-talov - pre jednoduchosť používania som sa ale nakoniec rozhodol uverejňovať vždy kompletný program pre konkrétny x-tal.

 

Počítač SBC6502 (spodná doska) + programátor PROM 74188 (horná doska).


Teraz k vlastnému zapojeniu:

 

Programátor na svojej doske má 3 integrované obvody - 74LS00, ďalej čip 7417 (ešte lepšie je tu nasadiť obvod 74LS17 alebo 74LS07  - majú nižšiu záťaž na svojom vstupe - a popritom má aj menší vlastný odber) a nakoniec 74LS245 (alebo 74HCT245). Presne za ZIF pätičkou (je to pätička s nulovou prítlačnou silou) v strede na obrázku sa nachádza pomocné 12V DIP relé.

Jazýčkové relé spína priamo výstup +5V na napájanie čipu PROM, +10.5V programovací pulz už teda prechádza cez predtým zopnuté relé). Výhodou je to že pri vypnutí relé je pretekajúci prúd podstatne menší (jeho hodnota je cca 40÷50mA, teda iba vlastný odber PROM pri 5V), pretože vypína už iba +5V napájanie, t.j. riziko opaľovania kontaktu relé v tomto zapojení je skutočne minimálne a teda výdrž použitého relé je veľká, rozhodne vydrží veľmi dlho a v uvedenom zapojení ho len tak ľahko nezničíte. /Zatiaľ napálených už cca 40 obvodov bez najmenších problémov./

Ako som pozeral relé má garantovaných 100.000.000 zopnutí ... čiže nazaj tu nejaký čas vydrží.

Zapojenie vývodov tohoto konkrétneho DIP relé je podrobne nakreslené v schéme vlastného programátoru.

 

Čip 8255A nám dáva k dispozícii tri 8-portové brány (sú využité kompletne všetky 3 porty a na nich aj všetky bity), v programátore som ich použil nasledovne:

 

Výstup:

port A - bity 0,1,2,3,4 - vývody PROM 74188 adries A,B,C,D,E

          0=A, 1=B, 2=C, 3=D, 4=E, /teda komplet 32byte/

          bit 5 - ovládanie CS(neg.) PROM

          bit 6 - ovládanie prog.pulzu z 5V/10.5V/5V

          bit 7 - ovládanie relé na On/Off pre pin 16 (Ucc) PROM 74188

          ovládanie sa prevádza pomocu príkazu POKE


Výstup:

port B - bity  0,1,2,3,4,5,6,7

          ovládanie tranzistorov T1÷T8, ktoré spínajú výstupy portu B do 0 pri programovaní

          pamäť PROM 74188 sa programuje postupne v rámci bytu iba jednotlivo po bitoch,

          vždy je zopnutý v jednom okamžiku iba jeden bit, t.j. v jednom momente spína iba

          jeden tranzistor BS170,

          ovládanie sa prevádza pomocu príkazu POKE

Vstup:

port C - bity  0,1,2,3,4,5,6,7

         čítanie obsahu PROM, čítanie obsahu PROM po naprogramovaní

         ovládanie sa prevádza pomocu príkazu PEEK

 

Je načase zverejniť schémy - sú 2 verzie:


Full 1 - použité DIP switche

Full 2 - jediný rozdiel - v zapojení nie je použitý 3x DIP switch

 

Programátor PROM 74188 - zapojenie Full 1 verzie - v nízkom rozlíšení:

 

 

Programátor PROM 74188 - zapojenie Full verzie 1 - v plnom rozlíšení:

prom74188programmer_full_hires.PNG (70,91 kb)

_________________________________________________________________

 

Programátor PROM 74188 - zapojenie Full 2 verzie, ale už bez použitia 3x DIP switch - v nízkom rozlíšení:

 

 

Programátor PROM 74188 - zapojenie Full 2 verzie (no DIP switch) v plnom rozlíšení:

prom74188programmer_full_hires_no_switch.PNG (67,19 kb)

 

Upozornenie:

Na pôvodných obrázkoch zapojenia programátoru boli nedopatrením z mojej strany prehodené vývody na tranzistoroch BS170, (B7 bolo na mieste B0 atď. - už je to v schémach opravené.

 

Nakoniec som v zapojení použil 12V DIP relé typu EDR201A1200 (odpor cievky = 1000Ω). Má schopnosť spínať prúd 1A, je to viac ako treba, maximálny prúd cez kontakt sa očakáva 450mA /pritom tečie len v zopnutom stave a pri vypnutí relé je už tento prúd vypnutý, tj. relé nie je príliš zaťažené/ a samotné relé je aj mimoriadne rýchle. (Pôvodne som tu mal nasadené DIP relé pre prúd 0.5A ktoré malo v sebe integrovanú ochrannú diódu - zase tu raz platí že väčší je lepší ...)


DIP relé ktoré som nakoniec použil nemá v sebe integrovanú ochrannú diódu pripojenú paralelne k vinutiu a preto som zapojenie musel mierne upraviť - nová ochranná dióda D5 je umiestnená priamo v pätičke pod samotným relé - tu stačí použiť diódu 1N4148.

 

Ak máte aj Vy k dispozícii jazýčkové relé ktoré nemá v sebe integrovanú ochrannú diódu - tak si potom upravte zapojenie nasledovne:


V zapojení pri použití uvedeného relé pribudne ešte dióda D5 typu 1N4148,

ktorá je priamo pripojená na piny relé - a to na č.2 a č. 6.

 

Poznámka (28.11.2021):

Pôvodne som tu uverejneil 3 verzie zapojenia programátoru, zapojenie verzie Light som ale nakoniec úplne stiahol, pretože rozdiel v zložitosti bol zanedbateľný a výsledné uverejnené 2 verzie sú omnoho lepšie vybavené na sledovanie toho čo sa pri programovaní PROM 74188 deje. Schémy sa zjednotili a považujem to za dobré riešenie- takže odteraz sú len 2 verzie zapojenia.


Programové vybavenie je jednotné pre obidve uverejnené verzie programátoru.


_________________________________________________________________

 

 

Do ľavého spodného rohu ZIF pätičky som navŕtal malú dierku (pozor, len veľmi plytko - nie hlboko !) a dal som tam kvapku bielej farby - je to teraz také jednoduché označenie pinu č.1, PROM 74188 sa zakladá do pätičky rovnakým kľúčom tak ako sú osadené všetky ostatné použité čipy na doske. Páčka ZIF pätičky e umiestnená napravo, inak by na doske zavadzala (bol by k nej zlý prístup) - a tiež som nechcel aby páčka v dolnej polohe vyčnievala svojím obrysom mimo dosky programátoru, to by mohlo vadiť (napríklad pri preprave, ľahko by sa ňou potom o niečo zavadilo). Rozloženie súčiastok (a teda aj použitá dĺžka prívodov) nie je nejako kritické, rýchlosť programu v jazyku BASIC na doske SBC6502 dovoľuje rýchlosť zmeny stavov na portoch čipu 8255A niekde tesne pod hranicou 1msec (pri x-tale 1.8432MHz,  pri x-tale 4.0000MHz to bude už  hodnota o niečo menšia ako polovičná) a teda na prívodoch má čas sa všetko dostatočne ustáliť. Dá sa to postaviť aj podstatne menšie, ale ja som si na to vyhradil celú Euro doštičku 100x 160mm, pretože teraz to mám ako jeden z možných modulov ktorý sa dá priamo nasadiť na samotnú  dosku SBC6502. Napravo celkom dolu (na ďalšom obrázku) je vidieť 8ks tranzistorov BS170 - ich výhoda je tá že netreba pri nich použiť predradné odpory na ich vstupoch. Na druhú stranu - pre ich náchylnosť na prerazenie statickou elektrinou som ich vstupy radšej natrvalo "prizemnil" 100k odpormi, je to istejšie (tým som výhodu nepoužitia odporov na vstupoch tranzistorov vo výsledku zase celkom úspešne eliminoval Laughing). Ale zase už teraz tak silne nehrozí ich prieraz, takže ... ako vždy niečo za niečo.

Záťaž vstupov čipu 8255A je minimálna a ochrana pred statickou elektrinou funguje. Nakoniec, kde sa dalo som v zapojení použil združené odporové polia (alebo ak chcete odporové siete), šetrí to počet použitých potrebných vývodov (a teda aj počet výsledných prepojení na univerzálnej doske), naozaj užitočná vec. Wink  

 

 

Na tomto obrázku úplne vpravo tesne za DIP prepínačom je vidieť 8x 100k odporové pole ("čierny vankúšik") pre tranzistory BS170, ako som už spomenul zaberá to menej miesta. Vpravo DIP spínač pre port B (nad ním priamo sú tranzistory BS170 a ide sa už priamo na pätičky ZIF), v strede DIP spínač  pre port A (z neho sa ide na čip 7417) a naľavo DIP spínač pre port C (ten berie údaje cez čip 74LS245) - toto rozmiestnenie na doske sa mi ukázalo ako najlepšie.


Veľký pozor na statickú elektrinu - tranzistory BS170 sú na to dosť chúlostivé. Mne sa osvedčilo ich vývody pri inštalácii skratovať kúskom drátiku, potom po osadení všetkých spomenutých tranzistorov v doske tieto drátiky odstrániť - nestretol som sa potom s tým že by sa mi niektorý z tranzistorov prerazil. Niekedy tie najjednoduchšie metódy sú najúčinnejšie - a najspoľahlivejšie.

(Na univerzálke sa tranzistory nevymieňajú práve najlepšie - smeruje k nim viacero vodičov - pri tejto stavbe som mal k dispozícii iba jednoduchú odsávačku, teraz som už podstatne lepšie vybavený.) 


Ešte sa vrátim k napájaniu, už som to popisoval, privedené napájanie je cez konektor J5, na dosku priamo ide cez vypínač +5V a +12V (teraz oceňujem že som pri stavbe SBC6502 od začiatku trval na použitom napájaní 12V/DC, teraz sa mi to pre programátor výborne hodí, vytrvalosť v tomto smere sa nakoniec predsa len vyplatila). Samotný spínaný napájací zdroj dáva 12V/DC - je schopný dodať prúd 1.5A.


Pozorný čitateľ si iste všimol že na doske mám použitých celkom dosť jumperov - tieto slúžili výlučne na pripojenie a odpojenie jednotlivých častí pri ich skúšaní a testovaní, keď som to potom celé prepájal a oživoval do chodiaceho celku. Robil som celé zapojenie z hlavy a jednotlivé celky som oživoval postupne. V schéme je už všetko nakreslené tak ako je zapojené v reáli. Takže prosím - ešte raz zdôrazňujem -  jumpre mi slúžili iba pri vlastnom oživovaní a testovaní vyvíjaného zapojenia, teraz ich už ignorujte a nehľadajte ich zapojenie niekde v schéme - nie sú tam zakreslené - nie sú totiž už potrebné, ďakujem ! Ak sú na obrázku zapojené tak slúžia na prepojenie jednotlivých častí do jednoho funkčného celku.


Priamo na prednej strane doštičky plošného spoja sa nachádzajú 2 menšie konektory - tie sú tak isto nevyužité, časom má byť na nich iba fyzicky zavesený predný kryt, neslúžia na nič iného - toľko na vysvetlenie.

 

Výkonový tranzistor BD140 som umiestnil na malý chladič - ten by stačil síce aj menší (alebo žiadny, tiež to bude fungovať, viď text ďalej), ale použitý chladič bol k dispozícii a na doštičku sa dal umiestniť na "ležato", t.j. tak že nikde neprečnieva a teda nezvyšuje konečnú stavebnú výšku. Tým pádom bolo rozhodnuté o jeho nasadení. Použitie chladiča nie je bezpodmienečne nutné - ak je všetko O.K. tranzistor v zapojení bezpečne "chodí" iba v spínacom režime, ale ak by bola založená do pätičky naozaj nejaká hodne "blbá" (t.j. pokazená PROM - a to sa nedá nikdy dopredu vylúčiť) - tak bez chladiča by asi nasledovala jeho tepelná deštrukcia a bola by potrebná jeho výmena. Umiestnenie a zapojenie výkonového tranzistoru BD140 je vyriešené tak, že je ho možné vymeniť priamo na doske a to bez akéhokoľvek pájkovania. Stačí iba dať preč šrób ktorý drží tranzistor v chladiči a tranzistor je možné priamo vytiahnuť z jeho pätičky. Trošku som sa "zapotil" pri tvorbe spínača 10.5V zdroja, tranzistory BC546 majú u mňa menšie odpory v báze ako v zapojení v AR (teraz sú tam odpory = 2k2). Moje použité BC546 majú h21e=380, ak máte doma tranzistory s rovnakou alebo vyššou hodnotou - použite ich. Dtto sa týka tranzistoru BD140 (použitý má h21e110), na jeho zatvorenie som zvolil odpor = 1k2, asi by tu vyhovela aj hodnota = 1k5. Odpor v kolektore tranzistoru BC546 má hodnotu 360Ω (sériovo zapojené dva odpory 180Ω), tu na tomto mieste by vyhovel v zapojení aj odpor 390Ω (toto som ale neskúšal, zase na druhú stranu rozloženie výkonu na 2 malé odpory je dobré - zbytočne nehrejú, alebo inak povedané - na každom z nich je iba polovičná záťaž). K dióde 1N4148 v zapojení zavesenej na bázu BC546 sa ešte vyjadrím - tu len dopredu naznačím že v skutočnosti v zapojení nie je potrebná. Po postavení programátoru som ju už z dosky nevyberal a tak tam zostala - a preto je nakreslená aj v schéme.

Prečo som v zapojení použil práve tranzistory BC546 ? - lebo ich mám doma - a dosť. Na ich mieste sa dajú použiť tak isto známe tranzistory typu 2N3904 (v našich končinách tiež veľmi rozšírené typy KC507 509, BC547, BC548, 2N2222 a i.). Dôležité je aby použité tranzistory mali povolený kolektorový prúd minimálne 100mA a h21e≥200, čo všetky spomenuté typy naprosto s prehľadom zvládajú.


Poznámka:

Kondenzátor 1uF pre časovanie oneskorenia som použil keramický (t.j. nepolarizovaný), na tomto mieste neodporúčam použiť elektrolytický kondenzátor (má väčší zvodový prúd). Kondenzátor uvedeného typu je bezproblémovo možné kúpiť, teda nie je dôvod ho nahradiť iným typom.


Všetky časti pri stavbe programátoru boli odsledované na dvojkanálovom digitálnom osciloskope s priamou možnosťou odčítania dĺžky generovaných pulzov.


Jasnačka, dá sa to celé postaviť aj bez digitálneho osciloskopu (meranie reálnej dĺžky pulzu na osciloskope je ale naozaj vec veľmi príjemná), výrazne mi pomáhali pri oživovaní osadené LED-ky, stačilo pri testovaní príslušne v programe spomaliť rýchlosť zápisu a pekne som na LED-kách videl čo sa postupne deje na výstupoch. Rozfázovanie (hodne pomalé) mi veľmi pomáhalo pri písaní programu. Potom už iba stačilo upraviť rýchlosti slučiek a programovacieho pulzu podľa teoretických výpočtov (boli to pritom výpočty iba z hlavy) a už som len jemne dolaďoval na presnejšie hodnoty. Celkom som sa trafil, teoretická hodnota ktorú som naozaj len odhadol (bez nejakých zložitých výpočtov) sa odlišovala o menej ako 8% od praktickej, takže som to len dostavil na správnu hodnotu a bolo vybavené. Toto bola tá najpríjemnejšia časť dolaďovania celého programu - všetko ostatné už fungovalo.

 

Tu je vidieť 1uF kondenzátor (keramická väčšia "kvapka" modrej farby hneď vedľa tranzistoru) na obrázku vľavo dole.

 

Ďalšia perlička - s ktorou som ale nerátal, ale veď to poznáte - keď sa "zadarí", tak to skutočne stojí za to ... - indikácia (červená LED) programovacieho napätia pre jednoduchosť zapojenia (použitý vlastný nápad) používa na vstupe 5.1V Zenerovu diódu (ZD) aby svietila až pri napätí na čipe =10.5V. Osadil som tam supersvietivú LED, lenže - akurát voľba tejto supersvietivej "potvory" spôsobila že sa aj pri napätí na vstupe =5V zbytkovým záverným prúdom zenerovej diódy už celkom intenzívne rozsvecovala (toto som fakt nečakal, možno to robila táto konkrétna ZD, život niekedy prináša nečakané prekvapenia), čiže to bolo v tom okamihu ako indikácia stavu fakticky nepoužiteľné. Na potlačenie zbytkového prúdu ZD ale stačilo k tejto červenej LED pridať paralelne zapojený odpor 1k÷1.2k, potom už naozaj nesvietila vtedy kedy nemala. Takže bacha na supersvietivé LED v tomto zapojení, tu na tomto mieste ich použitie môže nemilo prekvapiť. Našťastie stačil na vyrešenie problému spomínaný jediný pridaný odpor - a nemusel som "dolovať" dotyčnú ZD von z dosky a tak isto aj spomínanú LED. Následne sa to už správalo tak ako som potreboval (a ako som čakal od samého začiatku).Wink Zase na druhú stranu - toto bol len druhý problém (prvým bolo prehodenie prívodov na jednom tranzistore, zle som si pamätal rozloženie nožičiek, zamenil som C s E, bolo to zaujímavé- robilo to fakt psie kusy ..., stratil som s tým našťastie len pár minät) ktorý sa mi pri stavbe programátoru v oblasti hardware vyskytol - s tým sa naozaj dá žiť. Len pripomínam že som to staval priamo z hlavy a výsledný nákres zapojenia som urobil až po oživení celého programátoru na univerzálke. V schéme je spomínaná úprava zapojenia už aplikovaná.

 

Vytvorenie potrebného zdroja programovacieho napätia +10.5V:

 

Programátor je napájaný z 12V/DC zdroja - zníženie napätia na potrebnú hodnotu je vyriešené dvojicou diód 1N4007 (1A typ) zapojenými v sérii, je zaujímavé že majú presne 0.75V úbytok na jednom kuse, teda na ich výstupe je presne požadovaných +10.5V pre programátor. Ako ich predzáťaž som zvolil odpor 1k2 voči zemi, ten možno nie je ani potrebný, ale jeden odpor v zapojení navyše ma už naozaj nezabil a nemám pocit že by som tým nejako nadmerne zvýšil zložitosť celého zapojenia. Týmto mi odpadlo zapojenie s odporom v sérii a 11V ZD, čo som kvitoval s povďakom, pretože práve toto mi na zapojení zdroja 10.5V v AR (Amatérske Rádio) vyslovene vadilo a bolo mi jasné že ak to tak nechám tak sa budem pri programovaní zo zápisným prúdom pohybovať u Alenky v ríši divov a nie v exaktnom prostredí.

(Ešte sa v popise k tomu čo sa mi nepáčilo na pôvodnom zapojení zdroja +10.5V z časopisu AR vrátim - a to v záverečnej 4.časti o programátore PROM).


 

Ďalšia úprava sa týka použitia Schottky diódy na mieste automatického prepínača 5V na 10.5V a naopak, je to také moje drobné vylepšenie jednej veci na programátore. Na tomto mieste sa často používa dióda 1N400x, z uvedeného vyplýva že potom to dá na čip PROM 74188 napájanie = iba 4.25V čo je už hodne málo. Ak by sa použil odporový delič medzi napájaním a zemou (data výstupy) tak ako je zapojený v časopisoch AR - počítajme - deľte 4.25V/2 a výsledných 2.125V na log.1 je už akosi primálo, preto som zapojenie s odporovými deličmi nepoužil a nasadil som 8x 3k9 voči +5V. Schottky dióda nám dáva minimálne 4.85V pri napájaní čipu PROM 74188, to je naozaj výrazne menší úbytok napätia na tejto dióde oproti typu 1N400x - a práve preto som ju použil v mojom programátore.

 

Čo sa týka hardware - to je asi tak to najdôležitejšie. Keďže sa všetko podarilo postaviť bez nejakých zásadných problémov, programátor je hotový - a tak som mohol pokračovať už vo vytváraní vlastného programového vybavenia.

 

Medzitým dostala doska programátoru na seba vlastný ochranný kryt (predsa len na doske sú - mimo iného - aj tranzistory citlivé na statickú elektrinu), nakoniec kryt je vždy - dobrá vec. Všetko mimo samotnej ZIF pätičky a DIL prepínačov je už zakryté. V neposlednom rade je krytom chránená tak isto aj vlastná páčka ZIF pätice - ak je sklopená dovnútra.


Miesto na polohovanie páčky tu je, tak isto na jej opätovné vyzdvihnutie, s tým som pri návrhu rátal,

nakoniec - páčka sa dá vyzdvihnúť aj zboku, je tam na to dostatok miesta.  V hornom kryte je tiež

ponechaný dobrý prístup k DIP prepínačom.

 

No a keď sa už urobil kryt vrchný - tak som urobil aj kryt predný.

(Vsadil som na strohý industriálny vzhľad.)


V druhej časti bude popis programového vybavenia - alebo inak povedané - manuál - nech sa môžete zoznámiť s tým čo program dokáže.

 

Záverom dodám:

Pri testovaní som "obetoval" 3 kusy PROM 74188, pretože som chcel mať 100%-nú istotu že programátor robí všetko tak ako má - síce z toho boli 2 kusy ktoré mali v sebe už napálené nejaké tie bitíky, ale neľutujem to, síce priebehy na osciloskope boli také aké treba než som ich použil, ale reál programovania je reál ... stálo to za to ich obetovať.

___________________________________________________

Priama možnosť skočiť do ďalších častí:

SBC6502 - 34 - Programátor PROM 74188. PROM 74188 programmer. Part 2-4.

SBC6502 - 35 - Programátor PROM 74188. PROM 74188 programmer. Part 3-4.

SBC6502 - 36 - Programátor PROM 74188. PROM 74188 programmer. Part 4-4.

____________________________________________________________

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

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

____________________________________________________________

Vaše hodnotenie, Rate post:

Atari 1050 - write switch.

By Administrator at December 13, 2019 17:51
Filed Under: Atari

A zase návrat ku koreňom - popis write switchu pre disketovú jednotku Atari 1050. Síce už na túto tému je toho dosť k dispozícii, ale zase raz riešenie toho istého urobené mierne odlišne. Napriek veku jednotky Atari 1050 je vcelku pozoruhodné že sa stále držia tieto jednotky nažive a v prípade zabudovania rozširujúcich rozhraní sa jedná o celkom "živé" malé turbo jednotky. Tiež niet k tomu veľmi čo dodať. Natiahnuť pdf-ko, čítať a užiť si to:

UKACOC_Newsletter_No_15.pdf (1,67 mb)

____________________________________________________________

Vaše hodnotenie, Rate post:

Motorizácia Atari. Get motorised ! Motor control via atari.

By Administrator at December 05, 2019 19:32
Filed Under: Atari

Pozrime sa na to v tomto krátkom článku ako vieme pripojiť rozličné motorčeky k malému Atari. Nejaký veľký pokec nehodlám robiť, je to hodne špecifické a asi nebude veľa ľudí ktorí pôjdu touto cestou ... -  nakoniec prečítajte si článok sami:

 

UKACOC_Newsletter_No_12.pdf (1,42 mb)

 

Nasleduje jednoduché ovládanie krokového motorčeku s počítačom Atari:

https://www.atarimagazines.com/computeii/issue3/page18.php

____________________________________________________________

Vaše hodnotenie, Rate post:

Floppy drive Atari XF521.

By Administrator at December 03, 2019 17:46
Filed Under: Atari

Atari XF521


Počuli ste už niekedy o 5.25" disketovej jednotke Atari XF521 ? Bohužiaľ tak isto patrí do kategórie ktorú ja označujem pojmom FPP (Festival Premárnených Príležitostí). Mala patriť niekde na pomedzie medzi Atari 1050 a Atari XF551, mala už moderný kabát, pritom sa stále malo jednať o jednotku ktorá ukladala na jednu stranu 180kByte dát. Riadiaci mikroprocesor bol 8048 (tu tá podobnosť s už spomenutou disketovou jednotkou Atari 1053 je už hodne veľká, teda aspoň v niečom), výhody z toho plynúce - priamo bola k dispozícii interná ROM a aj RAM, teda stačí jednoduchšia výsledná obvodová časť. Z hodne nekvalitného snímku nie je dobre vidieť že horný zadný kryt má 1/3 riešený ako perforovaný, teda vzhľadovo niečo ako XF351 - iba vetracia mriežka je pre 5.25" mechaniku urobená úmerne väčšia.

Po prevzatí Atari J.Tramielom sa ukázalo že je k dispozícii na skladoch veľké množstvo nepredaných Atari 1050 čo malo za následok uvedenie týchto jednotiek do predaja (toto považujem za logický krok) a tým sa následne pozastavila možnosť nasadenia Atari XF521. Keď sa konečne zásoby vypredali (rok 1986) tak už J.Tramiel nemal záujem podporovať 8 bity a projekt sa ukončil. 

Vtedy mali v dielňach niekoľko návrhov disketových jednotiek pre malé Atari. Jeden, s ktorým nakoniec išli ako konečným produktom, (pôvodne sa to nazývalo 1050CR - znížené náklady), ktorý používal počítačovú FD mechaniku a mal riadiaci mikroprocesor 8048. Nakoniec sa to "prebalilo" do nového XE šatu - a bola z toho XF521.

Nakoniec sa ukázalo (mimo iného) že procesor 8048 má príliš málo ROM na rozsiahlejšie veci (2kB) a dtto platilo aj o RAM - 64byte jednoducho bolo príliš málo. A tak v nasledujúcom projekte Atari XF551 sa už použil procesor 8040 (8050) kde ROM má 4kByte a RAM = 256byte. 

 


Disketová jednotka Atari XF521 s FD mechanikou 5,25" bola predvedená spoločnosťou Atari v januári 1985 na Winter CES v Las Vegas. Tam sa prezentovala sa v štýle XE, mala byť ekvivalentom a postupnou náhradou za Atari 1050, ale nakoniec sa Atari XF521 nikdy nepredávala.


 

Čo je skutočne zaujímavé je to, že sa táto FD jednotka objavuje na obale krabice pre počítač Atari 130XE, pritom je tam na obrázku vyobrazený aj monitor (XC1411) a tlačiareň (XTM201), ktoré sa do výroby tak isto nedostali ... a je nad slnko jasné že to už naozaj malo do výroby našliapnuté a 8bitová éra Atari mohla byť o poznanie lepšia a pestrejšia. Lenže - Jack Tramiel to naozaj uťal (a nielen toto) a ja mám už len možnosť písať o tom čo pohltila história bez možnosti overenia či by sa to ujalo - no, taká to bola doba ... Undecided


Informácií je skutočne poskrovne, vzniklo niekoľko predprodukčných kusov a to je tak asi všetko čo o nej vieme. Naozaj nie je toho veľa čo o nej vieme.

____________________________________________________________

Vaše hodnotenie, Rate post:

12_2019 Blog, Notes.

By Administrator at December 03, 2019 16:40
Filed Under: Blog

03.12.2019

December, idú Vianoce. Teda tie idú ož od leta, aspoň v reklamách.

Pomaly sa zase zvolebnieva, máme sa na čo tešiť ... ja zase pracujem na jednom malom projekte ktorý dúfam teraz do Vianoc dokončím a následne aj uverejním. (Ešte je na tom hodne roboty.)

_______________

Dnes sa pozrieme na ďalší zámerne pochovaný projekt pre malé Atari:

5.25" Floppy drive Atari XF521.


____________________________________________________________

05.12.2019

Ovládanie motorčekov malým Atari:
Motorizácia Atari. Get motorised ! Motor control via atari.

_____________________________________________________

13.12.2019

Piatok trinásteho, fakt pekný dátum. Tak si zlepšime náladu:
Atari 1050 - write switch.

____________________________________________________________

17.12.2019

Spomínaný projekt (z 03.12) sa podarilo dotiahnuť do konca - SBC6502 a programátor pre pamäte PROM 74188, uff, stihol som to do Vianoc ... dnes časť číslo 1:
SBC6502 - 33 - Programátor PROM 74188. PROM 74188 programmer. Part 1-4.

____________________________________________________________

20.12.2019

Nejako mi to tu vypadlo a tak tu odkaz píšem nanovo, manuál na používanie:

SBC6502 - 34 - Programátor PROM 74188. PROM 74188 programmer. Part 2-4.

_____________________________________________________

23.12.2019

Nasleduje vlastné programové vybavenie pre programátor:
SBC6502 - 35 - Programátor PROM 74188. PROM 74188 programmer. Part 3-4.

_____________________________________________________

26.12.2019

Popis a poznámky zo stavby programátoru:
SBC6502 - 36 - Programátor PROM 74188. PROM 74188 programmer. Part 4-4.

_________

No a toto bol posledný tohtoročný príspevok, takže želám všetko dobré v Novom roku:


____________________________________________________________

Vaše hodnotenie, Rate post:

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: