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 to celé vlastne začalo - pozeral som na webe aké sú dostupné zapojenia schém programátoru pre pamäte PROM 74188 a teda je to celkom bieda - dostupné sú zapojenia hlavne tzv. "ručného" programovania, niečo je už mierne zautomatizované (speccy). 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 začal programovo oživovať. Aj tak sa dá, nič nenormálneho v zapojení nie je. Nakoniec na webe si môžete čo je momentálne k dispozícii pozrieť a porovnať.


Dostupné zapojenia - dve zapojenia z AR (Amatérske rádio) majú zdroj 10.5V mierne povedané dosť zvláštny. Cez odpor 10Ω sa ide na ZD na 11V, potom nasleduje vlastný spínač.

Na prvý pohľad vyzerá že je to v poriadku - ale čip pri 10.5V má odber 450mA (TESLA datasheet, TI datasheet hovorí až o 750 mA ...), teda počítajte so mnou - na odpore 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 ešte je väčší, teda jeho hodnota (= 22Ω, zapojenie speccy) a to je tam ď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 a aj zmeny). 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 (35...) postavil a teda predstavu o dĺžke pulzov rozhodne mám (vtedy som použil 10msec napaľovací pulz), len som si to chcel overiť. A dosť som narazil než som našiel rozumný datasheet (nie od Tesly, ten je k dispozícii bez problémov). No a teraz som postavil programátor pre počítač ktorý slávi 42 rokov. Takže takto ...Smile


Našiel som v katalógu TI (Texas Instruments) z roku 1975 (mám ho doma) že 74188 odporúčajú programovať 10msec pre CS=1 a nasleduje 700ms programovací pulz, potom zase CS=1, toto už ale potom nie je napaľovanie ale priamo barbecue 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 viac ako dosť. Takže od toho som dal radšej ruky preč. TESLA uvádza v katalógu už podstatne prijateľnejšie údaje. (Pozri speccy.)

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).


 

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 (=1.8432MHz alebo =4.00MHz), tesne nad konektorom prívodu napájania 12V je jumper ktorým je možné prepínať rýchlosť procesoru. (5.00MHz oscilátor som bohužiaľ zatiaľ nezohnal v tomto prevedení.) Poloha jumperu smerom ku konektoru 12V = 4.00MHz, ak je jumper umiestnený bližšie ku CANON konektoru = 1.8432MHz.

___________________________________________________________


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

 

 

Takto vyzeral prvotný návrh dosky s použitím DIL relé, súčiastky sú len voľne založené do základnej dosky (bolo to iba v štádiu rozvrhu kde by boli súčiastky, DIP prepínač mal vedieť vyradiť ovládanie relé, prívod portov A, B a C mal ísť cez predný konektor), takto nejako vyzeral môj prvotný 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.

Ako už viete predný konektor na SBC6502 Erika0 som úplne zrušil 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ý túto cestu nasadenia 9 relé opustil a v zapojení sa používa iba jeden jediný kus.

___________________________________________________________


Použitie tranzistorov BS170 v zapojení programátoru PROM 74188 bolo inšpirované pred časom stretnutím s Martinom Lukáškom na Foreveri a rozhovorom na danú tému, za "nakopnutie" správnym smerom mu dodatočne ďakujem. Predtým som uvažoval nad použitím 8x DIP relé na spínanie (viď foto nad týmto textom 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 by to ale vo výsledku zvyšovalo zložitosť dosky (a hlavne - mne dostupné jazýčkové relé nemajú potrebný prepínací kontakt - aby to bolo naozaj univerzálne), nakoniec som si povedal že doska s relé tak isto bude, s výkonnejšími kontaktami (a teda budú tam aj prepínacie kontakty) ale bude to riešené ako samostatná doska, nie na tomto programátore a tak teda prišlo na použitie spomínaných tranzistorov. Výmenný systém hornej dosky na SBC6502 mi takéto riešenie umožňuje.

 

Kto má chuť si naštudovať datasheet tak som to tu nachystal, sú tam aj ďalšie PROM, extra som nevypichol 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

____________________________________________________________


Ako som už spomínal, hardware a aj program sa dá úspešne preniesť na iný typ 8-bitu, ktorý má k dispozícii voľný čip 8255A. Toto sa dá urobiť aj pre Atari (popísal som pripojenie 8255A + Atari v samostatnom článku), PMD-85 má čip 8255A k dispozícii priamo. Jediná vec ktorú bude treba urobiť bude sa treba "pohrať" s vytvorením programovacieho pulzu (teda jeho dĺžky) v riadku 3750. A to sa mi až taká veľká robota nezdá, popritom obidva spomínané typy počítačov dokážu priamo ukladať aj vytvorené DATA. Pre Atari priamo vyhovuje program s rýchlosťou x-talu = 1.8432MHz, pričom programovací pulz v riadku 3750 treba skrátiť o 30%, čiže slučka FOR-NEXT v uvedenom riadku by bola v tvare FOR F=0 TO 11:NEXT F (na vysvetlenie, Atari síce beží na 1.79MHz ale zobrazovanie ho o cca 30% spomaľuje). Dtto sa dá urobiť (skrátiť ich dobu o 30%) s programovými riadkami 2010, 2050 a 2100, ale bude to fungovať aj keď tu už zo slučkami nič neurobíte a necháte ich v pôvodnom stave.

Ďalšia možnosť je v Atari vypnúť zobrazovanie počas programovania a potom netreba už robiť žiadnu úpravu v programe, teda tých 30% rýchlosti získame práve vypnutím zobrazovania.

____________________________________________________________

 

Poznámka:

(Niekde doma mám založený hodne starý programátor na 74188 postavený pred mnohými rokmi (vlastný návrh), ale je to 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áha 16, 8, 4, 2, 1), jeden vodič a 8 kolíkov do ktorých sa pripne vodič - sú určené pre nastavenie programovacieho bitu. Tiež som 74188 použil ako dekodér z BCD kódu na sedemsegmentovky LED - kedysi sa nedali zohnať dekodéry D146 a 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 sám čo potrebuješ - aj tak to bolo rýchlejšie ako tie dekodéry niekde skúsiť zohnať. Nechcem to tu nejako ďalej rozoberať ale chcel som sa už jeho používaniu vyhnúť a ísť na niečo modernejšieho, myslím si že sa to podarilo.) 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 7493 a dekodér vyberal postupne cez maticu diód to čo sa malo v daný okamžik robiť (programovací pulz bol =10ms). Čiže bolo tam ešte pár diód, 2x čip 7400 a tranzistory na spínanie 10.5V, zdroj dodával 5V a 10.5V. Fungovalo to a asi by to fungovalo aj dnes, len to nemám chuť používať, zautomatizovaný programátor (aj používanie) to predsa len posúva niekde inam. Je to založené niekde v pivnici a než by som to našiel tak som si radšej postavil niečo čo je modernejšie. No a teraz som si to zautomatizoval na počítač ktorý je ešte o nejaký ten rok starší (1977) ako môj pôvodný návrh ručného programátoru, na teraz už 43 ročný počítač - teda keď sa to tak vezme - vlastne je to mašina v najlepších rokoch.


