AVR单片机T/C1的几种工作模式(16位)<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />
其作用:
l 普通模式
l CTC模式
l 快速PWM模式
l 相位修正PWM模式
l 相位频率修正PWM模式
l 输入捕获模式
一、中断系统
<?xml:namespace prefix = v ns = "urn:schemas-microsoft-com:vml" /><?xml:namespace prefix = w ns = "urn:schemas-microsoft-com:office:word" />
#pragma interrupt handler <name>: <vector number>
Name:中断函数名,自定义。
vector number:中断向量号。
如:定时器1溢出中断编程 #pragma interrupt handler miao: 9
二、T/C1相关的寄存器
1、T/C1控制寄存器A
2、T/C1控制寄存器B
3、T/C1中断屏蔽寄存器
注:使用中断时必须先开启总中断SREG|=BIT(7)
4、计数寄存器
5、输出比较寄存器<?xml:namespace prefix = st1 ns = "urn:schemas-microsoft-com:office:smarttags" />1A-OCR1A
6、输出比较寄存器1B-OCR1B
7、输入捕捉寄存器ICR1H ICR1L
三、T/C1相关的模式
l 普通模式(中断定时) 编程方法:在TCCR1B选择 CS12:11:10 的分频器 如:256分频, 8M/256=31250,芯片执行一句指令需要时间1/31250 S,所以从65535-31250=34285到65535溢出时间为1S。34285十六进制为85ED,在计数寄存器TCNT1H=0X85、TCNT1L=0XED(注:编程时先写高位,再写低位;而执行程序是先读低位再高位)。中断寄存器设置:TIMSK|=BIT(2)即其第二位置1;SREG|=BIT(7)。
TCCR1B=0X04;
TCNT1H=0X85;
TCNT1L=0XED;
TIMSK|=BIT(2);
SREG|=BIT(7);
l CTC模式(利用PD4、PD5的第二功能)
用于输出50%占空比的方波信号
用于产生准确的连续定时信号
编程方法:定义CTC模式,选择WGM13:12:11:10 模式选择位,上限值可固定可定义,如定义OCR1A。
在TCCR1A选择比较输出模式COM1A1:0=0:1 (确定是CTC)比较匹配是电平取反,输出50%占空比。
频率由以下公式确定:变量N 代表预分频因子(1、8、32,64、256,1024)
,从输出多少HZ方波来确定上限值OCR1A 。 void main() //此程序是编输出2000HZ的方波
{ DDRD|=0X30;
TCCR1A=0X50;// COM1A1:0=1
TCCR1B=0X09;
OCR1A=1999; }
l 快速PWM模式(利用PD4、PD5的第二功能)
其作用跟CTC模式差不多,选择WGM13:12:11:10 模式选择位,只是其可以改变PWM信号占空比,(注:COMnx1:0=2或3已定) 计算公式:fPWM=fclk_IO/(N*(1+TOP)) 变量N 代表预分频因子(1、8、32,64、256,1024) TOP可固定,可由OCR1A定值,占空比由OCR1B定(注:因为OCR1A被保存数据就不能由它来实现PWM信号,由OCR1B实现)
void main()//PD4PD4输出高电平持续2MS,PD5输出占空比为50%,因为其COMnx1:0=1。
{ DDRD|=0X30;
TCCR1A=0X63;
TCCR1B=0X1B;
OCR1A=1249;//产生10MS的PWM信号,保存上限值,但不能输出PWM信号
OCR1B=250; //占空比为20%,既PD4输出高电平持续2MS。
}
l 相位修正PWM模式
其作用跟PWM模式差不多,选择WGM13:12:11:10 模式选择位。
l 输入捕获模式
T/C 的输入捕捉单元可用来捕获外部事件,并为其赋予时间标记以说明此时间的发生时刻。
外部事件发生的触发信号由引脚ICP1 输入,也可通过模拟比较器单元来实现。
时间标记可用来计算频率、占空比及信号的其它特征,以及为事件创建日志。
文章评论(0条评论)
登录后参与讨论