本章介绍一个利用实时中断,设计的调度模块。利用该模块,不仅可以让I/O管脚输出特定占空比的方波,还可以让程序有序的去调度。
建议读者先自行阅读芯片资料第15章的内容,内容不多。芯片资料可以到我的百度盘下载,该芯片的中英文的资料分别https://pan.baidu.com/s/1dgVbkE https://pan.baidu.com/s/1o9qFU5c,如果对英文不是很熟悉,那就阅读中文的。
1.摘取文字来了解这款芯片的RTC
第一句:15.1.2 Features 中“ 8-bit up-counter”upcounter就是向上计数,比如一个变量从0开始然后1、2、3...一直往上 加。
第二句:15.1.2 Features中“...software selectable clock sources...”"— 1-kHz internal Low Power Oscillator (LPO) ;
— External clock (ERCLK);— 32-kHz internal clock (IRCLK)"可为RTC提供的驱动时钟源,一共有三个分别为 LPO;MCGERCLK;MCGIRCLK,可以参看本系列《第二课 MC9S08DZ60之多功能时钟发生器S08MCGV1》中对系统时钟及系 统时钟图的说明。
第三句:15.3.1 RTC Status and Control Register (RTCSC)
A.要知道RTCSC寄存器中包含中断置起标志RTIF,且Writing a logic 1 TO RTIF clears the bit and the real-time interrupt request .写1到RTIF位及清除中断标志。
B. 要知道RTCSC寄存器中包含时钟源的选择位 RTCLKS,且只有3个不同的源。
C.要知道RTCSC寄存器中包含计数匹配成功后,中断使能与否的设置位 RTIE.
D.要知道RTCSC寄存器中包含为8位RTCCNT使用的预分频 RTCPS。
第四句:15.3.2 RTC Counter Register (RTCCNT)中“writing to RTCMOD, or writing different values to RTCLKS and RTCPS clear the count to 0x00. 每次写匹配数值RTCMOD或者重新选择时钟源,先前的计数RTCCNT都会清零,重新开 始新的计数。另外本单片机只有8位计数器,计数最大次数为0xFF,那么最长可以设计的匹配时常为255*T每一次计数所要花的时间。T每一次计数所要花的时间由选择的时钟源和预分频值决定。
第五句:15.3.3 RTC Modulo Register (RTCMOD)中“ These eight read/write bits contain the modulo value used to reset the count to 0x00 upon a compare match and set the RTIF status bit”包含模值用于匹配向上计数器寄 存器RTCCNT中的值,一旦RTCMOD和RTCCNT中的值相等,就会清零RTCCNT和置起中断标志RTIF。
2.分析‘’15.4.1 RTC Operation Example‘’中的例子实现过程
下图Figure 15-6为RTC计数溢出计数实例,图中第一个时序LPO 1-kHz代表的是RTCLKS=0,RTC的时钟源为LPO1kHz,周期为1ms。第二个时序预分频RTCPS为0xA,也即是十进制的10.查表Table 15-3,找到预分频系数为除4(2^2次方)。那么经过预分频后的频率为1000/4= 250Hz,周期为4ms。由下图Figure 15-2得出,每4ms计数器RTCCNT up counter一次,当RTCCNT中的计数值等于RTCMOD中的值。那么中断标志RTIF置起,RTCCNT也清零,并重新开始计数。