国产性一乱一性一伧的解决方法,国产一区影视,日韩欧美国产亚洲,日韩av在线播放不卡,国产69精品久久久久孕妇大杂乱 ,亚洲国产一,97国产精品视频,波多野结无码高清中文
君億道科技聯(lián)系電話:0755-26830682

公司新聞

最全面及時的公司資訊、企業(yè)動態(tài)

適用于 USB-CTR0408 的 Linux C 分頻器示例

來源君億道

這是一個特定于產(chǎn)品的 C 示例,它使用一個計數(shù)器來劃分輸入頻率,并使用第二個計數(shù)器來測量新頻率。為此,它啟用計數(shù)器輸出并使用范圍限制計數(shù)。計數(shù)器將計數(shù)到指定值,將輸出線設(shè)置為高電平。然后在第二個值上將輸出線設(shè)置為低電平。此示例設(shè)置為輸出 50% 的占空比,但如果您使用輸出寄存器值,您可以獲得其他占空比。下面列出了完整的程序,并附在文章的底部。

 

/*

    UL 調(diào)用演示:               ulCInConfigScan()

 

    目的:執(zhí)行連續(xù)掃描

                                      指定頻道

 

    演示:輸出開啟和范圍限制開啟

 

 

    腳步:

    1.調(diào)用ulGetDaqDeviceInventory()獲取可用DAQ設(shè)備列表

    2. 調(diào)用 ulCreateDaqDevice() 來獲取第一個 DAQ 設(shè)備的句柄

    3. 調(diào)用 ulConnectDaqDevice() 建立與 DAQ 設(shè)備的 UL 連接

    4.調(diào)用ulCConfigScan()配置通道

    5. 調(diào)用 ulCInScan() 開始頻道掃描

    6.調(diào)用ulCInScanStatus()查看后臺操作狀態(tài)

    7.顯示每個通道的數(shù)據(jù)

    8.調(diào)用ulCInScanStop()停止后臺操作

    9. 退出進(jìn)程前調(diào)用 ulDisconnectDaqDevice() ulReleaseDaqDevice()

 

    ***** 測試信號由 TMR0 提供。將其連接到計數(shù)器 0 輸入

    ***** 將計數(shù)器 0 輸出連接到計數(shù)器 1 輸入,用于測量分頻

*/

 

#include <stdio.h>

#include <stdlib.h>

#include “uldaq.h”

#include “實用程序.h”

 

#define MAX_DEV_COUNT 100

#define MAX_SCAN_OPTIONS_LENGTH 256

#define ActualTickSize 0.00000002083

詮釋主要(無效)

