打印
[PIC®/AVR®/dsPIC®产品]

pic16f1503单片机IO翻转速度

[复制链接]
2612|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
poorhack|  楼主 | 2014-9-19 09:49 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
pic16f1503单片机的定时器1,自由定时,内部16MHz晶振。程序主要是进入中断翻转IO,发现最高的翻转频率也就在90KHz左右。
贴上一段程序:
void T1Init()
{
    OSCCONbits.IRCF=0xf;     //16MHz系统时钟
    TMR1CS1=0;
    TMR1CS0=1;                      //timer1时钟源为系统时钟(Fosc=16MHz)
    T1CKPS1=0;
    T1CKPS0=0;                      //timer1预分频1:1
    T1CONbits.nT1SYNC=1;            
    TMR1GE=0;                       
    TMR1H=DTmr1H;
    TMR1L=DTmr1L;                   //初值
}

void OpenT1()
{
    GIE=1;
    PEIE=1;
    TMR1IE=1;                       //溢出使能位,TMR1IF为标志位
    TMR1ON=1;
}

中断服务程序如下:
void interrupt ISR(void)
{

     if(TMR1IF)

    {

        TMR1IF=0;
        TMR1H=DTmr1H;
        TMR1L=DTmr1L;
        RA0=!RA0;

    }

  }

不知道是我程序的问题还是单片机就这速度,怎么能提高IO翻转速度呢?
另外,我试了下TIMER2控制的PWM输出,因为TIMER2为指令时钟4MHz,所以速度也不怎么高,16MHz晶振,我想达到2-3MHz的翻转速度不知道可行么。


沙发
wangch_sh| | 2014-9-19 10:26 | 只看该作者
没有那么高吧?你要那么高的翻转速度干什么呢?

使用特权

评论回复
板凳
poorhack|  楼主 | 2014-9-19 10:50 | 只看该作者
wangch_sh 发表于 2014-9-19 10:26
没有那么高吧?你要那么高的翻转速度干什么呢?

最高90KHz正常么?

使用特权

评论回复
地板
wangch_sh| | 2014-9-19 11:00 | 只看该作者
不知道,应该到不了兆级。

使用特权

评论回复
5
poorhack|  楼主 | 2014-9-19 13:18 | 只看该作者
wangch_sh 发表于 2014-9-19 11:00
不知道,应该到不了兆级。

刚才试了一下,pwm还是可以的,能达到2MHz。不知道之前是怎么测得了。

使用特权

评论回复
6
yklstudent| | 2014-9-19 14:01 | 只看该作者
16MHz/4=4MHz,进入中断,退出中断都需要时间,所以上MHz;
不过楼主可以看看RA4引脚应该可以设置输出固定的FOSC/4=16MHz/4=4MHz,这个楼主是否可以用上

使用特权

评论回复
7
poorhack|  楼主 | 2014-9-19 16:17 | 只看该作者
yklstudent 发表于 2014-9-19 14:01
16MHz/4=4MHz,进入中断,退出中断都需要时间,所以上MHz;
不过楼主可以看看RA4引脚应该可以设置输出固定的 ...

恩,我还希望可调的,RA4只能输出4分频的时钟,现在pwm可以实现了。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

40

主题

198

帖子

6

粉丝