COMI_SD502_SetCounter¶
SYNOPSYS¶
void COMI_SD502_SetCounter (HANDLE hDevice, int ch, int nMode, int nClkSource)
DESCRIPTION¶
이 함수는 지정한 카운터 채널을 셋팅합니다.
PARAMETER¶
▶ hDevice : 디바이스 핸들값입니다. 이 값은 COMI_LoadDevice() 함수에 의해 얻어진 값이어야 합니다.
▶ ch : 카운터 채널 번호. 이 값은 0~9 사이의 값이어야 합니다.
▶ nMode : 카운터 모드를 지정합니다. 이 값은 0 ~ 2 사이의 값이어야 하며 각 모드에 대한 설명은 아래 이미지를 참조바랍니다.


▶ nClkSource : 소스클럭(Source clock) 을 지정합니다. 소스 클럭은 외부에서 입력하거나 내부의 클럭을 사용할 수 있습니다. nClkSource 에 지정할 수 있는 값은 -1 또는 0 ~ 15 사이의 값입니다. 각 값의 의미는 다음과 같습니다.

EXAMPLE¶
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 | /*********************************************************************
/* [COMIDAS sample program by COMIZOA Inc., Ltd]
/*
/* Subject : SD502 Counter 함수 사용 예
/* Contents : 이 프로그램은 사용자가 지정하는 Channel 과 mode 그리고
/* Source clock으로 Counter 를 셋팅 한 후 지정한 채널의 카운트값을
/* 읽어서 화면에 표시합니다.
/* - Reamkrs :
/* 1. 이 예제는 COMI-SD502 보드에만 적용가능합니다.
/*********************************************************************/
#include <windows.h>
#include <stdio.h>
#include <conio.h>
#include "Comidas.h"
#define DEV_ID COMI_SD502
void main(void)
{
HANDLE hDevice;
int channel, mode, clk_src;
ULONG now_count, old_count;
double clk_freq, freq;
char resp;
// Load DLL //
if(!COMI_LoadDll()){
printf("Comidas.dll load failure");
printf("아무키나 누르면 프로그램이 종료됩니다.. \n");
_getch();
exit(0);
}
// Load Device //
hDevice = COMI_LoadDevice(DEV_ID, 0);
if(hDevice == INVALID_HANDLE_VALUE){
printf("Can't load specified device!");
printf("아무키나 누르면 프로그램이 종료됩니다.. \n");
_getch();
COMI_UnloadDll();
exit(0);
}
// Get channel Number //
printf("Input Channel Number :");
scanf("%d", &channel);
// Get counter mode //
printf("Select Counter Mode (0 or 1) : ");
scanf("%d", &mode);
// Get source clock(Only if counter mode is 0) //
if(mode == 0){
printf("Select source Clock (-1 ~ 15) : ");
scanf("%d", &clk_src);
}
//Set counter channel //
COMI_SD502_SetCounter(hDevice, channel, mode, clk_src);
COMI_SD502_Clear(hDevice, channel);
while(1)
{
now_count = COMI_SD502_ReadNowCount(hDevice, channel); // Read Now count
old_count = COMI_SD502_ReadOldCount(hDevice, channel); // Read Old count
printf("\n");
printf("Now Count = %lu\n", now_count);
printf("Old Count = %lu\n", old_count);
if(mode == 0 && clk_src >= 0){ // Display frequence of Gate signal
clk_freq = COMI_SD502_GetClkFreq(clk_src);
if(old_count == 0)
freq = 0.;
else
freq = 0.5 * clk_freq/old_count;
printf("Freq (Hz) = %.1f\n", freq);
}
printf("\nPress ESC key to exit for press any other key to continue\n");
resp = _getch();
if(resp == 27); // ESC Key가 눌리면 종료
break;
}
COMI_UnloadDevice(hDevice);
COMI_UnloadDll();
}
|