#include #include #include #include "..\..\lib\7188.h" /* ------------------------------------------------------------------- */ void main(int argc,char *argv[]) { int i,i1,i2,j,val,t,error; char c; int mode=0xff; int type; unsigned FlashSeg,LibVer; unsigned long Countms; type=Is7188(); switch(type){ default: printf("\nunsupport flash."); return; case 0: printf("\nQC2 must run on 7188"); return; case 256: FlashSeg=0xd000; printf("\n7188 with 256Kb Flash memory"); break; case 512: FlashSeg=0x9000; printf("\n7188 with 512Kb Flash memory"); break; } TimerOpen(); if(argc>1) mode=atoi(argv[1]); /* InitLib();*/ /* driver initial */ LibVer=GetLibVersion(); printf("\nLib Version %d.%02d",(LibVer>>8),(LibVer&0xff)); /* COM4, RS-232, connect to PC's COM port for download */ if(mode &2){ printf("\n(2)NVRAM TEST"); error=0; StopWatchStart(0); for (i=0; i<31; i++) { for(j=0;j<256;j++){ WriteNVRAM(i,j); t=ReadNVRAM(i); /* read back NVRAM for check */ /* printf("\nWrite NVSRAM : addr=%x,data=%x",i,t); */ if(t!=j) { error=1; printf("\nError:Write NVSRAM : addr=%d,write=%x,read=%x",i,j,t); } } } if(!error) printf(" --> NVRAM OK."); for (i=0; i<31; i++) WriteNVRAM(i,0); /* reset all to 0 */ StopWatchReadValue(0,&Countms); printf("\nNVRAM test spend %lu ms",Countms); } if(mode&8){ InstallCom(1,57600L,8,0,1); /* COM1, RS-232, full-duplex mode, INT */ /* Note : JP1 must select RS-232 */ InstallCom(3,57600L,8,0,1); /* COM3, RS-232, full-duplex mode, INT */ ClearCom(1); ClearCom(3); printf("\n(8)COM1/COM3 RS232(57600,N,8,1) test\n"); StopWatchStart(0); for (i=0;i<256;i++) { if(kbhit4() && getch4()=='q') break; printf("\rTest %02x",i); ToCom(3,i); j=0; while (IsCom(1)==0) { j++; if (j>30000) { printf("\nCOM3 send %02X --> COM1 no respons\n",i); goto next_2; } } val=ReadCom(1); if(val!=i) printf("\nError:COM3 send %0x,COM1 receive %02x\n",i,val); ToCom(1,i); j=0; while (IsCom(3)==0) { j++; if (j>30000) { printf("\nCOM3 read(%02x) no respons\n",i); goto next_2; } } val=ReadCom(3); if(val!=i) printf("\nError:COM1 send %0x,COM3 receive %02x\n",i,val); next_2: ; } RestoreCom(1); RestoreCom(3); StopWatchReadValue(0,&Countms); printf("\nCOM1/3 RS232 test spend %lu ms",Countms); } if(mode &1){ printf("\n(1)EPPROM TEST"); EnableEEP(); /* enable for write operation */ error=0; StopWatchStart(0); for (j=0; j<8; j++){ /* write initial value to all 1K bytes data */ if(j&1) LedOff(); else LedOn(); for (i=0; i<256; i+=16) { WriteEEP(j,i,0x55); t=ReadEEP(j,i); /* printf("\nWrite EEPROM : block=%x,addr=%x,data=%x",j,i,t); */ if (t!=0x55){ printf("\nError Block %d, addr %d,write=0x55,read=0x%02X",j,i,t); error=1; } WriteEEP(j,i,0xAA); t=ReadEEP(j,i); if (t!=0xAA){ printf("\nError Block %d, addr %d,write=0xAA,read=0x%02X",j,i,t); error=1; } WriteEEP(j,i,0x00); t=ReadEEP(j,i); if (t!=0x00){ printf("\nError Block %d, addr %d,write=0x00,read=0x%02X",j,i,t); error=1; } WriteEEP(j,i,0xFF); t=ReadEEP(j,i); if (t!=0xff){ printf("\nError Block %d, addr %d,write=0xFF,read=0x%02X",j,i,t); error=1; } } } if(!error) printf(" --> EEPROM OK."); else printf("\n"); ProtectEEP(); /* protect data in EEPROM */ StopWatchReadValue(0,&Countms); printf("\nEEPROM test spend %lu ms",Countms); } if(mode&4){ printf("\n(4)5DigitLed TEST"); Init5DigitLed(); /* initial & blank the 5-digit LED */ StopWatchStart(0); for(i=0;i<=17;i++){ Show5DigitLed(1,i); Show5DigitLed(2,i); Show5DigitLed(3,i); Show5DigitLed(4,i); Show5DigitLed(5,i); DelayMs(100); Show5DigitLedWithDot(1,i); Show5DigitLedWithDot(2,i); Show5DigitLedWithDot(3,i); Show5DigitLedWithDot(4,i); Show5DigitLedWithDot(5,i); DelayMs(100); } Show5DigitLedSeg(1,0xff); Show5DigitLedSeg(2,0xff); Show5DigitLedSeg(3,0xff); Show5DigitLedSeg(4,0xff); Show5DigitLedSeg(5,0xff); DelayMs(100); for(i=0;i<16;i++){ Set5DigitLedIntensity(i); DelayMs(200); } Set5DigitLedIntensity(7); Disable5DigitLed(); DelayMs(200); Enable5DigitLed(); Show5DigitLed(1,7); Show5DigitLed(2,1); Show5DigitLed(3,8); Show5DigitLed(4,8); Show5DigitLed(5,13); Set5DigitLedTestMode(1); DelayMs(200); Set5DigitLedTestMode(0); DelayMs(200); Set5DigitLedTestMode(1); DelayMs(200); Set5DigitLedTestMode(0); StopWatchReadValue(0,&Countms); printf("\n5 Digit LED test spend %lu ms",Countms); } if(mode & 32){ unsigned offset=0,saveSeg=FlashSeg; long idx; unsigned char far *rom; error=0; printf("\n(32)FlashROM test\n"); StopWatchStart(0); for(;FlashSeg<0xf000;FlashSeg+=0x1000){ printf("\nSegment=0x%04X",FlashSeg); FlashErase(FlashSeg); for(idx=0,offset=0;idx<=65535;idx++,offset++){ FlashWrite(FlashSeg,offset,offset); } rom=(unsigned char far *)_MK_FP(FlashSeg,0); for(idx=0,offset=0;idx<=65535;idx++,offset++){ if(*rom != (offset&0xff)){ printf("\nError:Seg=0x%X,offset=0x%04X,data=0x%02X",FlashSeg,offset,*rom); error=1; } rom++; } } StopWatchReadValue(0,&Countms); printf("\nFlash test spend %lu ms",Countms); if(!error) printf("\nFlashRom test OK,Erase 0x%X to 0xE000",saveSeg); StopWatchStart(1); for(FlashSeg=saveSeg;FlashSeg<0xf000;FlashSeg+=0x1000){ printf("\nFlash Memory Erase segment 0x%X",FlashSeg); FlashErase(FlashSeg); } StopWatchReadValue(1,&Countms); printf("\nErase spend %lu ms",Countms); } if(mode&16){ InstallCom(2,57600L,8,0,1); /* COM3, RS-485, half-duplex mode, INT */ InstallCom(1,57600L,8,0,1); /* COM3, RS-485, half-duplex mode, INT */ Set485DirToReceive(1); Set485DirToReceive(2); printf("\n(16)COM1/COM2 RS485 test(change JP1 to 5,6 side\n"); printf("Press 'q' to skip or other key to continue.\n"); if(getch()=='q') goto pass; StopWatchStart(0); ClearCom(1); ClearCom(2); for (i=0;i<256;i++) { if(kbhit4() && getch4()=='q') break; printf("\rTest %02x",i); Set485DirToTransmit(1); ToCom(1,i); WaitTransmitOver(1); Set485DirToReceive(1); j=0; while (IsCom(2)==0) { j++; if (j>30000) { printf("\nCOM2 send %02X --> COM1 no respons\n",i); goto next_3; } } val=ReadCom(2); if(val!=i) { printf("\nError:COM2 send %02x,COM1 receive %02x\n",i,val); /* getch(); */ } Set485DirToTransmit(2); ToCom(2,i); WaitTransmitOver(2); Set485DirToReceive(2); j=0; while (IsCom(1)==0) { j++; if (j>30000) { printf("\nCOM2 read(%02x) no respons\n",i); goto next_3; } } val=ReadCom(1); if(val!=i) { printf("\nError:COM1 send %02x,COM2 receive %02x\n",i,val); /* getch(); */ } next_3: ; } RestoreCom(2); RestoreCom(1); StopWatchReadValue(0,&Countms); printf("\nCOM1/2 RS485 test spend %lu ms",Countms); } pass: if(mode&64){ /* test WatchDog */ printf("\n(64)Test WatchDog Timer"); EnableWDT(); for(i=0;i<4;i++){ printf("\nLoop %d",i); DelayMs(1000); RefreshWDT(); } printf("\nWait WatchDog to reset 7188"); for(i=0;;i++){ DelayMs(100); printf("\nWait %u ms",100*i); } } TimerClose(); }