PIC18F45K22内部振荡器频率问题

问题描述 投票:0回答:2

今天我开始了一个项目,尝试使用 PIC18F45K22 进行一些操作。我之前为其他控制器编写的代码遇到了一些计时问题。原来是控制器的时钟频率有问题。

正如数据表告诉我的,使用内部振荡器时我应该有一个默认时钟频率 1MHz。根据我的示波器,我在 OSC2 (RA6) 引脚上测量到了 250kHz 的时钟频率。因此,我开始仔细查看数据表,并从数据表中找到了表 2-3。该表显示,当控制器处于睡眠模式时,OSC2 引脚将为“时钟/4”,这可能是我的问题的根源,因为 1MHz/4 = 250kHz。根据第 3.0 章,当设备复位时,控制器将以 PRI_RUN 模式启动,除非启用了两速启动。因此,为了确保我通过使用以下配置行禁用了此模式:

#pragma config IESO = OFF

该线将禁用内部/外部振荡器切换位,这将根据第 2.12.1 节禁用双速启动。

现在我尝试了OSCCON、OSCCON2、OSCTUNE寄存器的多种设置,但都失败了。此时我想不出还有什么原因导致了这个“问题”。我希望有人能发现我的错误,以便我可以在指定的时钟频率上运行设备。

目前我设置了这些配置位:

#pragma config WDTEN = OFF
#pragma config FOSC = INTIO7 // Make clock visible on OSC2 pin
#pragma config LVP = OFF 
#pragma config DEBUG = OFF
#pragma config IESO = OFF // Disable Two-speed Start-up 

// Entry of application
int main(int argc, char** argv)
{
    OSCCONbits.IRCF = 0b011; // default frequency
    // Tried different OSCCON; OSCCON2; OSCTUNE settings, without succes
}

数据表(1):http://ww1.microchip.com/downloads/en/DeviceDoc/41412F.pdf

c pic mplab xc8
2个回答
1
投票

罗杰·罗兰回答了我的问题:

正如数据表第 2.6.1 节所述,与内部振荡器一起使用时,CLKOUT 将为 Fosc/4。如果您配置了 1MHz 振荡器,那么您应该会在 CLKOUT 上看到 250KHz,它代表指令执行的速率(这些 PIC 上每条指令 4 个时钟周期)。一切都按预期进行。


0
投票

Fcyc=Fosc/4 这是所选时钟 Fosc 和指令周期时钟的公式

© www.soinside.com 2019 - 2024. All rights reserved.