{

       整數(shù)描述符索引 = -1

       DaqDeviceDescriptor devDescriptors[MAX_DEV_COUNT];

       DaqDeviceInterface interfaceType = USB_IFC;

       DaqDeviceHandle daqDeviceHandle = 0;

       無符號整數(shù) numDevs = MAX_DEV_COUNT;

 

       // 設(shè)置一些用于獲取數(shù)據(jù)的變量

       int FirstChannel = 1;

       整數(shù)最后通道 = 1

       int ChannelCount = 1;

 

       常量 int samplesPerCounter = 100;

       雙采樣率 = 100

       整數(shù)索引 = 0

 

       無符號長長*緩沖區(qū)=空;

       UlError 錯誤 = ERR_NO_ERROR;

 

       詮釋 i = 0;

       int __attribute__((未使用)) ret;

       字符 c;

 

       // 獲取所有可用 DAQ 設(shè)備的描述符

       err = ulGetDaqDeviceInventory(interfaceType, devDescriptors, &numDevs);

 

       如果(錯誤!= ERR_NO_ERROR

              轉(zhuǎn)到結(jié)束;

 

       // 驗證至少檢測到一個 DAQ 設(shè)備

       如果 (numDevs == 0)

       {

              printf("沒有檢測到數(shù)據(jù)采集設(shè)備\n");

              轉(zhuǎn)到結(jié)束;

       }

 

       printf("找到 %d DAQ 設(shè)備\n", numDevs);

       for (i = 0; i < (int) numDevs; i++)

       {

              printf(" [%d] %s: (%s)\n", i, devDescriptors[i].productName, devDescriptors[i].uniqueId);

              // USB-CTR04 id = 0x12E, USB-CTR08 id = 0x127

              if((devDescriptors[i].productId == 0x12E) || (devDescriptors[i].productId == 0x127))

              {

            描述符索引 = i;

            daqDeviceHandle = ulCreateDaqDevice(devDescriptors[descriptorIndex]);

            休息;

        }

    }

    如果(描述符索引 == -1

    {

        printf("\n錯誤:找不到 USB-CTR04USB-CTR08 \n");

        返回0

    }

 

       printf("句柄 = %d\n", daqDeviceHandle);

       printf("\n正在連接設(shè)備 %s - 請稍候...\n", devDescriptors[descriptorIndex].devString);

 

       // 創(chuàng)建到設(shè)備的連接

       錯誤 = ulConnectDaqDevice(daqDeviceHandle);

 

       如果(錯誤!= ERR_NO_ERROR

              轉(zhuǎn)到結(jié)束;

 

 

       // 為有范圍限制的計數(shù)配置通道

       錯誤 = ulCConfigScan(daqDeviceHandle,

                    0,

                    CMT_COUNT,

                    CMM_OUTPUT_ON |CMM_RANGE_LIMIT_ON,

                    CED_RISING_EDGE,

                    CTS_TICK_20PT83ns,

                    CDM_TRIGGER_AFTER_STABLE,

                    CDT_DEBOUNCE_500ns,

                    CF_DEFAULT);

    如果(錯誤!= ERR_NO_ERROR

              轉(zhuǎn)到結(jié)束;

 

    錯誤 = ulCLoad(daqDeviceHandle,0,CRT_MIN_LIMIT, 0);

    錯誤 = ulCLoad(daqDeviceHandle,0,CRT_MAX_LIMIT, 99);

 

    如果(錯誤!= ERR_NO_ERROR

              轉(zhuǎn)到結(jié)束;

 

       //將輸入頻率除以100;輸出將從 0-49 低,從 50-99

       錯誤 = ulCLoad(daqDeviceHandle,0, CRT_OUTPUT_VAL0, 49);

    錯誤 = ulCLoad(daqDeviceHandle, 0, CRT_OUTPUT_VAL1, 99);

    //改變占空比修改CRT_OUPUT_VAL0

 

    如果(錯誤!= ERR_NO_ERROR

              轉(zhuǎn)到結(jié)束;

 

    // 為周期模式配置通道

      錯誤 = ulCConfigScan(daqDeviceHandle,

                    1

                    CMT_PERIOD,

                    CMM_DEFAULT,

                    CED_RISING_EDGE,

                    CTS_TICK_20PT83ns,

                    CDM_TRIGGER_AFTER_STABLE,

                    CDT_DEBOUNCE_500ns,

                    CF_DEFAULT);

    如果(錯誤!= ERR_NO_ERROR

    {

              轉(zhuǎn)到結(jié)束;

    }

 

       // 分配一個緩沖區(qū)來接收數(shù)據(jù)

       buffer = (unsigned long long*) malloc(ChannelCount * samplesPerCounter * sizeof(unsigned long long));

 

       如果(緩沖區(qū) == NULL

       {

              printf("\n內(nèi)存不足,無法創(chuàng)建掃描緩沖區(qū)\n");

              轉(zhuǎn)到結(jié)束;

       }

 

 

 

       printf("\n%s 準(zhǔn)備好了\n", devDescriptors[descriptorIndex].devString);

       printf("函數(shù)演示:ulCConfigScan()\n");

       printf("計數(shù)器: %d - %d\n", FirstChannel, LastChannel);

       printf("每個通道的樣本數(shù):%d\n", samplesPerCounter);

       printf("速率:%.2f S/s\n", SampleRate);

       printf("\n ENTER 繼續(xù)\n");

 

       ret = scanf("%c", &c);

 

       ret = 系統(tǒng)(清除);

 

       雙頻 = 100000

       雙重職責(zé) = 0.5;

       雙延遲 = 0.0;

 

       //***** 定時器輸出用作測試信號,將 TMR0 連接到計數(shù)器 0

    錯誤 = ulTmrPulseOutStart(daqDeviceHandle, 0, &freq, &duty, 0, &delay, TMRIS_LOW, PO_DEFAULT);

    如果(錯誤!= ERR_NO_ERROR

    {

              轉(zhuǎn)到結(jié)束;

    }

 

    //***** 還將計數(shù)器 0 輸出連接到計數(shù)器 1 輸入

       錯誤 = ulCInScan(daqDeviceHandle,

                    第一頻道,

                    最后一個頻道,

                    samplesPerCounter,

                    &采樣率,

                    SO_DEFAULTIO | SO_CONTINUOUS,

                    CINSCAN_FF_CTR32_BIT ,

                    緩沖);

 

       如果(錯誤 == ERR_NO_ERROR

       {

              掃描狀態(tài)狀態(tài);

              轉(zhuǎn)移狀態(tài)轉(zhuǎn)移狀態(tài);

              詮釋 i = 0;

 

              // 獲取獲取的初始狀態(tài)

              ulCInScanStatus(daqDeviceHandle, &status, &transferStatus);

 

              而(狀態(tài) == SS_RUNNING && 錯誤 == ERR_NO_ERROR && !enter_press())

              {

                     // 獲取當(dāng)前采集狀態(tài)

                     錯誤 = ulCInScanStatus(daqDeviceHandle, &status, &transferStatus);

 

                     如果(錯誤 == ERR_NO_ERROR

                     {

                            // 將光標(biāo)重置到顯示的頂部并

                            // 顯示終止消息

                            重置游標(biāo)();

                            printf("按回車鍵終止進(jìn)程\n\n");

                            printf("活動數(shù)據(jù)采集設(shè)備:%s (%s)\n\n", devDescriptors[descriptorIndex].productName, devDescriptors[descriptorIndex].uniqueId);

                            printf("測試頻率 = %.1f Hz\n", freq);

                            printf("除以 100\n\n");

 

                            index = transferStatus.currentIndex

                            printf("currentScanCount = %-10llu \n", transferStatus.currentScanCount);

                            printf("currentTotalCount = %-10llu \n", transferStatus.currentTotalCount);

                            printf("currentIndex = %-10d \n\n", index);

 

                            如果(索引 >= 0

                            {

                                   // 顯示數(shù)據(jù)

 

                    浮動周期 = (float)((buffer[index] * ActualTickSize));

 

                    清除EOL();

                    //0 100 個計數(shù)

 

                    printf("新頻率:\t= %2.3f Hz\n", 1/period );

 

 

                                   睡眠(100000);

                            }

                     }

              }

 

              // 如果仍在運(yùn)行,則停止采集

              如果(狀態(tài) == SS_RUNNING && 錯誤 == ERR_NO_ERROR

              {

                     錯誤 = ulCInScanStop(daqDeviceHandle);

              }

 

       }

 

       // 斷開與 DAQ 設(shè)備的連接

       ulDisconnectDaqDevice(daqDeviceHandle);

 

結(jié)尾:

 

       // 釋放 DAQ 設(shè)備的句柄

       ulReleaseDaqDevice(daqDeviceHandle);

 

       // 釋放掃描緩沖區(qū)

    免費(fèi)(緩沖區(qū));

 

       如果(錯誤!= ERR_NO_ERROR

       {

              字符 errMsg[ERR_MSG_LEN];

              ulGetErrMsg(err, errMsg);

              printf("錯誤代碼: %d \n", err);

              printf("錯誤信息: %s \n", errMsg);

       }

 

       返回0

}


主營:電流探頭,電壓探頭,羅氏線圈,電流傳感器,高壓探頭,電流互感器,功率電子測量產(chǎn)品
粵ICP備14003389號深圳君億道科技有限公司 © http://www.fengshengzhitongche.com
主站蜘蛛池模板: 桐柏县| 金溪县| 阳原县| 多伦县| 新兴县| 专栏| 大兴区| 奉节县| 汶川县| 舟山市| 辽阳县| 滁州市| 石渠县| 凤翔县| 马公市| 邮箱| 达拉特旗| 元氏县| 托里县| 台北县| 吴忠市| 博客| 石嘴山市| 广昌县| 五河县| 塔城市| 兰溪市| 新龙县| 西藏| 长垣县| 栾城县| 宜兴市| 隆回县| 县级市| 仙游县| 凤冈县| 理塘县| 安乡县| 县级市| 张家川| 平定县| 荣昌县| 邓州市| 清水河县| 开封市| 泸定县| 武夷山市| 叶城县| 嘉荫县| 永康市| 万载县| 门源| 德昌县| 镇康县| 古蔺县| 广水市| 义马市| 栾川县| 阳曲县| 巴马| 阜南县| 萨迦县| 闵行区| 潮州市| 时尚| 东乌| 福清市| 雅江县| 永宁县| 白城市| 邳州市| 乃东县| 阿荣旗| 雷州市| 临海市| 沿河| 得荣县| 望奎县| 贵阳市| 体育| 赤城县| 丹东市|