Ešte zdôrazním nasledovné - povolená záťaž PROM 74188 na výstupe =12.5mA, teda netreba čip zbytočne zaťažovať nad túto hodnotu, ak to dodržíte tak životnosť napálenej PROM bude naozaj výborná.


Poznámka:
Tu by som rád upozornil na to že som pri vývoji programátoru naďabil na jednu 8255A ktorá na takte =5.00MHz blbla, jednoducho nefungoval správne výstup na port A (porty B a C pritom na  5.00 MHz fungovali - no problem), po znížení na takt 4.00MHz ale šváb išiel ako víno, takže bacha - sem-tam sú čipy ktoré môžu pripraviť nepríjemné prekvapenie ! (Na rozdiel od ostatných ktoré 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ť. Spomínaný čip 8255A čo robil problémy bol  pritom tiež "zahraničák". Ostané čipy 8255A mi v pohode išli aj na 6.00MHz. (Nakoniec išiel do inej mašiny kde "fičí" síce na púhych na 2MHz - ale tam je skutočne naprosto bezproblémový.)

 

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

_________________________________________________________

P.S.1:

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

"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é nemám), fakt je že som ich doteraz na tomto programátore napálil asi tak 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 ...

_________________________________________________________

P.S.2:

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 tiež 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í (veľký záverný prúd, asi by 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 na hodnotu 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).

 

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 ju odoberiete tak to celé nakoniec zaručene nebude fungovať - a tak som diódu 1N4148 radšej v zapojení nechal.

 Foot in mouth

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

_________________________________________________________

P.S.3:

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 4bity) a aj PROM 74S571 (512x 4bity). 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 PROM 74S571 - a ani teraz ich nemám k dispozícii. 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)

____________________________________________________________

 

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/SBC6502-0-UvodIntroduction.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:

 

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 programu správne inicializovaný a teda je v stave kedy sa s ním dá komunikovať a zároveň blokuje 10.5V na napájaní PROM a pätička PROM 74188 je bez napájania (Full verzia).

     

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).

 

Program je napísaný tak, že je možné ľahko modifikovať pre rôzne hodnoty použitých x-talov pre procesor, 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 (dec) 31000÷31031 pre uloženie 32byte RAM a adresy 32032÷32029 pre rozloženie jedného bytu na jednotlivé bity (teda zaberá ďalších 8byte). (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. 


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 to najjednoduchšie aké existuje - je to iba jednoduchý súčet obsahu všetkých 32 byte (dekadicky). CRC je po spustení programu vždy nanovo počítané z DATA riadkov a kontroluje sa priamo voči CRC ktoré je súčasťou DATA riadkov. Ak to z akýchkoľvek dôvodov nesedí = koniec programu. 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 v terminálovom okne. Nehodlám tu robiť podrobný popis programovacieho pulzu, to si pozrite v datasheete (bude uverejnený v 4. časti), tu je to v programe zabezpečené tak ako treba, nakoniec pozrite si to na konci tohoto článku - sú priložené dumpscreeny z osciloskopu.

 

PROM 74188 musí byť pre programovanie tzv. "čistá" t.j. musí obsahovať samé nuly aby sa dalo pokračovať, ak je v nej už niečo zapísané tak na to program upozorní (vždy sa to pred programovaním skontroluje) a nedovolí previesť  zápis. Program najprv napaľuje všetky byte postupne pekne jednotlivo bit po bite (ak je obsahom na potrebnom mieste 0 tak programovací pulz je obídený, 0 sa 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 74188 požadovaný obsah - program vyhlási PROM 74188 za zlú a ukončí sa. Oteplenie čipu vďaka wait stavom je úplne zanedbateľné, je to niekde okolo 40°C, merané bezdotykovým teplomerom.


Charakteristické pre tento typ pamäte je špeciálne programovanie, programuje sa bit po bite v rámci bytu, nie naraz celý byte. Najprv som uvažoval že si rozložím 32byte pekne hneď pred napálením najprv do postupnosti 256byte (32x8) 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ť len jeden jediný byte (čas čo to spotrebuje aj tak treba na zotavenie PROM) a ten 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 stačí púhych 8byte ... (aj keď tu potrebná RAM naozaj nehrá rolu).

___________________________________________________________


V programe oproti uverejnenému mauálu 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 niekedy rozhodol sa 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 (teda 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 prvý riadok z rovnakým číslom obsahom druhého riadku s istým číslom ... to sa mi stalo miekoľkokrát a problém sa hľadal naozaj dosť blbo. Ako vždy keď píšem program ak je jedna časť odskúšaná -a funguje, tak do nej už ak sa dá 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ú trable - toto je vo verzii 1.02 už 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ýrazne pomalšie ako počítač ...).

 

Pretože program spoľahlivo funguje, tak momentálne to nevyzerá na to že by po verzii programu 1.01 nasledovala nejaká verzia 1.02 ... ak áno, asi to len budú kozmetické úpravy, ktoré nemajú vplyv na funkciu programu.

(Poznámka 08.01.2020 - došlo na tie kozmetické úpravy ...  je tu ver.1.02, manuál sa nemení, je stále platný pre všetky verzie.)

(Program som začal písať 19.11., kompletne bol dokončený za necelý mesiac.)

 ____________________________________________________________

 

Program bol vyskúšaný a otestovaný pre 4 rozličné rýchlosti procesoru - a to 1.8432MHz, 2.4576MHz, 4.00MHz a 5.00MHz. Aby sa nemuselo špekulovať čo a ako a kde treba  previesť zmeny - uverejňujem 4x kompletný program a to vždy pre konkrétnu rýchlosť procesoru.

 

Pritom rozdielne riadky v programoch - sú to tieto riadky, je ich iba 5:


2010 - čakacia slučka, prispôsobené rýchlosti procesoru
2050
- čakacia slučka, prispôsobené rýchlosti procesoru
2100
- čakacia slučka, prispôsobené rýchlosti procesoru
3750
- programovací pulz (jeho dĺžka), prispôsobené rýchlosti procesoru
8763
- dátum vzniku, verzia programu, použitá rýchlosť procesoru

 

No a teraz vlastné programové vybavenie - napísané v jazyku Microsoft BASIC, momentálne je dostupná verzia 1.02 zo dňa 08.01.2020:

 

Program pre rýchlosť procesoru 6502 = 1.8432MHz:

74188 programmer 1_8432MHz_v102.txt (11,34 kb)


Program pre rýchlosť procesoru 6502 = 2.4576MHz:

74188 programmer 2_4576MHz_v102.txt (11,34 kb)


Program pre rýchlosť procesoru 65C02 = 4.00MHz:

74188 programmer 4_0000MHz_v102.txt (11,34 kb)

 

Program pre rýchlosť procesoru 65C02 = 5.00MHz:

74188 programmer 5_0000MHz_v102.txt (11,34 kb)


Jedná sa o čisto textové súbory.

_____________________________________________________


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

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


(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  a následná 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:

 

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 dĺžku v rozmedzí 1÷20msec, tam sa s prehľadom nachádzam). 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ájancie napätie z 5V na 10.5V, CS ide do log.0, vtedy prebieha vlastný programovací pulz, potom zase CS do log.1, zhadzuje sa 10.5V na 5V a CS ide zase do log.0.

Poznámka: CS je negované, môj editor nedokáže negáciu priamo vypísať do textu. 

 

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, teda meniť to - na to nemám dôvod. 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.

_________________________________________________________


Ukážka - listing programu pre verziu rýchlosti procesoru = 4.00MHz:


 1000 REM ******************* Start *************************
 1001 REM **    SBC6502 Erika0 - 32kB RAM + chip 8255A     **
 1002 CLEAR:PD=31000:PE=31032:POKE 15,80:REM 80column.
 1003 REM   PD adr31000-31031 = 32byte PROM data content   **
 1004 REM ***************************************************
 1005 REM PE adr31032-31039=8byte(one byte to bit conversion)
 1006 REM ***************************************************
 1007 CWR=32771:PA=32768:PB=32769:PC=32770
 1008 REM CWR register,PA=adress portA,PB=port B,PC=port C
 1009 REM ****** Initialize port A, B, C (chip 8255) ********
 1010 POKE CWR,137: REM CWR register port A,B=OUT,Port C=IN
 1011 POKE PA,0:POKE PB,0:REM PA=null, PB=null
 1012 REM ******************* Options ***********************
 1013 ? CHR$(12):REM CLS-for HyperTerminal
 1014 ? TAB(19);"Turn on the power to the programmer !":GOSUB 2000
 1020 Z=0:X=0:Y=0:POKE PB,0:GOSUB 8760
 1100 INPUT A$
 1120 IF A$="H" THEN 4200
 1130 IF A$="D" THEN 4300
 1140 IF A$="R" THEN 5000
 1150 IF A$="T" THEN 6000
 1160 IF A$="V" THEN 8000
 1180 IF A$="W" THEN 7000
 1190 IF A$="E" THEN 8804
 1195 IF A$="Q" THEN 8804
 1200 ? " Bad input !":? A$:GOSUB 2000:GOTO 1020
 2000 REM ************** Waiting subroutines  ***************
 2010 FOR F=0 TO 10000:NEXT F:RETURN
 2050 FOR F=0 TO 150:NEXT F:RETURN
 2100 FOR F=0 TO 500:NEXT F:RETURN
 3500 REM ****** Subroutine - conversion byte to bit ********
 3510 ?:? "Byte (dec) to bit:";A
 3520 S=PEEK (PE+0):? "b0:";S:GOSUB 3700
 3540 S=PEEK (PE+1):? "b1:";S:GOSUB 3700
 3560 S=PEEK (PE+2):? "b2:";S:GOSUB 3700
 3570 S=PEEK (PE+3):? "b3:";S:GOSUB 3700
 3580 S=PEEK (PE+4):? "b4:";S:GOSUB 3700
 3590 S=PEEK (PE+5):? "b5:";S:GOSUB 3700
 3600 S=PEEK (PE+6):? "b6:";S:GOSUB 3700
 3610 S=PEEK (PE+7):? "b7:";S:GOSUB 3700
 3620 RETURN
 3700 REM ************ Subroutine for burning ***************
 3701 IF S=0 THEN RETURN:REM 0=no programmming bit
 3702 REM description line number:
 3703 REM line 3720 - chip under voltage, relay on, waiting
 3704 REM line 3720 - port A, bit7=1 
 3705 REM line 3730 - adress to PA + bit data to port B
 3706 REM line 3730 - port A, bit7=1, relay on
 3707 REM line 3740 - Ucc=5V/10.5V, CS=1
 3708 REM line 3740 - port A, bit7=1, bit6=1, bit5=1,relay on
 3709 REM line 3750 - programming pulse =17msec.
 3710 REM line 3750 - Ucc=10.5V, CS=0, relay=on
 3711 REM line 3760 - end prog.pulse
 3712 REM line 3760 - Ucc=10.5V/5V, CS=1
 3713 REM line 3770 - Ucc=5V, CS=0, PB=0, relay=on
 3714 REM line 3770 - Ucc=0V, relay=off, waiting
 3720 POKE PA,128:GOSUB 2050
 3730 POKE PA,(A+128):POKE PB,S
 3740 POKE PA,(A+224):REM 128+64+32
 3750 POKE PA,(A+192):FOR F=0 TO 43:NEXT F
 3760 POKE PA,(A+160)
 3770 POKE PA,128:POKE PB,0:POKE PA,0:GOSUB 2050
 3990 RETURN
 4000 REM ******* Subroutine for computing CRC data ***Y*****
 4010 L=0
 4019 FOR G=PD TO PD+31:Q=PEEK(G):L=L+Q:NEXT G
 4040 RETURN
 4100 REM ******** Subroutine for CRC data in line **********  
 4110 RESTORE:L=0
 4120 FOR G=PD TO PD+31
 4130 READ M:POKE G,M
 4140 Q=PEEK(G):L=L+Q
 4150 NEXT G
 4160 RETURN
 4200 REM *************** Hexa input data *******************
 4202 GOSUB 4900:F=PD:B$="0123456789ABCDEF":N=0:S=0
 4203 ? "Adress:  data:":? "(hex)    (hex)"
 4206 L=N AND 15:H=(N-L)/16
 4207 ?" :";:? MID$(B$,H+1,1)MID$(B$,L+1,1);"     ";:INPUT A$
 4208 IF LEN (A$)=1 OR LEN (A$)>2 THEN GOSUB 4290:GOTO 4207
 4227 IF LEFT$ (A$,1)="F" THEN S=240
 4228 IF LEFT$ (A$,1)="E" THEN S=224
 4229 IF LEFT$ (A$,1)="D" THEN S=208
 4230 IF LEFT$ (A$,1)="C" THEN S=192
 4231 IF LEFT$ (A$,1)="B" THEN S=176
 4232 IF LEFT$ (A$,1)="A" THEN S=160
 4233 IF LEFT$ (A$,1)="9" THEN S=144
 4234 IF LEFT$ (A$,1)="8" THEN S=128
 4235 IF LEFT$ (A$,1)="7" THEN S=112
 4236 IF LEFT$ (A$,1)="6" THEN S=96
 4237 IF LEFT$ (A$,1)="5" THEN S=80
 4238 IF LEFT$ (A$,1)="4" THEN S=64
 4239 IF LEFT$ (A$,1)="3" THEN S=48
 4240 IF LEFT$ (A$,1)="2" THEN S=32
 4241 IF LEFT$ (A$,1)="1" THEN S=16
 4242 IF LEFT$ (A$,1)="0" THEN S=0
 4244 IF RIGHT$ (A$,1)="F" THEN S=S+15
 4245 IF RIGHT$ (A$,1)="E" THEN S=S+14
 4246 IF RIGHT$ (A$,1)="D" THEN S=S+13
 4247 IF RIGHT$ (A$,1)="C" THEN S=S+12
 4248 IF RIGHT$ (A$,1)="B" THEN S=S+11
 4249 IF RIGHT$ (A$,1)="A" THEN S=S+10
 4250 IF RIGHT$ (A$,1)="9" THEN S=S+9
 4251 IF RIGHT$ (A$,1)="8" THEN S=S+8
 4252 IF RIGHT$ (A$,1)="7" THEN S=S+7
 4253 IF RIGHT$ (A$,1)="6" THEN S=S+6
 4254 IF RIGHT$ (A$,1)="5" THEN S=S+5
 4255 IF RIGHT$ (A$,1)="4" THEN S=S+4
 4256 IF RIGHT$ (A$,1)="3" THEN S=S+3
 4257 IF RIGHT$ (A$,1)="2" THEN S=S+2
 4258 IF RIGHT$ (A$,1)="1" THEN S=S+1
 4259 IF RIGHT$ (A$,1)="0" THEN S=S+0
 4260 POKE F,S:F=F+1:N=N+1
 4279 IF F=PD+32 THEN GOSUB 8700:?:GOTO 8800
 4280 GOTO 4206
 4290 REM *** Subroutine for information about input data ***
 4291 ? TAB(31);" Out of range !!!":GOSUB 2010:RETURN
 4300 REM *************** Dec input data ********************
 4301 F=PD:S=0:GOSUB 4900
 4302 ? "Adress:      data:":? "(dec)        (dec)"
 4303 ? S,:INPUT Q: IF Q>255 THEN GOSUB 4290:GOTO 4302
 4304 POKE F,Q: F=F+1:S=S+1
 4305 IF F=PD+32 THEN GOSUB 8700:?:GOTO 8800
 4308 GOTO 4303
 4900 REM ******* Subroutine for input PROM DATA Name *******
 4910 ? TAB(19);"(     Name lenght = max.40 characters    )"
 4920 ? TAB(3);"PROM DATA NAME:";:INPUT C$
 4930 IF LEN (C$)>40 THEN GOSUB 4290: GOTO 4910
 4940 ?:RETURN
 4950 REM ***************************************************
 5000 ?:? "   - Read PROM and Write to Data line -":CRC=0
 5010 POKE PB,0:QW=0:A=0:POKE PA,128:REM PROM is energized
 5030 GOSUB 2050
 5035 QW=128+A
 5040 POKE PA,QW:OC=PEEK(PC)
 5060 POKE (PD+A),OC
 5080 CRC=CRC+OC
 5090 A=A+1
 5100 IF A=32 THEN GOTO 5120
 5110 GOTO 5040
 5120 REM IF CRC=0 THEN ?:?"     BLANK  PROM !":GOTO 5160
 5130 REM IF CRC>0 THEN ?:? "     ACTIVE PROM !":?
 5140 POKE PA,0: POKE PB,0:REM PROM is without power
 5150 IF CRC>0 THEN GOSUB 4900:GOSUB 8700:?:GOSUB 8800:END
 5160 POKE PA,0: POKE PB,0:GOSUB 2000:GOTO 1020
 5170 REM ***************************************************
 6000 ?:? "        Test - read blank PROM ";
 6005 POKE PB,0: REM Port B=0
 6010 QW=0:A=0:POKE PA,128:REM PROM is energized
 6030 GOSUB 2050:REM Delay to Relay ON
 6035 QW=128+A
 6040 POKE PA,QW:OC=PEEK(PC)
 6050 IF OC=0 THEN 6070
 6060 ? " Not a blank PROM ! - Insert new PROM !"
 6065 POKE PA,0:POKE PB,0:GOSUB 2000:GOTO 1020
 6070 A=A+1:IF A=32 THEN GOTO 6100
 6090 GOTO 6040
 6100 ? " Good - a blank PROM !":POKE PA,0:POKE PB,0
 6105 IF Z=1 THEN 7020
 6110 GOSUB 2000:GOTO 1020
 7000 REM ****************** PROM WRITING *******************
 7010 ? CHR$(12):REM CLS-for HyperTerminal
 7012 ?"                  WRITING PROM 74188 ...":?
 7015 Z=1: GOTO 6000
 7020 GOSUB 9000:? " Name Data file:";C$
 7030 GOSUB 9005:? " CRC=";CRC:IF CRC=0 THEN ?" No valid data !"
 7035 IF CRC=0 THEN GOSUB 2000:GOTO 1020
 7040 ?:?" Programming PROM - continue Y/N";:INPUT A$
 7045 IF A$="N" THEN 1020
 7050 IF A$="Y" THEN 7070
 7060 ?:? " Bad input !":GOSUB 2000:GOTO 7000
 7070 QW=0:A=0
 7100 RESTORE
 7110 REM ********** Reading Data line to program ***********
 7120 FOR G=PD TO PD+31:READ M:POKE G,M:NEXT G
 7200 REM ********** One byte to bit conversion *************
 7210 POKE PA,128:POKE PB,0:GOSUB 2050
 7310 A=0:QW=0
 7320 FOR G=PD TO PD+31
 7330 Q=PEEK(G):K=Q
 7340 FOR F=PE TO PE+7:POKE F,0:NEXT F
 7400 IF K>=128 THEN POKE (PE+7),128:K=K-128
 7410 IF K>=64 THEN POKE (PE+6),64:K=K-64
 7420 IF K>=32 THEN POKE (PE+5),32:K=K-32
 7430 IF K>=16 THEN POKE (PE+4),16:K=K-16
 7440 IF K>=8 THEN POKE (PE+3),8:K=K-8
 7450 IF K>=4 THEN POKE (PE+2),4:K=K-4
 7460 IF K>=2 THEN POKE (PE+1),2:K=K-2
 7470 IF K>=1 THEN POKE (PE+0),1:K=K-1
 7480 GOSUB 3500
 7490 A=A+1:GOSUB 2050
 7720 NEXT G
 7725 ?:? "End programming ...":GOSUB 2000:?:? "Verifying ..."
 7730 POKE PA,0:POKE PB,0:A=0:QW=0:GOSUB 2000
 7990 GOTO 8080
 8000 REM *********** VERIFYING PROM - DATA line ************
 8010 RESTORE
 8015 POKE PA,128:POKE PB,0:GOSUB 2050:A=0:L=0:QW=0
 8020 FOR G=PD TO PD+31
 8030 READ M:POKE G,M
 8040 Q=PEEK(G):L=L+Q
 8050 NEXT G
 8080 A=0:FOR G=PD TO PD+31:QW=128+A
 8090 POKE PA,QW:Q=PEEK(PC):R=PEEK(G)
 8091 ?"Adress(dec):  (PC):       (PROM):"
 8095 ?A,Q,R
 8100 IF Q=R THEN 8120
 8110 ? " Problem: PROM  <>  Data line !!!":X=1
 8120 A=A+1:NEXT G
 8121 IF Y=1 AND X=1 THEN ?:?" Sorry, bad PROM ...":POKE PA,0:END
 8122 IF Y=1 AND X=2 THEN 8130
 8125 IF L=0 THEN ?" Blank PROM !!!":POKE PA,0:GOSUB 2000:GOTO 1020
 8126 IF X=1 THEN ?:?" New attempt to burn, please wait ...":POKE PA,0
 8127 IF X=1 THEN :POKE PA,0:GOSUB 2000:X=X+1
 8128 IF X=2 THEN Y=1:POKE PA,0:GOSUB 2000:GOTO 7200
 8130 ?:? " Verifying O.K !":POKE PA,0:GOSUB 2000:GOTO 1020
 8700 ?:?"**** Subroutine PROM 74188 line data generator ****":?
 8711 ? "9000 C$=";CHR$(34);C$;CHR$(34);":ID=32:RETURN"
 8712 ? "9001 DATA";:FOR G=PD TO (PD+6):? PEEK(G);",";:NEXT G
 8713 ? PEEK(PD+7)
 8714 ? "9002 DATA";:FOR G=(PD+8) TO (PD+14):? PEEK(G);",";:NEXT G
 8715 ? PEEK(PD+15)
 8716 ? "9003 DATA";:FOR G=(PD+16) TO (PD+22):? PEEK(G);",";:NEXT G
 8717 ? PEEK(PD+23)
 8718 ? "9004 DATA";:FOR G=(PD+24) TO (PD+30):? PEEK(G);",";:NEXT G
 8719 ? PEEK(PD+31)
 8720 GOSUB 4000
 8730 ? "9005 CRC=";L;":RETURN";":REM CRC in (dec) form !":?
 8735 ?"***************************************************"
 8740 RETURN
 8760 REM **************** Subroutine MENU ******************
 8761 ? CHR$(12):REM CLS-for HyperTerminal
 8762 ? TAB(16);"*-- 74188 PROM programmer ---- Igi(c)2019 -----*"
 8763 ? TAB(16);"*-- 08.01.2020, ver.1.02, SBC6502 - 4.00MHz ---*"
 8764 ? TAB(16);"*";TAB(63);"*"
 8765 ? TAB(16);"*     (D) - dec input data to Data line        *"
 8766 ? TAB(16);"*     (H) - hex input data to Data line        *"
 8767 ? TAB(16);"*     (R) - reading PROM to Data line          *"
 8768 ? TAB(16);"*     (T) - test blank PROM                    *"
 8769 ? TAB(16);"*     (V) - verify data PROM - Data line       *"
 8770 ? TAB(16);"*     (W) - write data PROM from Data line     *"
 8771 ? TAB(16);"*     (Q) - or (E)nd program                   *"
 8772 ? TAB(16);"*";TAB(63);"*"
 8773 ? TAB(16);"*------------ Data line file name: ------------*"
 8774 GOSUB 9000:? TAB(16);"*   ";C$;TAB(63);"*"
 8775 ? TAB(16);"*----------------------------------------------*"
 8776 GOSUB 4100:IF L=0 THEN GOTO 8780
 8777 GOSUB 9005:IF L<>CRC THEN GOTO 8900
 8778 ? TAB(16);"*      Valid data in memory !    CRC=";CRC;TAB(63)"*"
 8779 GOTO 8781
 8780 ? TAB(16);"*    No valid data in memory !  CRC=";CRC;TAB(63)"*"
 8781 ? TAB(16);"*----------------------------------------------*"
 8782 RETURN
 8800 REM ************** Info for (D),(H),(R) ***************
 8801 ? "    Save this data (lines 9000-9005) in the"
 8802 ? "          specified line positions,"
 8803 ? "       and then run the program again !":?:?
 8804 ?:? " End program ...":END
 8900 REM ***************** Verify problem ******************
 8901 ?
 8902 ? " Problem ..."
 8903 ? " Bad verification result, difference in:"
 8904 ? " Computer        Data line"
 8905 ? " data CRC:  < >    CRC:"
 8910 ? " L=";L;:?"   CRC=";CRC:END
 8990 REM *********** PROM 74188 data lines *****************
 9000 C$=" Test file, all DATA bytes =0":ID=32:RETURN
 9001 DATA 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0
 9002 DATA 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0
 9003 DATA 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0
 9004 DATA 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0
 9005 CRC=0:RETURN:REM CRC in dec form !
 9006 REM ********************* End *************************

 

___________________________________________________

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/SBC6502-0-UvodIntroduction.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 - manual:

 

 

No a teraz už idem k používaniu vlastného programu, nazvem to "mini" manuálom:

 

Úvodná obrazovka hneď po spustení programu, už je aktivovaný čip 8255A, potom už môžeme zapnúť napájanie programátoru. 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é 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ú 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ť nového názvu.

 

Pokračujeme vo vkladaní dát na dané adresy PROM až prídeme na posledný byte č.31(dec).


Tu už program vygeneruje výsledné DATA riadky. Do vlastného programu potom vkladáme riadky 90009005 (tak ako je popísané na displeji).

Vyrátané jednoduché CRC sa tak isto prenáša, pri spätnom nahratí do SBC6502 je nanovo vypočítané a kontrolované s uloženou hodnotu CRC - ak nesedí = koniec programu (ak niekde niečo nesedí, síce je to krajná možnosť pretože to značí že je niekde naozaj problém, ale kontroluje sa to, štandartne to samozrejme zbehne 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 ľahko orientovať.

 

Teraz ideme ukladať data - voľba (H) z inými vstupnými údajmi - teraz sú 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 to urobí za nás. Tak isto zase ukladáme celých 32 byte (0÷1Fh).


Možná dĺžka názvu sa nemení, len adresa a data sú 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 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 PROM, ak áno nedovolí pokračovať. Nedovolí tiež pokračovať ak je PROM čistá a nemáte v DATA riadkoch "ž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 7 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, tak isto zbehla aj 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).

 

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 to tam mám, ale zatiaľ som sa reálne k tejto hláške nedostal (nechýba mi, túto konkrétnu chybu "simulujem" 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á 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. Mnou používanú cestu kde sa vytvorí txt súbor vidíte na samotnom obrázku.


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 príkazy LOAD a SAVE, tak som to musel nejako obísť.


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/SBC6502-0-UvodIntroduction.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

PROM 74188 burner.

 

 

Tak som sa predsa len pustil do tohoto projektu - programátor pre pamäte PROM 74188, ktorý spolupracuje z SBC6502 Erika0. Síce mi 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), stavba a celá realizácia (vrátane napísania programového vybavenia) mi zabrala viacero týždňov. 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 stále bobtnalo a bobtnalo ... až som si povedal dosť ! a teraz je to už v stave na uvoľnenie. Napísanie programu mi trvalo mesiac, "odsedel" som pri tom 14.pokračovaní takže to chvíľu trvalo. Nesedel som nad tým každý deň, čo zase bolo dobré lebo vždy ma niečo na doplnenie napadlo ... a snažil som sa to potom do programu prepašovať.

 

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 katódou, alebo pekný BCD dekodér z plným hexa výstupom zobrazenia (v jednom dekodéri pri piatich adresách krásne zobrazíte 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 v našich končinách toto bola jediná možnosť ako sa pokúsiť nahradiť vtedy nedostupné GAL čipy (teda samosebou - 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 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 sa buď nedal kúpiť, alebo jeho cena dosahovala výšky nákupu vtedajšieho osobného automobilu.) 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 aj krátka prístupová doba, ktorá bola 2x až 3x kratšia ako mala štandartná 150nS EPROM. A pre neznalých - PROM 74188 je jednorázovo programovateľná pamäť, t.j. ak napríklad pri "dlapaní" na ručnom programátore sa pomýlite, tak pokus musíte zopakovať - ale už iba s druhou PROM, pretože tá prvá je už iba na vyhodenie ... a vtedajšia cena PROM 74188 bola všetko iné - len nie ľudová.

 

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 s SBC6502 Erika0

         (ale aj s iným počítačom, tam tieto obmedzenia nie sú)

č. 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 (treba použiť DIP spínače)

č. 4 - v zapojení nebudú 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)

č. 6 - príkazy sú realizované priamo pomocou BASICu 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á skutočne mierna zmena programového vybavenia)

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

č. 8 - pripojenie a odpájanie napätia čipu pomocou DIP relátka (Full verzia)

č. 9 - indikácia základných stavov pomocou LED (Full verzia)

č.10 - vytvoriť Full a Light verzie, teda plnú verziu a aj "osekanú" verziu

         ((nakoniec existujú 3 verzie - 2x Full (switch or not switch) a 1x Light))

č.11 - pre spomenuté 3 verzie verzie použiť iba jedno programové vybavenie

         (žiadne úpravy programu pre funkčnosť v režime Full alebo Light)

č.12 - pre programátor stačia 2 dostupné napätia +5V a +12V, z 12V sa priamo odvodí

          aj potrebný zdroj +10.5V

č.13 - vyhnúť sa chybám v doteraz uverejnených zapojeniach zdroja 10.5V
č.14 - nech celé programovanie PROM "odmaká" počítač, teda jeho programové vybavenie

          (dosiahne sa podstatné zníženie možnosti chyby oproti ručnému "dlapaniu")

 

 

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

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


Vpravo osadený konektor J5.

 

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ú tak isto použité 3 kusy DIP prepínačov 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 to pri oživovaní hodilo.) Jediná vec s ktorou sa treba zmieriť je to, že všetky DIP prepínače majú čí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 v hlave ...Laughing 

 

Nakoniec - urobil som aj odľahčenú (t.j. v súčiastkach mierne osekanú a teda vo výsledku aj o niečo lacnejšiu) verziu Light ktorá je bez DIP prepínačov a funguje tak isto dobre, tu sú použité DIP spínače naozaj len ako možnosť úplného odpojenia portov 8255A od programátoru. Či to chcete mať takto aj vo verzii Full je len a len na Vás, tie DIPy môžete spokojne vynechať - a na doske bude potom viac voľného miesta. Ich použitie bolo naozaj moje rozhodnutie. Ak sa DIP spínače nepoužijú tak sa využité miesto na doske programátoru podstatne zmenší a zaberie to menej miesta, opakujem, je to vaša voľba ako na to.

 

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 preto aj nakreslené v schéme, ale nie je to nič hrozného, miesto na takéto prekríženie vodičov tam je - a vlastne je tam naozaj dosť miesta.

 

 

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


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

t.j. použitá maximálna výbava.

 

Programátor existuje v spomínaných 3 verziách - Full (2x) alebo Light. Už z názvu vyplýva že verzia Full má v sebe niečo navyše oproti Light - a to komfortnejšie vybavenie.

Popíšem to - ú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, túto rýchlosť ale tu v zapojení nevyužívam. Výhodou DIP relé je aj naprosto tichá prevádzka, nie je počuť žiadne "cvakanie", čo je podľa mňa veľké +. Ďalej je tu k dispozícii indikácia pomocou LED, tak isto je možné zasunutú dosku totálne odpojiť (teda tri 8-bitové porty čipu 8255A od dosky programátoru) pomocou DIP spínačov. Full verzia (obidve) umožňuje po naprogramovaní jednoho bitu úplne vypínať napájanie programovaného čipu PROM 74188 (odporúčané výrobcom - slúži na zotavenie čipu po programovom pulze), toto sa ale fakticky nikde na webe v publikovaných zapojeniach nepoužíva, tu to mám vyriešené a programové vybavenie to naplno používa.

 

 

Kompletne osadený programátor PROM 74188 - verzia FULL 1.

 

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úzdier 2x2 pre LED)

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

 

Verzia Light neobsahuje relé a takisto nemá v sebe žiadnu LED indikáciu, tak isto sú tam vynechané DIP spínače - čiže je to taký skutočný programátor pre "chudého muža", je možné ho postupne dovybaviť do Full verzie typu 1 alebo 2 a to iba pri drobných zmenách v zapojení (pripojí sa port B bit7 a malá úprava zapojenia vývodov na čipe 74LS00 + pribudne zapojenie relé), ostatné veci a teda rozdiely je dobre vidieť na schémach zapojení v Full a Light verziách. Ja rozhodne odporúčam stavať niektorú z Full verzií, tie výhody sú pre mňa úplne jasné, ale niekto nerád investuje navyše ak má pocit že to nie je potrebné.

 

Vlastný počítač SBC6502 teraz beží na frekvencii =4MHz - mám urobené a pripravené programové vybavenie aj pre iné hodnoty, zmena niektorých hodnôt je potrebná iba v niekoľkých riadkoch programu (konkrétne v piatich).

 

Všetky verzie Full aj Light používajú rovnaké programové vybavenie bez potreby ďalších úprav pre konkrétny typ, akurát vo verzii Light musíte vždy ručne zapínať a vypínať napájanie pre programátor - to je jediné obmedzenie pre Light verziu, nefunguje tam "automatika" - nie je tam k dispozícii.

 

 

