PIC16的雙速啟動(dòng)模式
當(dāng)振蕩器模塊被配置為HS模式時(shí),系統(tǒng)使用外部晶振提供的頻率作為系統(tǒng)時(shí)鐘。但是晶振起振與代碼執(zhí)行之間是存在延時(shí)的,在這段延時(shí)期間,單片機(jī)是無法執(zhí)行任何程序的。HS模式下,上電之后晶振起振,提供時(shí)鐘信號(hào),但是這個(gè)信號(hào)不能馬上被系統(tǒng)使用,因?yàn)檫@時(shí)候的時(shí)鐘信號(hào)可能還不大穩(wěn)定,所以需要等待一段穩(wěn)定時(shí)間,振蕩器才能用作系統(tǒng)時(shí)鐘源。振蕩器起振定時(shí)器(OST)的作用就在這里,HS模式OST會(huì)被使能接收到晶振的振蕩信號(hào)后它會(huì)開始計(jì)數(shù),當(dāng)計(jì)數(shù)到1024次振蕩時(shí),穩(wěn)定時(shí)間已過,外部晶振開始作用于系統(tǒng)時(shí)鐘源。
對(duì)于一些需要快速啟動(dòng)的系統(tǒng),這段延時(shí)可能會(huì)是一個(gè)比較讓人頭疼的問題,例如需要經(jīng)常休眠然后需要快速啟動(dòng)的系統(tǒng),這段延時(shí)啟動(dòng)會(huì)降低系統(tǒng)的反應(yīng)敏捷度,空等延時(shí)也是浪費(fèi)了無意義的電量損耗。雙速時(shí)鐘啟動(dòng)模式,則可以解決這個(gè)問題。
雙速時(shí)鐘啟動(dòng)簡(jiǎn)單來說,就是在啟動(dòng)延時(shí)這段時(shí)間里,啟動(dòng)內(nèi)部振蕩器來提供時(shí)鐘信號(hào),程序上電就能跑,然后當(dāng)1024次震蕩周期過了之后,切換回外部晶振提供的時(shí)鐘信號(hào)。兩者合作,度過這段虛無的時(shí)光。
1.雙速啟動(dòng)順序
1. 從上電復(fù)位或休眠中喚醒。
2. 使用內(nèi)部振蕩器以O(shè)SCCON寄存器的IRCF《3:0》位設(shè)置的頻率(默認(rèn)只500 kHz)開始執(zhí)行指令。
3. OST使能,計(jì)數(shù)1024個(gè)時(shí)鐘周期。
4. OST超時(shí),等待內(nèi)部振蕩器下降沿出現(xiàn)。
5. OSCSTAT寄存器的OSTS位置1(根據(jù)此標(biāo)志位判斷是外部時(shí)鐘源運(yùn)行,還是內(nèi)部振蕩器運(yùn)行)。
6. 系統(tǒng)時(shí)鐘保持為低電平,直到新時(shí)鐘下一個(gè)下降沿出現(xiàn)(HS模式)。
7. 系統(tǒng)時(shí)鐘切換到外部時(shí)鐘源。
2.通過以下設(shè)置來配置雙速啟動(dòng)模式:
1.配置字CONFIG1的bit 12(IESO)=1,使能內(nèi)/外部時(shí)鐘切換模式
2.SCS(在OSCCON寄存器中)= 00,由配置字中的FOSC《1:0》決定時(shí)鐘來源。
3. 配置字中的FOSC《2:0》位被配置HS模式,即FOSC《2:0》 = 010。
3.實(shí)驗(yàn)代碼
#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 時(shí)鐘初始化
PORTA |= 0x04;
TRISA &= 0xfb;
while(1)
{
RA2=1;
__delay_ms(100);
RA2=0;
__delay_ms(100);
}
}
不過,事實(shí)上雖然有代碼了,但是沒辦法進(jìn)入雙速時(shí)鐘模式,因?yàn)榘遄痈揪蜎]有外部晶振。將工程編譯燒錄之后,確實(shí)可以看到D6在閃爍,因?yàn)閙uc以配置的500KHz時(shí)鐘在運(yùn)行。dalao不存在的,只有擋刀的小兵。
-
時(shí)鐘
+關(guān)注
關(guān)注
11文章
1886瀏覽量
132890 -
PIC16F1619
+關(guān)注
關(guān)注
0文章
2瀏覽量
2908
發(fā)布評(píng)論請(qǐng)先 登錄
PIC16F627A/628A/648A數(shù)據(jù)手冊(cè)
Microchip發(fā)布PIC16F17576系列單片機(jī)
PIC16F630/676中文數(shù)據(jù)手冊(cè)
Microchip PIC32A系列MCU 集成高性能模擬外設(shè)的32位MCU

PIC12F629/675 數(shù)據(jù)手冊(cè)免費(fèi)下載
PIC16F716 數(shù)據(jù)手冊(cè)免費(fèi)下載
AN4121-采用PIC16F單片機(jī)進(jìn)行系統(tǒng)電源控制

用pic16f887控制ldc1000進(jìn)行spi通信,無法讀取ldc1000中寄存器的值,為什么?
我是Microchip 的代理商,有PIC16F1829T-I/SS 技術(shù)問題可以咨詢我,微信:A-chip-Ti

EN8F1823E完全替代PIC16F883,PIC16F1883,PIC16F1936,PIC16F1937
MPU進(jìn)入64位時(shí)代,Microchip推出PIC64系列產(chǎn)品

英銳恩EN8F1892完全替代PIC16F1823,PIC16F15323微芯單片機(jī)芯片

評(píng)論