Ak všetko funguje na SBC6502 tak ako má - fajn, inak nastanú starosti. Ak pri stavbe niečo nefunguje alebo keď nám začne programátor PROM 74188 z rozličných príčin "blbnúť" tak by bolo vítanou pomôckou mať nejaký pomocný program na základné otestovanie funkčnosti jednotlivých celkov - a tak som sa (po dlhom čase) rozhodol ho napísať. Stačí zadať hodnotu použitého x-talu ktorý slúži ako informácia o základnom clocku hodín procesoru a tým sa nastavia jednotlivé hodnoty pre fungovanie programu ako takého, vďaka tomuto nastaveniu vyhovuje potom program priamo pre všetky uvedené hodnoty x-talov ktoré má uvedené vo svojom zozname.
Pri testovaní nesmie byť založená PROM !
Vstupné menu pre nastavenie hodnôt pre použitý x-tal
Nasleduje pracovné menu.
K dispozícii je celkove 7 (číselné označenie v menu je 0 ÷ 6) pomocných testovacích podprogramov:
0.- test pripne na pin č.16 ZIF pätičky programátoru napájacie napätie Ucc (cca +4.75V) po dobu 20sekúnd, hodnota napätia sa meria proti pinu č.8 (Gnd), po celú dobu svieti zelená a modrá LED, následne sa Ucc odpojí a program sa vráti naspäť do menu, zelená LED svieti trvale
1.- testuje sa zapnutie Vpp + 10.5V na pin č.16 pätičky ZIF, meria sa voči pinu 8 (Gnd), napätie je dostupné po dobu 20 sekúnd, potom sa odpojí Vpp a program sa vráti naspäť do menu , pri teste svietia zelená a červená LED, zelená LED svieti trvale
2.- test pre chip select (neg.), na 20 sekúnd sa na pine č.15 ZIF pätice objaví log.1, potom na 20 sekúnd padne do log.0 a následne sa odpojí napájanie, pri tomto teste svieti zelená a modrá LED, po celú dobu testu a je aktívne Ucc, zelená LED svieti trvale
3.- je to súhrn testov 0+1+2 v jednom, najprv na 2 sekundy je na pine 16 Ucc (v tom istom okamihu ide do log.1 CS), následne je "prebité" pripojením Vpp, potom sa po 20 sekundách vypne Ucc a Vpp a tiež CS. Počas testu svieti zelená + modrá + po 2sec červená LED, v druhej časti potom zhasnú modrá+červená LED, zelená LED svieti trvale
4.- cyklický test (4x test č.3), teda zbieha niekoľko krát za sebou, zelená LED svieti trvale
5.- testuje sa čip 8255A - na jeho port B sa posielajú postupne data v rozmedzí 0÷255d ktoré potom spätne čítame cez jeho port C. Treba si uvedomiť že výstup z portu B ide ešte cez tranzistory a je teda negovaný. V programe je to vyriešené tak že načítané data z portu C sa následne negujú a až potom sa výsledok porovná. Tento test je tiež cyklický, zbieha celkove 7x za sebou. V prípade chyby sa test zastaví a vypíše kde sa objavil problém, zelená LED svieti trvale.
6.- ak máte pocit že sa netestuje port A čipu 822A, nuž tu je odpoveď - áno sa testuje, jeho horné 3 bity (bit 7 - pripája napätie Ucc, bit 6 pripája Vpp, bit 5 ovláda chip select), bity 4,3,2,1,0 ovládajú vstupy E (pin 14), D (pin 13), C (pin 12), B (pin 11), A (pin 10) priamo na ZIF pätici.
* Tu máme možnosť zaslaním údaju 0÷31d na tento port sledovať binárnu hodnotu na uvedených adresách bitov. Údaj zostáva platný po dobu 20 sekúnd po potvrdení, potom sa vráti do menu. Svieti iba zelená LED - platí to ak zadáme číslo do 31d, inak viď ďalej.
Ohľadne "hornej" trojice spomenutých bitov:
pri čísle 128 zapneme Ucc, modrá LED
pri čísle 64 zapneme Vpp, červená LED
pri čísle 32 zapneme CS do log.1
Kombináciou týchto čísel môžeme zapnúť aj všetky 3 bity naraz: je to číslo 224, ak zadáme 255 tak všetky bity na porte A budú v log.1.
Táto voľba č.6 umožňuje testovať všetky bity portu A a ak treba aj jednotlivo.
* - pre bity 4,3,2,1,a 0 portu A je v ceste ešte čip 7417
Diagnostický program:
Diagnostic software.txt (5,13 kb)
Listing programu:
992 REM Output:
993 REM port A - bits 0,1,2,3,4 - PROM 74188
994 REM adress: A,B,C,D,E
995 REM
996 REM bit 5 - CS(neg.) PROM pin 15
997 REM bit 6 - PGM pulz 5V/10.5V/5V PROM pin 16
998 REM bit 7 - relay On/Off pin 16 (Ucc) PROM 74188
999 REM
1000 CLEAR:POKE 15,80:BN=0:NS=7:DV=0
1005 PA=32768:PB=PA+1:PC=PA+2:CWR=PA+3:POKE CWR,137
1010 ?CHR$(12);SPC(29)"SBC6502/32kB RAM+8255A"
1015 ?SPC(16)"Turn ON the power to the PROM 74188 programmer !"
1017 ?SPC(29)"No PROM in ZIF socket!"
1020 A$="1.8432MHz":B$="2.0000MHz":C$="2.4576MHz":D$="2.5000MHz"
1021 E$="3.6864MHz":F$="4.0000MHz":G$="4.5000MHz":H$="4.9152MHz"
1022 I$="5.0000MHz":J$="6.0000MHz"
1023 R$="20 sec active in ZIF socket, then off"
1024 T$="20 sec CS in log.1, 20 sec log.0 and off
1025 GOSUB 2030:GOTO 1035
1030 IF BN=1 THEN ?CHR$(12):?
1035 GOSUB 2700:?" -";SPC(5);"Diagnostic software - ver.1.0,";
1100 ?" Igi(c)22.10.2023, for x-tal version:";
1101 GOSUB 2040:GOSUB 2700:GOSUB 2050:GOSUB 2040
1102 GOSUB 2050:?"(0) - "A$;:GOSUB 2040
1104 GOSUB 2050:?"(1) - "B$;:GOSUB 2040
1106 GOSUB 2050:?"(2) - "C$;:GOSUB 2040
1108 GOSUB 2050:?"(3) - "D$;:GOSUB 2040
1110 GOSUB 2050:?"(4) - "E$;:GOSUB 2040
1112 GOSUB 2050:?"(5) - "F$;:GOSUB 2040
1114 GOSUB 2050:?"(6) - "G$;:GOSUB 2040
1116 GOSUB 2050:?"(7) - "H$;:GOSUB 2040
1118 GOSUB 2050:?"(8) - "I$;:GOSUB 2040
1120 GOSUB 2050:?"(9) - "J$;:GOSUB 2040
1122 GOSUB 2050:GOSUB 2040:GOSUB 2050:?"(Q)uit program";
1124 GOSUB 2040:GOSUB 2700:GOSUB 2080:BN=1
1134 IF X$="0" THEN DV=2.25:S$=A$
1136 IF X$="1" THEN DV=2.44:S$=B$
1138 IF X$="2" THEN DV=3.15:S$=C$
1140 IF X$="3" THEN DV=3.2:S$=D$
1142 IF X$="4" THEN DV=4.5:S$=E$
1144 IF X$="5" THEN DV=5:S$=F$
1146 IF X$="6" THEN DV=5.6:S$=G$
1148 IF X$="7" THEN DV=6:S$=H$
1150 IF X$="8" THEN DV=6.2:S$=I$
1152 IF X$="9" THEN DV=7.14:S$=J$
1154 IF X$="Q" THEN ? "End program ...":END
1156 IF DV<>0 THEN GOTO 1200
1158 GOTO 1030
1200 ?CHR$(12):GOSUB 2700:GOSUB 2030
1204 ?" -";SPC(7);"Diagnostic software -";
1206 ?"x-tal version: "S$SPC(10)"LED:";:GOSUB 2040:GOSUB 2700
1210 GOSUB 2060:?"(0) - test 5V /Ucc-pin16, Gnd-pin 8,";
1212 ?SPC(15)"Green+Blue";:GOSUB 2040:GOSUB 2070
1214 ?R$;:GOSUB 2040:GOSUB 2060
1216 ?"(1) - test 10.5V /Vpp-pin 16, Gnd-pin 8,";SPC(11)"Green+Red";
1218 GOSUB 2040:GOSUB 2070:?R$;:GOSUB 2040
1220 GOSUB 2060:?"(2) - test chip select, ZIF socket pin 15,";
1222 ?SPC(9)"Green+Blue";:GOSUB 2040:GOSUB 2070:?T$;:GOSUB 2040
1224 GOSUB 2060:?"(3) - test 5V Ucc + 10.5V Vpp + CS together,";
1226 ?SPC(7)"Green+Blue+Red";:GOSUB 2040
1228 GOSUB 2070:?"2sec Vcc+cs-> +20sec Vpp, then off";
1229 GOSUB 2040:GOSUB 2060:?"(4) - cyklic ";
1230 ?"test no.:0+1+2,";SPC(23)"Green/+B+R_on/off";:GOSUB 2040
1232 GOSUB 2070:?"(4x all 5 sec on/5 sec off)";:GOSUB 2040
1234 GOSUB 2060:?"(5) - cyklic test Data Out to port B and read";
1236 ? SPC(6)"Green+Blue";:GOSUB 2040:GOSUB 2070
1238 ?"in to port C /complet range 0-255d, 7x/";:GOSUB 2040
1240 GOSUB 2060:?"(6) - test Data Out in port A /range 0-255/";
1242 ? SPC(8)"Green+Out bits";:GOSUB 2040
1244 GOSUB 2070:?"20 sec active bits in ZIF socket, then off";
1295 GOSUB 2040:GOSUB 2050:GOSUB 2040
1300 GOSUB 2060:?SPC(14)"(Q)uit to main menu";:GOSUB 2040
1310 GOSUB 2700:GOSUB 2080:BN=1:?
1312 IF X$="4" OR X$="5" THEN ?SPC(31)"Active test --> x";:GOTO 1320
1315 ?SPC(33)"Active test --> ";
1320 IF X$="0" THEN GOSUB 2100:GOTO 1200
1325 IF X$="1" THEN GOSUB 2200:GOTO 1200
1330 IF X$="2" THEN GOSUB 2300:GOTO 1200
1335 IF X$="3" THEN GOSUB 2400:GOTO 1200
1340 IF X$="4" THEN GOSUB 2500:GOTO 1200
1345 IF X$="5" THEN GOSUB 2600:GOTO 1200
1350 IF X$="6" THEN GOSUB 2650:GOTO 1200
1355 IF X$="Q" THEN 1030
1999 GOTO 1200
2000 FOR F=0 TO DV*2000*NS:NEXT:RETURN
2005 FOR F=0 TO (DV*2000*NS)/10:NEXT:RETURN
2010 FOR Q=1 TO NS:FOR F=0 TO DV*1200:NEXT F:?".";:NEXT Q:RETURN
2020 FOR F=1 TO DV*300*NS:NEXT F:RETURN
2030 POKE PA,0:POKE PB,0:RETURN
2040 ?TAB(78)"-":RETURN
2050 ?" -"SPC(31);:RETURN
2060 ?" -"SPC(7);:RETURN
2070 ?" -"SPC(13);:RETURN
2080 ?SPC(30)" Your choice - ";:INPUT X$:RETURN
2100 POKE PA,128:GOSUB 2010:GOSUB 2670:RETURN
2200 POKE PA,64:GOSUB 2010:GOSUB 2670:RETURN
2300 POKE PA,160:GOSUB 2010:POKE PA,128:GOSUB 2010:GOSUB 2670
2305 RETURN
2400 POKE PA,128:GOSUB 2005:POKE PA,192:GOSUB 2010:POKE PA,0
2405 GOSUB 2670:RETURN
2500 FOR WE=1 TO 4:? WE;
2502 POKE PA,224:GOSUB 2020:POKE PA,0:GOSUB 2020
2504 NEXT:GOSUB 2670:RETURN
2600 POKE PA,128:FOR TE=1 TO 7:?TE;
2602 FOR DT=0 TO 255:POKE PB,DT:IN=PEEK(PC):VE=255-IN
2610 IF DT=VE THEN 2625
2615 ?:? "PROBLEM:":?"DATA out Input"
2620 ?" portB: portC:":? DT,VE:GOSUB 2030:END
2625 NEXT:NEXT:? " <- O.K.!";:GOSUB 2030:GOSUB 2020:RETURN
2650 ?CHR$(12):?:? SPC(26)"Test no.6 - Data Out in port A.":?
2652 ?SPC(23)"Data range 0-255, your input DATA:";:INPUT A
2654 IF A>255 THEN ?SPC(37)"Wrong input !":GOTO 2652
2656 POKE PA,A:?SPC(34)"Active:";:GOSUB 2010:GOSUB 2670:RETURN
2670 GOSUB 2030:?"End";:GOSUB 2005:RETURN
2700 ?" ";:FOR F=2 TO 78:?"-";:NEXT:GOSUB 2040:RETURN
Program slúži pre jednoduchú a rýchlu diagnostiku zistených problémov (ak sa nejaké objavia) na programátore PROM 74188. Ako autor hw a sw si osobne vystačím aj s jednotlivými POKE a PEEK príkazmi a diagnostický program myslím si že vôbec nepotrebujem, lenže nie každý má potrebné znalosti ako si poradiť ak vzniknú nejaké problémy - tak pre tých je tento program aj určený. Čo je zaujímavé - dĺžka diagnostického programu činí približne 1/2 dĺžky plnej programovej verzie 1.10, diagnostický program som pridal aj do archívu všetkých programových verzií.
________________________________________________________________________________
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.
____________________________________________________________
Návrat do všetkých pokračovaní o SBC6502:
http://blog.3b2.sk/igi/post/Directory-SBC6502.aspx
____________________________________________________________
Vaše hodnotenie, Rate post: