AVR单片机定时器的要点
扫描二维码
随时随地手机看文章
分5种工作类型 一 普通模式 wgm1=0跟51的普通模式差不多,有tov1溢出中断标志,发生于max(0xffff)时 1采用内部计数时钟用于 icp捕捉输入场合——-测量脉宽/红外解码(捕捉输入功能可以工作在多种模式下,而不单单只是普通模式) 2 采用外部计数脉冲输入 用于 计数,测频其他的应用,采用其他模式更为方便,不需要像51般费神 二 ctc模式 [比较匹配时清零定时器模式] wgm1=4,12跟51的自动重载模式差不多 1 用于输出50%占空比的方波信号 2 用于产生准确的连续定时信号wgm1=4时, 最大值由ocr1a设定,top时产生ocf1a比较匹配中断标志wgm1=12时,最大值由icf1设定, top时产生icf1输入捕捉中断标志 如果top=max,top时也会产生tov1溢出中断标志 注:wgm=15时,也能实现从oc1a输出方波,而且具备双缓冲功能 计算公式: focn=fclk_io/(2*n*(1+top))变量n 代表预分频因子(1、8、64、256、1024),t2多了(32、128)两级。 3 快速pwm模式 wgm1=5,6,7,14,15单斜波计数,用于输出高频率的pwm信号(比双斜波的高一倍频率)都有tov1溢出中断,发生于top时[不是max,跟普通模式,ctc模式不一样]比较匹配后可以产生ocf1x比较匹配中断. wgm1=5时, 最大值为0x00ff, 8位分辨率 wgm1=6时, 最大值为0x01ff, 9位分辨率 wgm1=7时, 最大值为0x03ff,10位分辨率 wgm1=14时,最大值由icf1设定, top时产生icf1输入捕捉中断 (单缓冲) wgm1=15时,最大值由ocr1a设定,top时产生ocf1a比较匹配中断(双缓冲,但oc1a将没有pwm能力,最多只能输出方波)改变top值时必须保证新的top值不小于所有比较寄存器的数值 注意,即使ocr1a/b设为0x0000,也会输出一个定时器时钟周期的窄脉冲,而不是一直为低电平 计算公式:fpwm=fclk_io/(n*(1+top)) 4 相位修正pwm模式 wgm1=1,2,3,10,11双斜波计数,用于输出高精度的,相位准确的,对称的pwm信号都有tov1溢出中断,但发生在bootom时比较匹配后可以产生ocf1x比较匹配中断. wgm1=1时, 最大值为0x00ff, 8位分辨率 wgm1=2时, 最大值为0x01ff, 9位分辨率 wgm1=3时, 最大值为0x03ff,10位分辨率 wgm1=10时,最大值由icf1设定, top时产生icf1输入捕捉中断 (单缓冲) wgm1=11时,最大值由ocr1a设定,top时产生ocf1a比较匹配中断(双缓冲,但oc1a将没有pwm能力,最多只能输出方波)改变top值时必须保证新的top值不小于所有比较寄存器的数值可以输出0% ̄100%占空比的pwm信号若要在t/c 运行时改变top 值,最好用相位与频率修正模式代替相位修正模式。若top保持不变,那么这两种工作模式实际没有区别 计算公式:fpwm=fclk_io/(2*n*top) 5 相位与频率修正pwm模式 wgm1=8,9双斜波计数,用于输出高精度的、相位与频率都准确的pwm波形都有tov1溢出中断,但发生在bootom时比较匹配后可以产生ocf1x比较匹配中断. wgm1=8时,最大值由icf1设定, top时产生icf1输入捕捉中断 (单缓冲) wgm1=9时,最大值由ocr1a设定,top时产生ocf1a比较匹配中断(双缓冲,但oc1a将没有pwm能力,最多只能输出方波)相频修正修正pwm 模式与相位修正pwm 模式的主要区别在于ocr1x 寄存器的更新时间改变top值时必须保证新的top值不小于所有比较寄存器的数值可以输出0% ̄100%占空比的pwm信号使用固定top 值时最好使用icr1 寄存器定义top。这样ocr1a 就可以用于在oc1a输出pwm 波。但是,如果pwm 基频不断变化(通过改变top值), ocr1a的双缓冲特性使其更适合于这个应用。 计算公式:fpwm=fclk_io/(2*n*top)