No a teraz k vlastnému zapojeniu:

 

Programátor obsahuje 3 integrované obvody (toto platí pre všetky verzie - Full aj Light) - 74LS00, 7417 (74LS17) a 74LS245 (alebo 74HCT245). Presne za ZIF pätičkou v strede na obrázku sa nachádza 12V DIP relé (odpor cievky = 1000Ω, ochranná dióda cievky je priamo integrovaná v relé). Jeho schopnosť spínať prúd 0.5A je tak akurát, maximálny prúd cez kontakt sa očakáva 450mA. Relé spína priamo  výstup 5V na napájanie čipu PROM, 10.5V programovací pulz tiež prechádza cez zopnuté relé). Výhodou je to ža pri vypnutí relé je prúd podstatne menší, pretože vypíname iba 5V napájanie.

 

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


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

          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

 

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 vždy iba jednotliv po bitoch,

          vždy je zopnutý v jednom okamžiku iba jeden bit (teda v log.1), v jednom momente spína

         _iba jeden tranzistor BS170, ovládanie sa prevádza pomocu príkazu POKE

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 - ako som už písal existujú tri verzie:


Full 1 - kompletná výbava

Full 2 - jediný rozdiel oproti Full 1 - nie je použitý 3x DIP switch

Light - počet potrebných súčiastok okresaný na minimum

          (nepoužíva DIP switche, nepoužíva sa žiadna indikácia pomocou LED, nepoužíva sa relé)

 

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 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)


