UPD78F0411 时钟控制(1)
扫描二维码
随时随地手机看文章
UPD78F0411 时钟控制(1)
UPD78F0411 时钟控制
1.1 控制高速系统时钟示例
如下两种高速系统时钟可用。
X1 时钟: 晶体/陶瓷振荡器连接到X1 和X2 引脚。
外部主系统时钟: 外部时钟输入到EXCLK 引脚。
不使用高速系统时钟时,X1/P121 和X2/EXCLK/P122 引脚可用作I/O 端口引脚。
注意事项 复位释放后,OCD0A/X1/P121 和OCD0B/X2/EXCLK/P122 引脚为I/O 端口模式。
下面描述的示例是以下情况时的设置过程示例。
(1) X1 时钟振荡
(2) 使用外部主系统时钟
(3) 将高速系统时钟作为CPU 时钟和外部硬件时钟
(4) 停止高速系统时钟
(1) X1 时钟振荡时设置过程示例
<1> 设置P121/X1 和P122/X2/EXCLK 引脚,并选择X1 时钟或外部时钟(OSCCTL 寄存器),当EXCLK 清零且OSCSEL 置1 时,从端口模式切换到X1 振荡模式
EXCLK | OSCSEL | 高速系统时钟引脚操作模式 | P121/X1 引脚 | P122/X2/EXCLK Pin |
0 | 1 | X1 振荡模式 | 晶体/陶瓷振荡器连接 |
若MSTOP 被清零,则X1 振荡器开始振荡。
<3> 等待X1 时钟振荡稳定
检测OSTC 寄存器并等待所需的时间。
在等待时间内,其它软件处理过程的执行可以使用内部高速振荡时钟。
注意事项 1. 在X1 时钟运行时,不要改变EXCLK 和OSCSEL 的值。
2. 当供电电达到所用时钟的操作电压后,设置X1 时钟。
(2) 使用外部主系统时钟时设置过程示例
<1> 设置P121/X1 和P122/X2/EXCLK 引脚并选择操作模式(OSCCTL 寄存器)
当EXCLK 和OSCSEL 置1 时,从端口模式切换到外部时钟输入模式。
EXCLK | OSCSEL | 高速系统时钟引脚操作模式 | P121/X1 引脚 | P122/X2/EXCLK Pin |
1 | 1 | 外部时钟输入模式 | I/O 端口 | 外部时钟输入 |
MSTOP清零时,允许外部主系统时钟输入。
注意事项1. 在外部主系统时钟运行时,不要改变EXCLK和OSCSEL 的值。
2. 当供电电压达到所用时钟的操作电压后,设置X1 时钟。
(3) 使用高速系统时钟作为CPU 时钟和外部硬件时钟时设置过程示例
<1> 设置高速系统时钟振荡注
注 当高速系统时钟已经运行时,不需要设置<1>。
<2> 设置高速系统时钟作为主系统时钟(MCM寄存器)
XSEL 和MCM0 置1 时,高速系统时钟作为主系统时钟和外部硬件时钟。
注意事项如果选择高速系统时钟作为主系统时钟,则只有高速系统时钟可以被设置为外部硬件时钟。
<3> 设置主系统时钟作为CPU 时钟并选择分频比(PCC 寄存器)
CSS 清零时,主系统时钟提供给CPU。若要选择CPU 时钟分频比,应使用PCC0、PCC1 和PCC2。
(4) 停止高速系统时钟时设置过程示例
高速系统时钟可以用如下两种方式停止。
执行STOP 指令以设置为STOP 模式
MSTOP 置1 并停止X1 振荡(如果使用外部时钟则禁止时钟输入)
(a) 执行STOP 指令
<1> 停止外部硬件的设置
停止那些不能在STOP 模式下使用的外部硬件
<2> 释放待机模式后设置X1时钟振荡稳定时间
当CPU 使用X1 时钟时,在STOP 指令执行前设置OSTS。
<3> 执行STOP 指令
执行STOP 指令时,系统处于STOP 模式下并且X1 振荡停止(禁止外部时钟输入)。
(b) 通过将MSTOP 设置为1 来停止X1 振荡(禁止外部时钟输入)
<1> 确认CPU 时钟状态(PCC 和MCM寄存器)
根据CLS和MCS 确认CPU 没有使用高速系统时钟。
当CLS = 0 且MCS = 1 时,CPU 采用高速系统时钟,因此将CPU 时钟切换为副系统时钟或者内部高速振荡时钟。
<2> 停止高速系统时钟(MOC 寄存器)
MSTOP 置1 时,X1 振荡停止(禁止外部时钟输入)。
注意事项 当MSTOP= 1 时,必须确认MCS = 0 或CLS = 1。此外,必须停止正在使用高速系统时钟的外部硬件。
1.2 控制内部高速振荡时钟示例
下面描述的示例是以下情况时的设置过程示例。
(1) 内部高速振荡时钟重新开始振荡时
(2) 使用内部高速振荡时钟作为CPU 时钟,并且内部高速振荡时钟或高速系统时钟用作外部硬件时钟时
(3) 停止内部高速振荡时钟时
(1) 内部高速振荡时钟重新振荡时设置过程示例注1
<1> 内部高速振荡时钟重新振荡的设置(RCM 寄存器)
RSTOP 清零时,内部高速振荡时钟开始运行。
<2> 等待内部高速振荡时钟的振荡精确稳定时间(RCM寄存器)。
一直到RSTS = 1 注2。
注1. 复位释放后,内部高速振荡器自动开始振荡并且内部高速振荡时钟作为CPU 时钟使用。
2. 如果CPU 时钟和外部硬件时钟不需要很高的精度,则无需等待时间。
(2) 使用内部高速振荡时钟作为CPU 时钟且内部高速振荡时钟或高速系统时钟作为外部硬件时钟时设置过程示例
<1> 内部高速振荡时钟重新振荡注
(参见5.6.2 (1) 内部高速振荡时钟重新振荡时设置过程示例)。
高速系统时钟振荡注
(使用高速系统时钟作为外部硬件时钟时所需的设置。
注 当内部高速振荡时钟或高速系统时钟已经运行时,不需要设置<1>。
<2> 选择主系统时钟和外部硬件时钟(MCM寄存器)
使用XSEL 和MCM0 设置主系统时钟和外部硬件时钟。
<3> 选择CPU 时钟分频比(PCC 寄存器)
CSS 清零时,主系统时钟提供给CPU。若要选择CPU 时钟分频比,应使用PCC0、PCC1 和PCC2
(3) 停止内部高速振荡时钟时设置过程示例
可以用如下两种方式停止内部高速振荡时钟。
执行STOP 指令设置STOP 模式
将RSTOP 置1 且停止内部高速振荡时钟
(a) 执行STOP 指令
<1> 设置外部硬件
停止那些不能在STOP 模式下使用的外部硬件。
<2> 释放待机模式后X1时钟振荡稳定时间的设置
CPU 使用X1时钟时,在STOP 指令执行前设置OSTS。
<3> 执行STOP 指令
执行STOP 指令时,系统处于STOP 模式下并且停止内部高速振荡时钟。
(b) 通过RSTOP 置1 停止内部高速振荡时钟
<1> 确认CPU 时钟状态(PCC 和MCM寄存器)
根据CLS和MCS 确认CPU 没有使用内部高速振荡时钟。
CLS = 0 和MCS = 0 时,CPU 采用内部高速振荡时钟,因此将CPU 时钟切换为高速系统时钟或副系统时钟。
<2> 停止内部高速振荡时钟(RCM 寄存器)
RSTOP 置1 时,停止内部高速振荡时钟。
注意事项当RSTOP= 1 时,必须确认MCS = 1 或CLS = 1。此外,必须停止正在使用内部高速振荡时钟的
外部硬件。
1.3 控制副系统时钟示例
可用如下两种副系统时钟。
XT1 时钟: 晶体/陶瓷振荡器连接到XT1 和XT2 引脚。
不使用副系统时钟时, XT1/P123 和XT2/P124 引脚可用作I/O 端口引脚。
注意事项 复位释放后XT1/P123 和XT2 /P124 引脚为在输入端口模式。
下面描述的示例是以下情况时的设置过程示例。
(1) XT1 时钟振荡
(2) 使用副系统时钟作为CPU 时钟
(3) 停止副系统时钟
(1) XT1 时钟振荡时设置过程示例
<1> 设置XT1 和XT2 引脚并选择操作模式(PCC 和OSCCTL 寄存器)
当OSCSELS 设置为如下模式时,将从端口模式切换到XT1 振荡模式。
<2> 等待副系统时钟振荡稳定
使用定时器功能,通过软件等待副系统时钟振荡稳定时间。
注意事项 在副系统时钟运行时,不要改变OSCSELS 的值。
(2) 使用副系统时钟作为CPU 时钟时设置过程示例
<1> 设置副系统时钟振荡注
注 当副系统时钟已经运行时,不需要设置<1>。
<2> 切换CPU 时钟(PCC 寄存器)
CSS 置1 时,副系统时钟提供给CPU。
(3) 停止副系统时钟时设置过程示例
<1> 确认CPU 时钟状态(PCC 和MCM 寄存器)
根据CLS和MCS确认CPU 没有使用副系统时钟。
当CLS = 1 时,CPU 采用副系统时钟,因此将CPU 时钟切换为内部高速振荡时钟或高速系统时钟
<2> 停止副系统时钟(OSCCTL 寄存器)
OSCSELS 清零时,停止XT1 振荡。
注意事项1. 清零OSCSEL 时,必须确认CLS = 0。此外,如果外围硬件使用副系统时钟,则应停止其操作。
2. 副系统时钟振荡不能通过使用STOP 指令来停止。