[讨论] PIC16F1827适合输出2.4MHz的方波吗

and01   2016-12-14 22:16 楼主
我有个产品想输出2.4MHZ的方波
单片机通常有两种方法输出比较高频率的方波:
1)通过定时器让固定端口定时取反(不产生中断)
2)PWM方式产生


我现在想让它也能输出(2.6/2.2/2.0/1.8/1.6/)MHz的方波!


有问题不 ?用过的朋友帮忙出招
非常感谢!

回复评论 (11)

QQ截图20161214222919.png 最快你的CPU可以跑32M,那么指令周期就是8M,而实现最简单的电平翻转就是按下面的方法: void main() { while(1) ///2个指令周期 { IO = 1;///1个指令周期 NOP();///1个指令周期 IO= 0;///1个指令周期 NOP();///1个指令周期 } } 以上需要6个指令周期。那么,IO翻转一周期,就是8/6M = 1.25M,这是没有其他中断干扰的情况,加上中断干扰频率会在低一点。 另外,CPU满频率运行,发热也是个不能忽视的问题 本帖最后由 mzb2012 于 2016-12-15 11:23 编辑
点赞  2016-12-14 22:59
谢谢你兄弟
点赞  2016-12-15 09:18
4分频运行呀?
点赞  2016-12-15 09:19
引用: mzb2012 发表于 2016-12-14 22:59
最快你的CPU可以跑32M,那么指令周期就是8M,而实现最简单的电平翻转就是按下面的方法:
void main() ...

WHILE(1);
这个分号是不是多余--笔误?否则下面就没机会运行了?
点赞  2016-12-15 09:33
如果方便,能否分享一下DEMO程序没吗?
点赞  2016-12-15 10:57
引用: and01 发表于 2016-12-15 09:33
WHILE(1);
这个分号是不是多余--笔误?否则下面就没机会运行了?

是的,手一抖,多了个分号
点赞  2016-12-15 11:23
引用: and01 发表于 2016-12-15 10:57
如果方便,能否分享一下DEMO程序没吗?

上面的那几句,就可以了
点赞  2016-12-15 11:24
能帮忙指点下怎么设置PWM功能输出1.25M 以上的频率,我是做产品用,我要输出2.45MHz,或者主频通过IO口定时器到时取反也可以?总之能实现吗?
点赞  2016-12-15 11:53
你把单片机频率调整到最大,然后用上面的IO口翻转程序,用示波器测量一下IO口信号的周期,看有多大;我手里没有pic16的片子,测试不了
点赞  2016-12-15 13:23
引用: mzb2012 发表于 2016-12-15 13:23
你把单片机频率调整到最大,然后用上面的IO口翻转程序,用示波器测量一下IO口信号的周期,看有多大;我手里 ...

你好用你告诉的方法WHILE(1)循环的话 最高频率只能输出296.3KHz

   while(1)
     {
  
//        LATA=0;
//         LATAbits.LATA1=~LATAbits.LATA1;
        LATAbits.LATA3=!LATAbits.LATA3;
//        LATAbits.LATA0=~LATAbits.LATA0;


//          LATB=~LATB;
//     anjian();  


     }   

但是如果用:

        LATAbits.LATA3=1;
        LATAbits.LATA3=0;
        LATAbits.LATA3=1;
        LATAbits.LATA3=0;

        LATAbits.LATA3=1;
        LATAbits.LATA3=0;
        LATAbits.LATA3=1;
        LATAbits.LATA3=0;

        LATAbits.LATA3=1;
        LATAbits.LATA3=0;
        LATAbits.LATA3=1;
。。。。

方法可以将频率提高到4MHz

具体我也不知道怎么算出来的

我已经将主频设置到了32MHz
点赞  2016-12-15 17:10
说明下:我用的是RA3口测试的
点赞  2016-12-15 17:11
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复