精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

兩種測量正弦波的頻率的方法分享

電子工程師 ? 作者:工程師陳翠 ? 2018-06-18 15:00 ? 次閱讀

最近一直嘗試各種方法測量一個正弦波的頻率,可是都不太理想,老差幾個hz,尤其中頻,現在先將自己的方法供大家研討。

第一種方法:

比較笨的方法,使用了回調函數,但是要設一個變量判斷,是否符合條件。

#define F_CPU sysclk_get_main_hz()

#include

uint32_t frequence;

static void my_frq_test_callback(void)

{

if(frequence》100)

{

//如果想看結果的話,可以設置一個斷點

asm(“nop”);

PORTA.INT0MASK=~PIN1_bm;

PORTA.INTCTRL=PORT_INT0LVL_OFF_gc;

tc_write_clock_source(&TCC0,TC_CLKSEL_OFF_gc);

/*這里不用tc_disable(&TCC0),好像定時器也關掉了,再次使用時,必須使能定時器,tc_enable(&TCC0) ,然后再用tc_write_clock_source(&TCC0, TC_CLKSEL_DIV1_gc);啟動定時器就行了*/

frequence=0;

}

}

int main(void)

{

sysclk_init();

pmic_init();

//這里的IOPORT_PULL_UP加上后,不知道為什么會先產生個中斷,也請分析一下

ioport_configure_pin(IOPORT_CREATE_PIN(PORTA,1),IOPORT_DIR_INPUT|IOPORT_BOTHEDGES|IOPORT_PULL_UP);

//這里的定義不知道能否加到上面的定義中,請給點建議

PORTA.INT0MASK=PIN1_bm;

PORTA.INTCTRL=PORT_INT0LVL_MED_gc;

tc_enable(&TCC0);

tc_set_wgm(&TCC0, TC_WG_NORMAL);

tc_write_period(&TCC0,40000);

tc_set_overflow_interrupt_callback(&TCC0, my_frq_test_callback);

tc_set_overflow_interrupt_level(&TCC0, TC_INT_LVL_LO);

cpu_irq_enable();

do

{}while(1);

}

ISR(PORTA_INT0_vect)

{

if(frequence==0)

{

tc_write_clock_source(&TCC0, TC_CLKSEL_DIV1_gc);

}

else

{

frequence++;

}

}

第二種方法:

用2個定時器,因為定時器的period的值是uint16_t的,如果超限,會引起程序工作不正常,所以用2個定時器解決一下,第二個定時器一第一個定時器的溢出為時鐘信號,沒有用到回調函數,簡單代碼如下:#define F_CPU sysclk_get_main_hz()

#include

uint32_t frq;

int main (void)

{

/* Insert system clock initialization code here (sysclk_init())。 */

board_init();

pmic_init();

sysclk_init();

//定義管腳中斷

PORTA.DIRCLR=PIN1_bm;

PORTA.PIN1CTRL=PORT_ISC_BOTHEDGES_gc;//|PORT_OPC_PULLUP_gc 此處還是不知道用不用上拉

PORTA.INT0MASK=PIN1_bm;

PORTA.INTCTRL=PORT_INT0LVL_MED_gc;

//設置及使能事件

sysclk_enable_module(SYSCLK_PORT_GEN, SYSCLK_EVSYS);

EVSYS.CH0MUX = EVSYS_CHMUX_TCC0_OVF_gc;

//TCC0為第一個定時器,它的溢出提供給TCD0做為事件時鐘

tc_enable(&TCC0);

tc_enable(&TCD0);

tc_set_wgm(&TCD0,TC_WG_NORMAL);

tc_set_wgm(&TCC0,TC_WG_NORMAL);

//因為系統時鐘用的是內部2M的時鐘,除以50后,一個是好算事件,一個是最接近時鐘溢出的period,period不能超過65535,能有別的好方法 //也希望能指點一下

tc_write_period(&TCC0,sysclk_get_main_hz()/50);

tc_write_period(&TCD0,1000);

tc_set_overflow_interrupt_level(&TCC0,TC_INT_LVL_LO);

tc_enable_delay(&TCD1);

tc_write_clock_source(&TCD0,TC_CLKSEL_EVCH0_gc) ;

cpu_irq_enable();

do

{

} while (tc_is_overflow(&TCD0)==0);

frq/=4;

//可以在這里設置一個斷點看結果,應該在后面對frq置0,方便后面的程序調用,可是如果后面我把frq置0,此時就看到的值也為0,也希望給點 //建議

asm(“nop”);

/* Insert application code here, after the board has been initialized. */

do

{

} while (1);

}

ISR(PORTA_INT0_vect)

{

asm(“nop”);

if(frq==0)

{

tc_write_clock_source(&TCC0,TC_CLKSEL_DIV1_gc);

}

frq++;

}

