Sunday, June 2, 2019

SAP48 1. Programmer

Pre ROM/EPROM typy členov rady MCS-48 potrebujeme aj programátor a čítačku programovej pamäte. Na programovanie sú potrebné dve napätia 25V a 23V, prípadne 21V a 18V, podľa toho či máme NMOS alebo HMOS obvod. Tesly sú NMOS. Pri ROM verziach je treba znížiť napätie VDD na 12V a druhé napätie PROG odpadá. Programátor TL866 (de facto nový bastler štandard) a podobné už 8748 nepodporujú. Asi kvôli tým dvom napätiam. Arduino Mega stojí cca 7,- EUR a má 8kB RAM a my potrebujeme 1kB alebo 2kB na dáta programovej pamäte 874X a pár byte na premenné programu. Arduino Uno je lacnejšie, ale má iba 2kB RAM, čiže pár byte by pri 8749 chýbalo. Takže som navrhol shield pre Megu so zero insertion force socketom a pár súčiastkami k tomu.



Na doske sú dve LED pre kontrolu ALE signálu. Ak svietia približne rovnakým jasom, tak je čip funkčný a generuje ALE signál. Ak nesvietia rovnako, niekde je problém a pokus o programovanie čipu by bol fatálny. Prúd LED v kľudovom stave nie je rovnaký, ale ALE (ale to sú náhody) signál je silne nesymetrický a jeho prítomnosť pôsobí tak, že obidve svietia rovnako silno. Pri inej svietivosti LED to môže byť trošku rozdielne, ale vždy by sa mali približne vyrovnať.

Ďalšia LED ukazuje prítomnosť napájacieho napätia 5V a posledná signalizuje keď je na PROG vstupe vysoké programovacie napätie. Potrebné napätia sú stabilizované pomocou troch kusov LM317. Vo Willem programmeri je hardwarovo nemožné mať na PROG vysoké napätie ak je na EA nízke. Čo by bolo mimochodom tiež fatálne. Tu je to ošetrené iba softwarovo. Na rozdiel od Willlema a legendárnej konštrukcie "Univerzální programátor pamětí" v červenom AR 11/88 je tu ale PROG pin v neaktívnom stave naozaj floating a nie na 5V, čiže tak ako je to v dokumentácii výrobcu. Ale asi to nie je katastrofické, lebo Willem vie naprogramovať tieto čipy aj viac krát a nie iba prvý a posledný raz. Willem vytvára nižšie napätie 23/18V z vyššieho 25/21V zaradením 3 kusov diód .. čo nie je celkom dokonalé:-) Pretože požadovaná delta je v prvom prípade 2V a v druhom 3V.

Obslužný program je napísaný v jazyku Arduina. Komunikuje cez sériovú linku 9600 baud, 8-bit dáta, 1-stop bit, no parity. Je možné využívať aj zabudovaný terminál v Arduino prostredí, ale doporučujem použiť napr. Hyperterminál. Cez terminál nahráme Intel HEX do pamäti Arduina, skontrolujeme a naprogramujeme. Okrem programovania je možné aj iba čítať obsah ROM a EPROM programovej pamäte vložených čipov. Čítanie EPROM zároveň aj vyhodnotí, či je čip zmazaný (obsahuje samé nuly). Vždy napíše Chip is erased, ready to be programmed. alebo !!!Chip is not erased!!! ak EPROM nie je zmazaná. Program je tak trochu aj "blbuvzdorný". Podarilo sa mi poslať do Arduino program trošilínka presahujúci 1024 byte a pohoda. Nadbytočné byte odignoroval a 8748 správne naprogramoval.

Popis ovládania:
Cvýber typu 8748 (1kB) alebo 8749 (2kB)
Tvstup do testovacieho menu, kde je možné nakalibrovať napätia a otestovať funkčnosť tranzistorových spínačov
Lnahrá Intel HEX do RAM pamäte programátora
Hpošle obsah RAM pamäte programátora do terminálu vo forme Intel HEX
Pnaprogramuje obsah RAM pamäte programátora do čipu v sockete
Rprečíta obsah ROM/EPROM vloženého čipu a uloží ho RAM pamäte programátora
Vporovná obsah RAM s obsahom ROM/EPROM na čipe v sockete

