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. Čip 8255 je už vďaka programu správne inicializovaný a teda je v stave kedy sa s ním dá komunikovať a blokuje 10.5V na napájaní PROM.

Ak sa 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. Ak je všetko v poriadku po spustení programu (inicializuje sa 8255-ka) na hornej doske zhasne červená a dve modré LED.
Program je napísaný tak, že je 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 (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ť adresy aj na iné miesto, pretože tieto adresy sú uložené v premenných, 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 8255.
Dôležité adresy (dec) čipu 8255 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 od MICROSOFT. CRC použité v programe je to najjednoduchšie aké existuje - je to jednoduchý súčet všetkých 32bytov (dekadicky), CRC je nanovo počítané z DATA riadkov a kontroluje sa 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á tak to človeka núti písať program čistejšie, pretože táto koncepcia naozaj neumožňuje robiť nejaké nezmyselné odskoky. Nehodlám tu robiť podrobný popis programovacieho pulzu, to si pozrite v datasheete, tu je to v programe zabezpečené tak ako treba, nakoniec pozrite si to na konci článku - dumpscreeny z osciloskopu.
PROM 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 kontroluje) a nedovolí zápis. Program najprv napaľuje všetky byte jednotlivo bit po bite (ak je obsahom na potrebnom mieste 0 tak je programovací pulz obídený), 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 - vyhlási PROM 74188 za zlú a ukončí program. Oteplenie čipu vďaka wait stavom je úplne zanedbateľné, je to niekde okolo 40°C, merané bezdotykovým teplomerom.
Charakteristické je pre tento typ pamäte programovanie, programuje sa bit po bite v rámci bytu, nie naraz jeden byte. Najprv som uvažoval že si rozložím 32byte do postupnosti 256byte kde to bude pekne zoradené bit po bite. Lenže raz večer ma napadlo že bude stačiť ak budem vždy rozkladať len jeden jediný byte (čas čo to spotrebuje aj tak treba na zotavenie PROM) a ten naprogramujem a až potom pôjdem na ďalší byte, takže v tom nebude žiaden problém. A u toho som aj zostal.
___________________________________________________________
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 somju 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é nanovo robiť celý 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 napísal v Notepade, rozhodne sa mi tam píše lepšie ako v okne HyperTerminálu. Jediná nevýhoda - ak tam (v Notepade) náhodou zdvojíte číslo riadku - tak to dá poriadne zabrať než nájdete chybu, program v SBC6502 poctivo prepíše prvý riadok z číslom priamo obsahom druhého riadku z rovnakým číslom ... Ako vždy keď píšem program ak je jedna časť odskúšaná -a funguje, tak do nej už 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 tomu program mierne "nabobtnal"), niekde nájdete REM riadky kde je možné ich odblokovaním spustiť podrobnejší výpis (hodí sa ak sú trable), 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, riadky 2000 až 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 ešte niekedy nasledovala nejaká ďalšia, vyššia verzia 1.02 ...
____________________________________________________________
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 - 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 - verzia, rýchlosť procesoru
No a teraz vlastné programové vybavenie:
Program pre rýchlosť procesoru =1.8432MHz:

74188 programmer 1_8432MHz.txt (11,32 kb)
Program pre rýchlosť procesoru =2.4576MHz:

74188 programmer 2_4576MHz.txt (11,32 kb)
Program pre rýchlosť procesoru =4.00MHz:

74188 programmer 4_0000MHz.txt (11,32 kb)
Program pre rýchlosť procesoru =5.00MHz:

74188 programmer 5_0000MHz.txt (11,32 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 verifikácia obsahu PROM. Na spodnej doske - SBC6502, prebieha intenzívna komunikácia - červená LED, TX - posielajú sa údaje na HyperTerminál = zobrazenie informácií. )
_____________________________________________________
Teraz sa môžeme pozrieť ako vyzerajú programovacie pulzy pri rozličných rýchlostiach procesoru:

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á (pulz môže mať podľa datasheetu dĺžku v rozmedzí 1÷20msec). 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 to nedokáže 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. 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. 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.

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.
___________________________________________________
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:
/igi/post/SBC6502-0-UvodIntroduction.aspx
___________________________________________________
Vaše hodnotenie, Rate post: