PIC16的雙速啟動模式
當振蕩器模塊被配置為HS模式時,系統使用外部晶振提供的頻率作為系統時鐘。但是晶振起振與代碼執行之間是存在延時的,在這段延時期間,單片機是無法執行任何程序的。HS模式下,上電之后晶振起振,提供時鐘信號,但是這個信號不能馬上被系統使用,因為這時候的時鐘信號可能還不大穩定,所以需要等待一段穩定時間,振蕩器才能用作系統時鐘源。振蕩器起振定時器(OST)的作用就在這里,HS模式OST會被使能接收到晶振的振蕩信號后它會開始計數,當計數到1024次振蕩時,穩定時間已過,外部晶振開始作用于系統時鐘源。
對于一些需要快速啟動的系統,這段延時可能會是一個比較讓人頭疼的問題,例如需要經常休眠然后需要快速啟動的系統,這段延時啟動會降低系統的反應敏捷度,空等延時也是浪費了無意義的電量損耗。雙速時鐘啟動模式,則可以解決這個問題。
雙速時鐘啟動簡單來說,就是在啟動延時這段時間里,啟動內部振蕩器來提供時鐘信號,程序上電就能跑,然后當1024次震蕩周期過了之后,切換回外部晶振提供的時鐘信號。兩者合作,度過這段虛無的時光。
1.雙速啟動順序
1. 從上電復位或休眠中喚醒。
2. 使用內部振蕩器以OSCCON寄存器的IRCF《3:0》位設置的頻率(默認只500 kHz)開始執行指令。
3. OST使能,計數1024個時鐘周期。
4. OST超時,等待內部振蕩器下降沿出現。
5. OSCSTAT寄存器的OSTS位置1(根據此標志位判斷是外部時鐘源運行,還是內部振蕩器運行)。
6. 系統時鐘保持為低電平,直到新時鐘下一個下降沿出現(HS模式)。
7. 系統時鐘切換到外部時鐘源。
2.通過以下設置來配置雙速啟動模式:
1.配置字CONFIG1的bit 12(IESO)=1,使能內/外部時鐘切換模式
2.SCS(在OSCCON寄存器中)= 00,由配置字中的FOSC《1:0》決定時鐘來源。
3. 配置字中的FOSC《2:0》位被配置HS模式,即FOSC《2:0》 = 010。
3.實驗代碼
#include
#include
#define _XTAL_FREQ 500000
// CONFIG1
#pragma config FOSC = HS // Oscillator Selection Bits (HS Oscillator, High-speed crystal/resonator connected between OSC1 and OSC2 pins)
#pragma config PWRTE = OFF // Power-up Timer Enable (PWRT disabled)
#pragma config MCLRE = ON // MCLR Pin Function Select (MCLR/VPP pin function is MCLR)
#pragma config CP = OFF // Flash Program Memory Code Protection (Program memory code protection is disabled)
#pragma config BOREN = ON // Brown-out Reset Enable (Brown-out Reset enabled)
#pragma config CLKOUTEN = OFF // Clock Out Enable (CLKOUT function is disabled. I/O or oscillator function on the CLKOUT pin)
#pragma config IESO = ON // Internal/External Switch Over (Internal External Switch Over mode is enabled)
#pragma config FCMEN = ON // Fail-Safe Clock Monitor Enable (Fail-Safe Clock Monitor is enabled)
void main()
{
OSCCON = 0x38; //0011 1000 時鐘初始化
PORTA |= 0x04;
TRISA &= 0xfb;
while(1)
{
RA2=1;
__delay_ms(100);
RA2=0;
__delay_ms(100);
}
}
不過,事實上雖然有代碼了,但是沒辦法進入雙速時鐘模式,因為板子根本就沒有外部晶振。將工程編譯燒錄之后,確實可以看到D6在閃爍,因為muc以配置的500KHz時鐘在運行。dalao不存在的,只有擋刀的小兵。
-
時鐘
+關注
關注
11文章
1971瀏覽量
135004 -
PIC16F1619
+關注
關注
0文章
2瀏覽量
2980
發布評論請先 登錄
深入解析Microchip PIC16F527:功能、特性與應用全洞察
PIC16(L)F1512/3微控制器:高性能與低功耗的完美結合
PIC16F72:8位CMOS FLASH微控制器的深度剖析
深入解析Microchip PIC16C62X系列:8位CMOS微控制器的卓越之選
深入解析Microchip PIC16F84A:高性能8位微控制器的全方位洞察
探索Microchip PIC16C5X系列8位微控制器的魅力
PIC16F818/819微控制器深度剖析:特性、應用與設計要點
探索Microchip PIC12/16(L)F161X系列微控制器:小身材大能量
深入了解Microchip PIC16C5X系列:8位單片機的卓越之選
深入解析Microchip PIC16F872微控制器
PIC16F17146 Curiosity Nano評估套件核心技術解析
PIC18F16Q20 Curiosity Nano開發板技術解析與應用指南
PIC16F13145 Curiosity Nano評估套件技術解析
PIC16F13145微控制器技術解析與應用指南
Microchip PIC16F1619實驗:PIC16的雙速啟動教程
評論