Schéma je tu
Program je na GITHUBe tu

Doporučujem osadiť najskôr súčiastky, potom lišty s headrami a nakoniec socket. Rezistor R22 sa neosádza pozri DOPLNENIE. Pri R25 4k7 nie je dobre vidno hodnotu na doske. Programátor vyžaduje nastavenie správnych napätí ručne pomocou trimrov na doske. Preto nemožno bez prestavenia napätí striedať EPROMkové NMOS s EPROMkovými HMOS čipmi a ani ROM čipmi. Ja som nastavil 5.1V, 18.1V a 21.0V na vyskúšanie HMOS. Stabilizátor pre 5V má veľký úbytok a potrebuje chladič. Čip vložíme do programátoru, až keď sú všetky napätia skontrolované (položka menu T) a v nízkom stave, a tiež iba vtedy keď je Arduino napájané cez USB. Pre pokrytie aj HMOS aj NMOS napätí 21V-25V a 18V-23V je treba aby P1 a P2 mali hodnotu 2k. EPROM potrebujeme sem tam aj vymazať. Slnečný svit je slabý, ale kto nemá mazačku nemusí zúfať, pretože UV sterilizátor na zubné kefky z eBay funguje výborne a schváli ho aj manželka.

Programátor som otestoval na pár HMOS čipoch, aj násobne na tom istom čipe a s testom v doske NCB48 a bez nehody. Na oživenie bastlenia na MCS-48 by pre začiatok mohol tento komplex schém, dosiek a programov stačiť. Pár dosiek NCB48/SAP48 a súčiastok ešte nájdem, tak kto chce nech napíše. Rád by som zrealizoval programátor s SMD súčiastkami. Ešte by som ho rád celý vtesnal do 3D tlačenej krabičky ako napr. zmienený TL866.



DOPLNENIE: ozvali sa mi používatelia a záujemci o SAP48 a pri výmene skúseností a komunikácii sa zistilo nasledovné. HMOS verzia 8748H/8749H má občasný problém. Symptóm je taký, že sa naprogramuje pár byte a potom sa zistí chyba a programovanie sa zastaví. Pri inej konštalácii hviezd ten istý čip na druhý deň môže prejsť až do konca bez chyby. Identický problém (pri Willem programátore) aj s riešením je popísaný na vintage computer fóre tu: http://www.vcfed.org/forum/showthread.php?24379-Needed-Microcontroller-programming-(D8749). Príspevky #4,#6,#9,#11,#14
Takže sme ja a Marián osadili R22 odporom 1M s paralelne pripojeným kondíkom 4n7 (ja som našiel iba 680k odpor) a programovanie už zbieha bez zaváhania. Bude sa jednať o nejakú chorobu HMOS 8748/49, ktorá zdá sa postihuje aj HMOS EEPROM INTEL D2816. V datasheetu k D2816 na strane 2-31 dole v odstavci Vpp Pulse "píšou něco o tom, že Vpp musí růst exponenciálně (RC waveform)" ako si všimol Melsoft.

Zmenu som uviedol aj do schémy. Zatiaľ asi nikto neprogramoval NMOS verziu, ale tá by podľa linkovanej témy mala byť bezproblémová aj bez modu. Aj ja aj Marián aj Melsoft sme už bez problémov programovali aj TESLA NMOS MHB8748. Nakoľko sme už mali MOD z programovania HMOSov, tak sme len zvýšili napätia a fungovalo to aj na NMOS.
DOPLNENIE 2: zoznam podporovaných typov môžeme rozšíriť aj o 8741 a 8742. Marián vyskúšal a funguje.

2 comments:

  1. Super nápad s tým shieldom pre Arduino. Mne ide o vyčítanie obsahu ROM z 8048 a 8049 - dal by sa SAP48 použiť na tento účel? Ak ešte máte k dispozícii SAP48 board, mal by som záujem

    ReplyDelete
    Replies
    1. Áno dá sa to, stačí napätie 12V. Napíšte mi na mail roman.fulek -zavinac- gmail

      Delete