_________________________________________________________________


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


 

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

prom74188programmer_light_hires.PNG (58,75 kb)

_________________________________________________________________

 

 

Do ZIF pätičky som navŕtal malú dierku (nie hlboko !) a dal som tam kvapku bielej farby - je to označenie pinu č.1, teda 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 je umiestnená napravo, inak by mi na doske zavadzala (a bol by k nej zlý prístup) - a tiež som nechcel aby páčka v dolnej polohe vyčnievala svojím obrysom mimo vlastnej dosky programátoru, to by mi vadilo tak isto (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 nijako kritické, pretože rýchlosť BASICu dovoľuje zmeny stavov na portoch niekde tesne pod hranicou 1msec (pri x-tale 4.00MHz) a teda na prívodoch má čas sa všetko 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 takto teraz to mám ako jeden z možných modulov ktorý sa dá priamo "nasadiť" na SBC6502 Erika0. 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 zase výhodu nepoužitia odporov na vstupoch tranzistorov vo výsledku dá sa povedať celkom úspešne eliminoval Laughing).

Záťaž vstupov je teraz minimálna a ochrana na statickú elektrinu funguje. Nakoniec, kde sa dalo som v zapojení použil združené odporové polia (siete), šetrí to počet potrebných vývodov (a teda aj výsledných prepojení na doske), naozaj užitočná vec. Wink  

 

 

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

 

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 pre SBC6502 od začiatku trval na napájaní 12V/DC ..., teraz sa to naozaj hodí, vytrvalosť sa vyplatila).


 

