// uif_pllcheck.cpp : コンソール アプリケーションのエントリ ポイントを定義します。 // #include "stdafx.h" #include "univiflib.h" #include void printbit(int c) { int i,k=1; for(i=0;i<16;i++,k<<=1) if(c&k) putchar('#'); else if(i==8) putchar('|'); else putchar('.'); } int LookupM15(int i) { static int init=0; static int M[32768]; if(!init) { M[0]=0; int i,m=0x7fff; for(i=0;i<32768;i++) { M[m]=i; m=(m<<1)|((m&1)^((m>>14)&1)); m=m&0x7fff; } init=1; } return M[i&0x7fff]; } int _tmain(int argc, _TCHAR* argv[]) { int bsn=-1,i,j,debug=0,outf=0; int base,freq=66; char *endptr; if(argc==1) { puts("\nUniversal Interface board PLL locking check program" " by kumagai\n" " uif_plltest ( default=66)\n"); } // オプションチェック while(1) { if((argc>1)&&(strncmp(argv[1],"-d",2)==0)) { debug=1; uiflib_debug=1; argc--; argv++; continue; } if((argc>1)&&(strncmp(argv[1],"-o",2)==0)) { outf=1; argc--; argv++; continue; } break; } if(argc>1) { bsn=strtol(argv[1],&endptr,16); if(bsn>15) bsn-=6; /* 10進二桁 と 16進一桁の共通か */ if((bsn<0) || (bsn>15)) { fprintf(stderr,"Illegal BSN: %d\n",bsn); return 3; } } if(argc>2) { freq=atoi(argv[2]); } char conffile[200]; sprintf(conffile,"uif_pllcheck_%d.ttf",freq); fprintf(stderr,"Loading configuration(%s) of PLL test module\n",conffile); if(ConfigureUNIVIF(bsn,conffile)) { DumpDeviceList(); return 1; } // ====================================================================== base=GetUNIVIFBaseAddress(bsn); if(base<0) return 1; #define N 40 int h,c,k,w; int db[4][N]; while(1) { for(c=0,h=0;c<1000;c++) { w=inw(base+4); for(j=0,k=1;j<8;j++,k<<=1) if(w&k) h++; } for(i=0;i>16; } for(i=0;i1) puts(""); } return 0; }