stly 发表于 2022-5-8 13:53

PWM频率设置问题

本帖最后由 pzsh 于 2022-6-25 16:19 编辑

PIC16F887的PWM工作频率能由外部晶振决定么?

wyjie 发表于 2022-5-8 13:57

你有什么打算呢?或者你想知道什么?

stly 发表于 2022-5-8 14:00

PWM周期=[(PR2+1)*4]*Tosc*预分频。这里的Tosc能由外部晶振确定么?

dingy 发表于 2022-5-8 14:02

应该是可以。我以前用这个也都是用外部晶振。

heweibig 发表于 2022-5-8 14:05

Fosc就是系统时钟,
Fcy是指令周期,

所以, 这个完全取决于你系统时钟的选取, 你选外部晶振提供系统时钟, 那么...

stly 发表于 2022-5-8 14:07


#define _LEGACY_HEADERS
#include <pic.h>       //Head File
__CONFIG(0X2CF2);   

unsigned int x;
unsigned int k;

main(void)
{

    OSCCON=0X78;            //clock
    TRISC=0B11111011;      //RC2--output
    PORTC=0B00000000;
    CCP1CON=0x3c;   //set CCP1 as PWM mode
    PR2=9;                // set intial frequence
    x=((4*PR2)+4)/2;
    k=x&0xFFFF;
    CCPR1L =(k>>2)&0xFE;
    T2CKPS1=0;
    T2CKPS0=0;          //divde as 1:1
    TMR2ON=1;         //start TIMER2
    while(1)
    {         
               
    }
}

这是我晶振连接方式,晶振设置为了16M

stly 发表于 2022-5-8 14:09


llljh 发表于 2022-5-8 14:10

PWM周期=[(PR2+1)*4]*Tosc*预分频。这里的Tosc能由外部晶振确定么?

stly 发表于 2022-5-8 14:12

求教大佬这个怎么该?我为什么用不了外部晶振做Fosc

stly 发表于 2022-5-8 14:14

求教大佬看一下楼下我写的程序该怎么改?我为什么用不了外部晶振做Fosc

stly 发表于 2022-5-8 14:41


你这是用proteus仿真吧?

supernan 发表于 2022-5-8 14:43

如果是仿真的话,只与你双击MCU设置的时钟频率有关,与外部晶振设置频率无关。

tian111 发表于 2022-5-8 14:46

当然实际线路就是使用外部晶振了,

jlyuan 发表于 2022-5-8 14:48

你研究一下, 配置字... configuration bits的看看.

stly 发表于 2022-5-8 14:50

这样啊...我把改了MCU的时钟频率改了...确实行了...谢谢谢谢大佬...

stly 发表于 2022-5-8 14:52

还有一个问题...我看PIC16F877的数据手册写最高外部晶振频率是20MHz...但是887的数据手册上没写。 那887的外部晶振最高频率也是20MHz么?

stly 发表于 2022-5-8 14:56

我刚把MCU的时钟频率设置成64MHz了...它依旧能正常运行

zhenykun 发表于 2022-5-8 14:58

http://ww1.microchip.com/downloads/en/DeviceDoc/40001291H.pdf 这数据手册里写了外部最高频率了. 看我的截图. 至于你设成64M也能运行,是因为仿真的原因吧

renyaq 发表于 2022-5-8 15:02


stly 发表于 2022-5-8 15:04

嗯,我再好好缕一缕吧,有了好消息及时通知大家
页: [1] 2
查看完整版本: PWM频率设置问题