<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
WORD格式全文下载链接(充值:元)