以上就是2種測量方法的代碼,第二個方法比第一個要快。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 正弦波
    +關注

    關注

    11

    文章

    639

    瀏覽量

    55290
收藏 人收藏

    評論

    相關推薦

    stm32 怎樣測量正弦波頻率

    stm32 怎樣測量正弦波頻率?
    發表于 08-08 10:46

    如何用FPGA測量數字正弦波頻率

    如何用FPGA測量數字正弦波頻率
    發表于 01-11 22:27

    利用stm32測量正弦波相位差

    利用stm32測量正弦波相位差,有三主要思路:路直接捕獲信號直接得到時間差:即將正弦波
    發表于 08-17 06:58

    基于滑模控制的正弦波逆變器

    基于滑模控制的正弦波逆變器 摘要:提出了一新的基于滑模控制的正弦波逆變器。該逆
    發表于 07-15 09:31 ?1263次閱讀
    一<b class='flag-5'>種</b>基于滑模控制的<b class='flag-5'>正弦波</b>逆變器

    正弦波振蕩器,正弦波振蕩器是什么意思

    正弦波振蕩器,正弦波振蕩器是什么意思 正弦波振蕩器:一不需外加信號作用,能夠輸出不同頻率正弦
    發表于 03-22 14:09 ?4686次閱讀

    正弦波是什么,正弦波簡介

    正弦波是什么,正弦波簡介 正弦波是指將頻率成分最為單一的一信號,因這種
    發表于 04-15 17:35 ?2.5w次閱讀

    頻率和振幅穩定的正弦波輸出電路

    頻率和振幅穩定的正弦波輸出電路 電路的功能 要求振蕩頻率和輸出
    發表于 05-15 12:03 ?2697次閱讀
    <b class='flag-5'>頻率</b>和振幅穩定的<b class='flag-5'>正弦波</b>輸出電路

    正弦波逆變器介紹_正弦波逆變器工作原理

    本文首先介紹了正弦波逆變器的使用及產品性能,其次介紹了正弦波逆變器結構與工作原理,最后介紹了正弦波逆變器安裝方法
    發表于 05-29 16:23 ?5w次閱讀
    <b class='flag-5'>正弦波</b>逆變器介紹_<b class='flag-5'>正弦波</b>逆變器工作原理

    正弦波發生電路原理

    首先介紹了產生正弦波的條件,其次介紹了正弦波發生電路組成,最后闡述了正弦波發生電路及工作原理。正弦波發生電路能產生正弦波輸出,它是在放大電路
    的頭像 發表于 09-13 17:54 ?3.9w次閱讀

    正弦波逆變器的判定方法_如何將正弦波變成方波

    可以利用示波器觀察逆變器電壓的圖像是正弦波還是方波。這是最直接的方法。還可以根據特點來判斷:正弦波逆變器輸出的是同我們日常使用的電網一樣甚至更好的正弦波交流電,因為它不存在電網中的電磁
    發表于 12-08 15:18 ?1.6w次閱讀
    <b class='flag-5'>正弦波</b>逆變器的判定<b class='flag-5'>方法</b>_如何將<b class='flag-5'>正弦波</b>變成方波

    有源晶振的波形是正弦波嗎?怎么測量

    KOAN晶振中的輸出波形普遍分為方波Square Wave和正弦波Sine Wave類。其中方波有非差分和差分輸出的選擇;正弦波有準正弦波和削峰
    的頭像 發表于 04-17 16:20 ?2555次閱讀

    正弦波逆變器和修正弦波逆變器的區別

    正弦波逆變器和修正弦波逆變器的區別 純正弦波逆變器和修正正弦波逆變器是兩種常見的逆變器類型,它們在輸出電流波形和電氣性能方面存在差異。下面
    的頭像 發表于 01-23 14:58 ?7081次閱讀

    正弦波和方波晶振能否互相替代?

    正弦波和方波晶振能否互相替代? 正弦波和方波晶振是兩種不同的波形形態,在某些情況下可以互相替代,但也存在一些區別和限制。下面是對正弦波和方波晶振進行詳細的比較和分析,以幫助你理解它們之
    的頭像 發表于 01-31 09:11 ?1098次閱讀

    正弦波逆變器和修正逆變器的區別

    正弦波逆變器和修正逆變器的區別? 正弦波逆變器和修正逆變器是兩種常見的逆變器類型,它們在工作原理、性能特點以及應用領域上存在一些區別。
    的頭像 發表于 02-01 10:02 ?5635次閱讀

    如何選擇適合測量正弦波的示波器探頭?

    的特點。正弦波是一連續而光滑的波形,可以用幅值、頻率和相位來描述。幅值表示波峰和波谷的差值,頻率表示單位時間內波形重復的次數,相位表示波形在時間軸上的位置。 在
    的頭像 發表于 02-22 13:48 ?668次閱讀
    如何選擇適合<b class='flag-5'>測量</b><b class='flag-5'>正弦波</b>的示波器探頭?