/* demo 9 : Signal Frequency Measure */ /* step 1 : J19 select EXTG1, J22 select CLOCL1=8M hz */ /* step 2 : J20 select \COUT1,J23 select ECLK2 */ /* step 3 : connect external signal to (pin21,pin19) */ /* step 4 : run demo9.exe, the frequency of input signal will */ /* be shown in the screen. (125 Hz min.) */ /* ----------------------------------------------------------- */ #include "PCITMC12.H" void pci_tmc12_di(WORD *wDi); WORD pci_tmc12_select8254(char cChip); WORD pci_tmc12_c0(char cConfig, char cLow, char cHigh); WORD pci_tmc12_c1(char cConfig, char cLow, char cHigh); WORD pci_tmc12_c2(char cConfig, char cLow, char cHigh); WORD wBaseAddr,wIrq,wPLX; int main() { int i,j,k; WORD wBoards,wRetVal; char c,cc[80]; unsigned int high,low,count,cout0; float f,t; clrscr(); wRetVal=PTMC12_DriverInit(&wBoards); printf("\n(1) Threr are %d PCI-TMC12 Cards in this PC",wBoards); if ( wBoards==0 ) { putch(0x07); putch(0x07); putch(0x07); printf("(1) There are no PCI-TMC12 card in this PC !!!\n"); exit(0); } printf("\n(2) Show the Configuration Space of all PCI-TMC12:"); for(i=0; i 125 Hz ***\n",wBaseAddr); pci_tmc12_select8254(0); /* select 8254-chip-0 */ pci_tmc12_c0(0x30,0xff,0xff); /* CH-1,mode-0 down count ffff */ pci_tmc12_c1(0x70,0xff,0xff); /* CH-2,mode-0 down count ffff */ i=0; for (;;) { outportb(wBaseAddr+0x0C,0xE2); /* latch status of counter0 */ low=inportb(wBaseAddr); high=inportb(wBaseAddr); cout0=low&0x80; if (cout0==0) i++; else break; if (kbhit()!=0) {getch(); break;} } printf("\ni=%d",i); outportb(wBaseAddr+0x0C,0x40); /* latch counter_1 */ low=inportb(wBaseAddr+0x04); high=inportb(wBaseAddr+0x04); count=(0xff-high)*256+(0xff-low)+2; /* COUT0 = 65536*0.000125=8.192 ms */ t=8.192/(float)count; /* ms */ f=(1.0/t)*1000.0; /* f=1/T */ printf("\nhigh=%x, low=%x, count=%d : frequency = %f Hz",high,low,count,f); PTMC12_DriverClose(); } /* -------------------------------------------------------------------- */ WORD pci_tmc12_select8254(char cChip) { outportb(wBaseAddr+0x10,cChip); return(NoError); } WORD pci_tmc12_c0(char cConfig, char cLow, char cHigh) { outportb(wBaseAddr+0x0C,cConfig); outportb(wBaseAddr ,cLow); outportb(wBaseAddr ,cHigh); return(NoError); } WORD pci_tmc12_c1(char cConfig, char cLow, char cHigh) { outportb(wBaseAddr+0x0C,cConfig); outportb(wBaseAddr+4 ,cLow); outportb(wBaseAddr+4 ,cHigh); return(NoError); } WORD pci_tmc12_c2(char cConfig, char cLow, char cHigh) { outportb(wBaseAddr+0x0C,cConfig); outportb(wBaseAddr+8 ,cLow); outportb(wBaseAddr+8 ,cHigh); return(NoError); }