好文档 - 专业文书写作范文服务资料分享网站

使用MCC学习PIC单片机 – NCO 数控振荡器

天下 分享 时间: 加入收藏 我要投稿 点赞

数控振荡器(NCO)是一个20位的定时器。它与普通的定时器工作原理不同。-普通的定时器每次加1,当累加值达到预设门限的时候,输出变化。

-NCO每次加一个固定值(预设值),当累加值达到最大值并产生溢出时,

输出变化

使用NCO来进行分频,输出信号频率值可以线性的改变。在MCC里面配置NCO,界面如下:

NCO的原理简图如下:

NCO输入时钟源多种时钟源,可供选择。

NCO工作模式

固定占空比模式:每次累加器溢出,产生一次电平翻转(图中D触发器构成的二分频电路)。输出信号频率为翻转频率的1/2,占空比固定为50%。

脉冲频率模式:输出脉冲宽度可选择,宽度为(1/2/4…/128)个输入时钟周期。输出信号周期为累加器溢出两次溢出的间隔周期。NCO输出方式:PIN脚输出产生中断驱动其他外设输出状态bit位MCC生成代码:代码在nco1.c文件中。

初始化NCO1CON,NCO1CLK,NCO1ACC和NCO1INC寄存器,使能NCO。voidNCO1_Initialize(void){

//SettheNCOtotheoptionsselectedintheGUI//ENdisabled;POLactive_hi;PFMPFM_mode;NCO1CON=0x01;

//CKSMFINTOSC_500KHz;PWS1_clk;NCO1CLK=0x03;//

NCO1ACCU=0x00;//

NCO1ACCH=0x00;//

NCO1ACCL=0x00;//

NCO1INCU=0x00;//

NCO1INCH=0x08;//

NCO1INCL=0x31;

//EnabletheNCOmoduleNCO1CONbits.EN=1;

//ClearingIFflagbeforeenablingtheinterrupt.PIR7bits.NCO1IF=0;

//EnablingNCO1interrupt.PIE7bits.NCO1IE=1;

}

查询输出状态

boolNCO1_GetOutputStatus(void){

//Returnoutputstatusonaccumulatoroverflowreturn(NCO1CONbits.OUT);}

当NCO累加器溢出时产生中断voidNCO1_ISR(void){

//CleartheNCO1interruptflagPIR7bits.NCO1IF=0;}

使用MCC学习PIC单片机 – NCO 数控振荡器

数控振荡器(NCO)是一个20位的定时器。它与普通的定时器工作原理不同。-普通的定时器每次加1,当累加值达到预设门限的时候,输出变化。-NCO每次加一个固定值(预设值),当累加值达到最大值并产生溢出时,输出变化使用NCO来进行分频,输出信号频率值可以线性的改变。在MCC里面配置NCO,界面如下:NCO的原理简图如下:NCO
推荐度:
点击下载文档文档为doc格式
2rfmq9clex1h1yk7phhy1xkfw968dk01avt
领取福利

微信扫码领取福利

微信扫码分享