UPD78F0411 時(shí)鐘控制(1) UPD78F0411 時(shí)鐘控制 1.1 控制高速系統(tǒng)時(shí)鐘示例 如下兩種高速系統(tǒng)時(shí)鐘可用。 X1 時(shí)鐘: 晶體/陶瓷振蕩器連接到X1 和X2 引腳。 外部主系統(tǒng)時(shí)鐘: 外部時(shí)鐘輸入到EXCLK 引腳。 不使用高速系統(tǒng)時(shí)鐘時(shí),X1/P121 和X2/EXCLK/P122 引腳可用作I/O 端口引腳。 注意事項(xiàng) 復(fù)位釋放后,OCD0A/X1/P121 和OCD0B/X2/EXCLK/P122 引腳為I/O 端口模式。 下面描述的示例是以下情況時(shí)的設(shè)置過程示例。 (1) X1 時(shí)鐘振蕩 (2) 使用外部主系統(tǒng)時(shí)鐘 (3) 將高速系統(tǒng)時(shí)鐘作為CPU 時(shí)鐘和外部硬件時(shí)鐘 (4) 停止高速系統(tǒng)時(shí)鐘 (1) X1 時(shí)鐘振蕩時(shí)設(shè)置過程示例 <1> 設(shè)置P121/X1 和P122/X2/EXCLK 引腳,并選擇X1 時(shí)鐘或外部時(shí)鐘(OSCCTL 寄存器),當(dāng)EXCLK 清零且OSCSEL 置1 時(shí),從端口模式切換到X1 振蕩模式
若MSTOP 被清零,則X1 振蕩器開始振蕩。 <3> 等待X1 時(shí)鐘振蕩穩(wěn)定 檢測(cè)OSTC 寄存器并等待所需的時(shí)間。 在等待時(shí)間內(nèi),其它軟件處理過程的執(zhí)行可以使用內(nèi)部高速振蕩時(shí)鐘。 注意事項(xiàng) 1. 在X1 時(shí)鐘運(yùn)行時(shí),不要改變EXCLK 和OSCSEL 的值。 2. 當(dāng)供電電壓達(dá)到所用時(shí)鐘的操作電壓后,設(shè)置X1 時(shí)鐘。 (2) 使用外部主系統(tǒng)時(shí)鐘時(shí)設(shè)置過程示例 <1> 設(shè)置P121/X1 和P122/X2/EXCLK 引腳并選擇操作模式(OSCCTL 寄存器) 當(dāng)EXCLK 和OSCSEL 置1 時(shí),從端口模式切換到外部時(shí)鐘輸入模式。
MSTOP清零時(shí),允許外部主系統(tǒng)時(shí)鐘輸入。 注意事項(xiàng)1. 在外部主系統(tǒng)時(shí)鐘運(yùn)行時(shí),不要改變EXCLK和OSCSEL 的值。 2. 當(dāng)供電電壓達(dá)到所用時(shí)鐘的操作電壓后,設(shè)置X1 時(shí)鐘。 (3) 使用高速系統(tǒng)時(shí)鐘作為CPU 時(shí)鐘和外部硬件時(shí)鐘時(shí)設(shè)置過程示例 <1> 設(shè)置高速系統(tǒng)時(shí)鐘振蕩注 注 當(dāng)高速系統(tǒng)時(shí)鐘已經(jīng)運(yùn)行時(shí),不需要設(shè)置<1>。 <2> 設(shè)置高速系統(tǒng)時(shí)鐘作為主系統(tǒng)時(shí)鐘(MCM寄存器) XSEL 和MCM0 置1 時(shí),高速系統(tǒng)時(shí)鐘作為主系統(tǒng)時(shí)鐘和外部硬件時(shí)鐘。 注意事項(xiàng)如果選擇高速系統(tǒng)時(shí)鐘作為主系統(tǒng)時(shí)鐘,則只有高速系統(tǒng)時(shí)鐘可以被設(shè)置為外部硬件時(shí)鐘。 <3> 設(shè)置主系統(tǒng)時(shí)鐘作為CPU 時(shí)鐘并選擇分頻比(PCC 寄存器) CSS 清零時(shí),主系統(tǒng)時(shí)鐘提供給CPU。若要選擇CPU 時(shí)鐘分頻比,應(yīng)使用PCC0、PCC1 和PCC2。 (4) 停止高速系統(tǒng)時(shí)鐘時(shí)設(shè)置過程示例 高速系統(tǒng)時(shí)鐘可以用如下兩種方式停止。 執(zhí)行STOP 指令以設(shè)置為STOP 模式 MSTOP 置1 并停止X1 振蕩(如果使用外部時(shí)鐘則禁止時(shí)鐘輸入) (a) 執(zhí)行STOP 指令 <1> 停止外部硬件的設(shè)置 停止那些不能在STOP 模式下使用的外部硬件 <2> 釋放待機(jī)模式后設(shè)置X1時(shí)鐘振蕩穩(wěn)定時(shí)間 當(dāng)CPU 使用X1 時(shí)鐘時(shí),在STOP 指令執(zhí)行前設(shè)置OSTS。 <3> 執(zhí)行STOP 指令 執(zhí)行STOP 指令時(shí),系統(tǒng)處于STOP 模式下并且X1 振蕩停止(禁止外部時(shí)鐘輸入)。 (b) 通過將MSTOP 設(shè)置為1 來停止X1 振蕩(禁止外部時(shí)鐘輸入) <1> 確認(rèn)CPU 時(shí)鐘狀態(tài)(PCC 和MCM寄存器) 根據(jù)CLS和MCS 確認(rèn)CPU 沒有使用高速系統(tǒng)時(shí)鐘。 當(dāng)CLS = 0 且MCS = 1 時(shí),CPU 采用高速系統(tǒng)時(shí)鐘,因此將CPU 時(shí)鐘切換為副系統(tǒng)時(shí)鐘或者內(nèi)部高速振蕩時(shí)鐘。 <2> 停止高速系統(tǒng)時(shí)鐘(MOC 寄存器) MSTOP 置1 時(shí),X1 振蕩停止(禁止外部時(shí)鐘輸入)。 注意事項(xiàng) 當(dāng)MSTOP= 1 時(shí),必須確認(rèn)MCS = 0 或CLS = 1。此外,必須停止正在使用高速系統(tǒng)時(shí)鐘的外部硬件。 1.2 控制內(nèi)部高速振蕩時(shí)鐘示例 下面描述的示例是以下情況時(shí)的設(shè)置過程示例。 (1) 內(nèi)部高速振蕩時(shí)鐘重新開始振蕩時(shí) (2) 使用內(nèi)部高速振蕩時(shí)鐘作為CPU 時(shí)鐘,并且內(nèi)部高速振蕩時(shí)鐘或高速系統(tǒng)時(shí)鐘用作外部硬件時(shí)鐘時(shí) (3) 停止內(nèi)部高速振蕩時(shí)鐘時(shí) (1) 內(nèi)部高速振蕩時(shí)鐘重新振蕩時(shí)設(shè)置過程示例注1 <1> 內(nèi)部高速振蕩時(shí)鐘重新振蕩的設(shè)置(RCM 寄存器) RSTOP 清零時(shí),內(nèi)部高速振蕩時(shí)鐘開始運(yùn)行。 <2> 等待內(nèi)部高速振蕩時(shí)鐘的振蕩精確穩(wěn)定時(shí)間(RCM寄存器)。 一直到RSTS = 1 注2。 注1. 復(fù)位釋放后,內(nèi)部高速振蕩器自動(dòng)開始振蕩并且內(nèi)部高速振蕩時(shí)鐘作為CPU 時(shí)鐘使用。 2. 如果CPU 時(shí)鐘和外部硬件時(shí)鐘不需要很高的精度,則無需等待時(shí)間。 (2) 使用內(nèi)部高速振蕩時(shí)鐘作為CPU 時(shí)鐘且內(nèi)部高速振蕩時(shí)鐘或高速系統(tǒng)時(shí)鐘作為外部硬件時(shí)鐘時(shí)設(shè)置過程示例 <1> 內(nèi)部高速振蕩時(shí)鐘重新振蕩注 (參見5.6.2 (1) 內(nèi)部高速振蕩時(shí)鐘重新振蕩時(shí)設(shè)置過程示例)。 高速系統(tǒng)時(shí)鐘振蕩注 (使用高速系統(tǒng)時(shí)鐘作為外部硬件時(shí)鐘時(shí)所需的設(shè)置。 注 當(dāng)內(nèi)部高速振蕩時(shí)鐘或高速系統(tǒng)時(shí)鐘已經(jīng)運(yùn)行時(shí),不需要設(shè)置<1>。 <2> 選擇主系統(tǒng)時(shí)鐘和外部硬件時(shí)鐘(MCM寄存器) 使用XSEL 和MCM0 設(shè)置主系統(tǒng)時(shí)鐘和外部硬件時(shí)鐘。 <3> 選擇CPU 時(shí)鐘分頻比(PCC 寄存器) CSS 清零時(shí),主系統(tǒng)時(shí)鐘提供給CPU。若要選擇CPU 時(shí)鐘分頻比,應(yīng)使用PCC0、PCC1 和PCC2 (3) 停止內(nèi)部高速振蕩時(shí)鐘時(shí)設(shè)置過程示例 可以用如下兩種方式停止內(nèi)部高速振蕩時(shí)鐘。 執(zhí)行STOP 指令設(shè)置STOP 模式 將RSTOP 置1 且停止內(nèi)部高速振蕩時(shí)鐘 (a) 執(zhí)行STOP 指令 <1> 設(shè)置外部硬件 停止那些不能在STOP 模式下使用的外部硬件。 <2> 釋放待機(jī)模式后X1時(shí)鐘振蕩穩(wěn)定時(shí)間的設(shè)置 CPU 使用X1時(shí)鐘時(shí),在STOP 指令執(zhí)行前設(shè)置OSTS。 <3> 執(zhí)行STOP 指令 執(zhí)行STOP 指令時(shí),系統(tǒng)處于STOP 模式下并且停止內(nèi)部高速振蕩時(shí)鐘。 (b) 通過RSTOP 置1 停止內(nèi)部高速振蕩時(shí)鐘 <1> 確認(rèn)CPU 時(shí)鐘狀態(tài)(PCC 和MCM寄存器) 根據(jù)CLS和MCS 確認(rèn)CPU 沒有使用內(nèi)部高速振蕩時(shí)鐘。 CLS = 0 和MCS = 0 時(shí),CPU 采用內(nèi)部高速振蕩時(shí)鐘,因此將CPU 時(shí)鐘切換為高速系統(tǒng)時(shí)鐘或副系統(tǒng)時(shí)鐘。 <2> 停止內(nèi)部高速振蕩時(shí)鐘(RCM 寄存器) RSTOP 置1 時(shí),停止內(nèi)部高速振蕩時(shí)鐘。 注意事項(xiàng)當(dāng)RSTOP= 1 時(shí),必須確認(rèn)MCS = 1 或CLS = 1。此外,必須停止正在使用內(nèi)部高速振蕩時(shí)鐘的 外部硬件。 1.3 控制副系統(tǒng)時(shí)鐘示例 可用如下兩種副系統(tǒng)時(shí)鐘。 XT1 時(shí)鐘: 晶體/陶瓷振蕩器連接到XT1 和XT2 引腳。 不使用副系統(tǒng)時(shí)鐘時(shí), XT1/P123 和XT2/P124 引腳可用作I/O 端口引腳。 注意事項(xiàng) 復(fù)位釋放后XT1/P123 和XT2 /P124 引腳為在輸入端口模式。 下面描述的示例是以下情況時(shí)的設(shè)置過程示例。 (1) XT1 時(shí)鐘振蕩 (2) 使用副系統(tǒng)時(shí)鐘作為CPU 時(shí)鐘 (3) 停止副系統(tǒng)時(shí)鐘 (1) XT1 時(shí)鐘振蕩時(shí)設(shè)置過程示例 <1> 設(shè)置XT1 和XT2 引腳并選擇操作模式(PCC 和OSCCTL 寄存器) 當(dāng)OSCSELS 設(shè)置為如下模式時(shí),將從端口模式切換到XT1 振蕩模式。 <2> 等待副系統(tǒng)時(shí)鐘振蕩穩(wěn)定 使用定時(shí)器功能,通過軟件等待副系統(tǒng)時(shí)鐘振蕩穩(wěn)定時(shí)間。 注意事項(xiàng) 在副系統(tǒng)時(shí)鐘運(yùn)行時(shí),不要改變OSCSELS 的值。 (2) 使用副系統(tǒng)時(shí)鐘作為CPU 時(shí)鐘時(shí)設(shè)置過程示例 <1> 設(shè)置副系統(tǒng)時(shí)鐘振蕩注 注 當(dāng)副系統(tǒng)時(shí)鐘已經(jīng)運(yùn)行時(shí),不需要設(shè)置<1>。 <2> 切換CPU 時(shí)鐘(PCC 寄存器) CSS 置1 時(shí),副系統(tǒng)時(shí)鐘提供給CPU。 (3) 停止副系統(tǒng)時(shí)鐘時(shí)設(shè)置過程示例 <1> 確認(rèn)CPU 時(shí)鐘狀態(tài)(PCC 和MCM 寄存器) 根據(jù)CLS和MCS確認(rèn)CPU 沒有使用副系統(tǒng)時(shí)鐘。 當(dāng)CLS = 1 時(shí),CPU 采用副系統(tǒng)時(shí)鐘,因此將CPU 時(shí)鐘切換為內(nèi)部高速振蕩時(shí)鐘或高速系統(tǒng)時(shí)鐘 <2> 停止副系統(tǒng)時(shí)鐘(OSCCTL 寄存器) OSCSELS 清零時(shí),停止XT1 振蕩。 注意事項(xiàng)1. 清零OSCSEL 時(shí),必須確認(rèn)CLS = 0。此外,如果外圍硬件使用副系統(tǒng)時(shí)鐘,則應(yīng)停止其操作。 2. 副系統(tǒng)時(shí)鐘振蕩不能通過使用STOP 指令來停止。 文章來源:http://www.originic.hk/Item/Show.asp?m=1&d=1784 |