Pozorný čitateľ si iste všimol že na doske mám hodne jumperov, tie slúžili výlučne na pripojenie a odpojenie jednotlivých častí pri ich skúšaní a testovaní, keď som to potom celé prepojil do chodiaceho celku a teda v schéme je už všetko nakreslené tak ako je to zapojené v reále. Takže prosím, ešte raz -  jumpre mi poslúžili iba pri vlastnom oživovaní a testovaní vyvíjaného zapojenia, teraz ich už naozaj ignorujte a nehľadajte ich zapojenie niekde v schéme - nie sú tam zakreslené, nie sú tam totiž už v žiadnom prípade potrebné, ďakujem !


Tak isto sa priamo na prednej strane nachádzajú 2 menšie konektory - tie sú tak isto momentálne nevyužité, časom má byť na nich fyzicky zavesený predný kryt, neslúžia na nič iného. Toľko na vysvetlenie.

 

Výkonový tranzistor BD140 som umiestnil na chladič. Ten by stačil síce aj menší, ale použitý bol k dispozícii a na doštičku sa dal umiestniť tak že nikde neprečnieva svojou výškou, tým pádom bolo rozhodnuté o jeho nasadení. Pritom použitie chladiča nie je bezpodmienečne nutné - ak je všetko O.K. tak tranzistor v tomto zapojení bezpečne "chodí" iba v spínacom režime, ale ak by bola založená do pätičky naozaj nejaká hodne "blbá" PROM (a to sa nedá vylúčiť) - tak bez chladiča by určite potom nasledovala jeho deštrukcia a bola by potrebná výmena. Aj napriek tomu je umiestnenie a zapojenie tranzistoru BD140 vyriešené tak, že je ho možné vymeniť priamo a to bez 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ú 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 vyššou hodnotou - použite ich. Dtto sa týka tranzistoru BD140, na jeho zatvorenie som zvolil odpor = 1k2. Asi je to aj dané tým že používam obvod 74LS00 a nie 7400 - ten predsa len dodá väčší prúd (ale aj má väčší odber). Odpor v kolektore tranzistoru BC546 má hodnotu 360Ω (sériovo zapojené dva odpory 180Ω), pravdepodobne by tu na tomto mieste vyhovel v zapojení aj odpor 390Ω (toto som neskúšal). K dióde 1N4148 v zapojení sa síce ešte vyjadrím - tu len dopredu naznačím že v zapojení nie je potrebná.

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 a i.). Dôležité je aby použité tranzistory mali povolený kolektorový prúd minimálne 100mA, čo všetky spomínané typy s prehľadom zvládajú.


