4.3振荡器
这种微控制器有两种可选的振荡器类型:RC振荡器和石英晶体振荡器,具体采用哪一种,是在掩模时确定的。两种类型振荡器的片内和片外电路均不相同。
石英晶体振荡器采用石英共振或陶瓷共振来提供精确的时钟频率。在实际工作时,这种振荡器有两个外部引脚,即振荡放大器输入端OSC1和振荡放大器输出端OSC2。需要在这两个引脚间加入晶振、反馈电阻和电容,以实现稳定的工作频率。
RC振荡器依靠外部一对电阻和电容与片内电路来提供精度为10%的时钟频率,要求用在这里的电阻和电容自己的精度为1%。按这种方式连接的振荡器精度和稳定度都要比石英晶体振荡器为低,但它只用到了一个外部引脚,即OSC1。原OSC2引脚可以设定为通用I/O引脚PT6或者RC振荡器输出时钟RCCLK。这两种振荡器外部接法如下图所示:
振荡器电路的输出2OSCOUT为SIM单元提供时钟,并决定COP的时钟周期。对石英晶体振荡器,2OSCOUT与XTALCLK相连,对RC振荡器,2OSCOUT与RCCLK相连。将2OSCOUT二分频后,得到OSCOUT,用于产生CPU和其他模块的总线时钟。
当CPU进入低功耗STOP模式时,XTALCLK和RCCLK以及OSCCLK都被禁止,而在WAIT或BREAK模式时,时钟不受影响。
4.4 控制器中所用到的片内模块
4.4.1定时器接口模块(TIM)
(1)TIM结构和功能
本次设计中,定时器模块主要是用来产生PWM可调制波形。它在无刷电机转速控制中起着非常重要的作用。先来看下它的内部框图:
TIM框图
主要功能如下:
<1> 2通道定时/计数器
<2> 输入捕获: 上升沿、下降沿或任何跳变沿
<3> 输出比较: 设计、清除或触发
<4> 脉冲调宽PWM
<5> 可编程时钟输入:系统时钟预分器,外时钟(最高4MHz)输入
<6> 可产生DMA中断
<7> 模块结构,可以扩充至8通道
(2)PWM波发生器
MC68HC(9)08JL3有带缓冲的输出比较功能。通过设置TSC0中的MS0B位,将通道0和1联系起来,在PTD4/TCH0引脚上输出这个输出比较信,PTD5/TCH1这时作为普通的I/O使用。两个通道的输出比较寄存器在相邻的两个溢出周期内,依次轮流控制输出比较功能。先是通道0控制一个溢出周期,然后是通道1控制。这样就可以在其中一个通道控制时,来改写另一个通道的输出比较寄存器,这样就不会出现在不带缓冲的输出比较功能中改写输出比较寄存器时出现的问题。
如果在使用输出比较功能的同时,在计数器溢出时,切换输出引脚上的电平,就可以产生PWM信号。模数寄存器(TMODH:TMODL)中的值决定了PWM信号的周期。当计数器中的值达到模数寄存器中的值时,TIM就切换该通道输出引脚上的电平。相应地,输出比较寄存器中的值决定了PWM信号的脉宽,如下图所示。
PWM周期和脉宽
由于PWM的发生,用到了TIM的输出比较功能,所以,对于PWM来说,同样存在修改输出比较寄存器时带来的输出脉冲暂时不稳定的情况。因此,在MC68HC(9)08JL3中,也有不带缓冲的PWM和带缓冲的PWM之分。它们的操作和前面的输出比较功能是一样的,唯一的区别,在于通道状态控制寄存器TSCx中的TOVx位设置的不同,PWM方式下,要是该位有效,使得时钟溢出时,切换输出引脚上的电平。
PWM初始化顺序如下:
1. TIM状态控制寄存器TSC:设置TSTOP位,使TIM停止;设置TR位,使TIM复位;
2.在TMODH:TMODL中写入PWM的周期(模数);
3.在TIM通道寄存器(TCHxH:TCHxL)中写入PWM脉宽;
4.在TIM通道状态控制寄存器(TSCx)中:写入0:1(无缓冲的输出比较或者PWM信号)或者1:0(缓冲的输出比较或者PWM信号)到模式选择位MSxB:MSxA;TOVx写入1,在溢出时,切换输出引脚上的电平;在沿/电平选择位,ELSxB:ELSxA,写入1:0(清除输出引脚点平)或者1:1(设置输出引脚电平)。
5.在TSC中清除TSTOP位。
4.4.2 ADC转换模块
MC68HC(9)08JL3包含有一个8位的12路ADC转换器。其主要特性为:
<1>12路可复用的ADC通道
<2>结果为连续线性近似
<3>8位的分辨率
<4>单一或连续转换
<5>具有转换结束标志或中断功能
6.时钟可选的ADC
ADC的12路输入引脚分别为PTB7~PTB0,PTD3~PTD0。可以选择其中的任何一条腿作为ADC的电压输入,ADC通过近似连续的计数器值来标定转换结果。其精度为8位。当转换结束,ADC将结果放入ADC数据寄存器,并且设立标志或产生中断。
PTB7~PTB0,PTD3~PTD0可作为通常I/O引腿或ADC的输入,通过设定(ADC状态控制寄存器,$003C)来选择哪一路作为ADC输入。一旦设定为ADC输入,其作为普通I/O功能失效,这时,向此位的端口寄存器或DDR写入无效,而读时,倘若DDR相应位为0,读入为0;而相应位为1,读出的将是以前的锁存值。这时,其它未设为ADC输入的引腿保持其正常的I/O功能。
ADC转换为线性转换,高于或等于Vss,其结果为$FF, 低于或等于Vdd,其结果为$00。每次转换要16个ADC内部时钟。ADC从写ADSCR信号的第一个ADC内部时钟的上升沿开始转换。倘若ADC内部时钟为1MHz,其完成一次转换耗时16us。
当连续转换时,ADC连续对所选通道进行转换,并对ADC的数据寄存器进行每次更新,而不管读出与否。转换通过ADCO位清零来终止。每次转换完后COCO位(ADC状态控制寄存器,$003C)置一,可以通过写ADC状态控制寄存器,$003C或读ADC数据寄存器来清零。
当AIEN置1,允许ADC转换结束中断。而且COCO位为0,就会发生中断。但是允许中断时,COCO位并不是作为转换结
首页 上一页 4 5 6 7 8 9 10 下一页 尾页 7/11/11
免费资料论文--基于Motorola单片机的电动自行车控制器的设计(七)由教育资料网(www.jaoyuw.com)会员上传。