Poznámka:

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


Všetko pri stavbe bolo odsledované na dvojkanálovom digitálnom osciloskope s priamou možnosťou odčítania dĺžky generovaných pulzov. Jasnačka, dá sa to postaviť aj bez neho (meranie reálnej dĺžky pulzu na osciloskope je ale naozaj veľmi príjemná vec), výrazne mi pomáhali pri oživovaní zabudované LED-ky (Full verzia), stačilo spomaliť rýchlosť zápisu a pekne som na LED-kách videl či sa deje to čo treba. Rozfázovanie (pomalé) mi veľmi pomáhalo pri písaní programu. Potom stačilo upraviť rýchlosti slučiek a programovacieho pulzu podľa teoretických výpočtov a už som len jemne dolaďoval na presnejšie hodnoty. Celkom som sa trafil, teoretická hodnota sa odlišovala asi o 8% od praktickej, takže tu som len nastavil správnu hodnotu a bolo to. Toto už ale bola tá naozaj najpríjemnejšia časť dolaďovania programu.

 

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 keď sa zadarí ... - indikácia (červená LED) programovacieho napätia (pulzu) pre jednoduchosť zapojenia (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 táto "potvora" sa aj pri napätí na vstupe =5V zbytkovým záverným prúdom zenerovej diódy už 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 ako indikácia vcelku nepoužiteľné. Na potlačenie zbytkového prúdu ZD som musel k tejto červenej LED dať paralelne zapojený odpor 1k (môže byť aj 1k2), potom už nesvietila vtedy kedy nemala. Takže bacha na supersvietivé LED v tomto zapojení, tu môžu nemilo prekvapiť. Našťastie stačil na vyrešenie problému jediný pridaný odpor- a nemusel som "dolovať" ZD von z dosky. Potom sa to už správalo tak ako som potreboval (a ako som čakal od samého začiatku). Zase na druhú stranu - toto bol jediný problém ktorý sa mi pri stavbe programátoru v oblasti hardware vyskytol - s tým sa dá žiť. Len pripomínam že som to staval z hlavy a nákres zapojenia som urobil až po zapojení celého programátoru.

 

Červene zakrúžkovaný pridaný odpor 1k - pri použití supersvietivej LED. Ak použijete 20mA štandartnú červenú LED tento odpor sa nezapája a odpor 4k7 v sérii s červenou LED sa zmeni na hodnotu 470Ω. Ak by som na tomto mieste použil normálnu, klasickú 20mA červenú LED tak by som nič nemusel riešiť - ale aspoň o tom už viem - a teraz už aj Vy. Takže zo "supersvietivkami" občas opatrne, priamo v schéme je už táto oprava zakreslená.

 

Potrebný zdroj 10.5V napájaný z 12V som vyriešil dvomi diódami 1N4007 (1A) 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ým mi odpadlo zapojenie s odporom 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í pohybovať v ríši divov a nie v exaktnom prostredí. (Ešte sa v popise k pôvodnému zapojeniu zdroja 10.5V z AR vrátim - a to v 4.časti).


 

Ďalšia úprava sa týka použitia Schottkyho 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 1N4xxx, z uvedeného vyplýva že dá na čip PROM 74188 napájanie = iba 4.25V čo je už hodne málo. Ak použijete 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 2.125V na log.1 je už akosi primálo, preto som zapojenie s odporovými deličmi nepoužil. Zase na druhú stranu, Schottky dáva 4.85V na napájaní čipu PROM 74188, to je už naozaj výrazne menší rozdiel v úbytku na dióde oproti typu 1N4xxx - 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 problémov, programátor hotový - a tak som mohol pokračovať už vo vytváraní vlastného programového vybavenia.

 

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.

 

___________________________________________________

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/SBC6502-0-UvodIntroduction.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

 

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. Ak mám dobré informácie riadiaci mikroprocesor bol 8048 (tu tá podobnosť s už spomenutou disketovou jednotkou Atari 1053 je už hodne veľká, teda aspoň v niečom). 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.

 

 


Keď Jack Tramiel kúpil Atari od Warnera, 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 nazýval 1050CR - znížené náklady), ktorý používal počítačovú FD mechaniku a už spomínaný riadiaci mikroprocesor 8048.


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 nikdy nepredávaná 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 - je to môj pohľad na veci, dúfam že na mojich stránkach nájdete aj to čo hľadáte ...