- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
相关寄存器 Bit 7 – I: 全局中断使能(总开关) I 置位时使能全局中断。单独的中断使能由其他独立的控制寄存器控制。如果I 清零,则不论单独中断标志置位与否,都不会产生中断。 SREG(状态寄存器) 相关寄存器 TIMSK(定时器中断屏蔽寄存器)(分开关) Bit 5 – TICIE1: T/C1 输入捕捉中断使能 Bit 4 – OCIE1A:T/C1 输出比较 A 匹配中断使能 Bit 3 – OCIE1B:T/C1 输出比较 B 匹配中断使能 Bit 2 – TOIE1:T/C1 溢出中断使能 相关寄存器 TIFR(定时器中断标志寄存器) Bit 5 – ICF1: T/C1 输入捕捉标志 Bit 4 – OCF1A: T/C1 输出比较 A 匹配标志 当TCNT1 与OCR1A 匹配成功时,该位被设为1”。 Bit 3 – OCF1B: T/C1 输出比较 B 匹配标志 Bit 2 – TOV1: T/C1 溢出标志 相关寄存器 TCCR1A(T/C1控制寄存器A) TCCR1B(T/C1控制寄存器B) TCCR1C(T/C1控制寄存器C) TCCR1A(T/C1控制寄存器A) TCCR1B(T/C1控制寄存器B) TCCR1C(T/C1控制寄存器C) ? Bit 7 – FOCnA: 强制输出比较通道A ? Bit 6 – FOCnB: 强制输出比较通道B ? Bit 5 – FOCnC: 强制输出比较通道C 相关寄存器(5个16位) TCNT1(TCNT1H、TCNT1L) (16位的T/C1定时数据寄存器) OCR1A(OCR1AH、OCR1AL) (16位的T/C1双缓冲输出比较寄存器A) OCR1B(OCR1BH、OCR1BL) (16位的T/C1双缓冲输出比较寄存器B) OCR1C(OCR1CH、OCR1CL) (16位的T/C1双缓冲输出比较寄存器C) ICR1(ICR1H、ICR1L)(16位的T/C1输入捕获寄存器) 自己动手之二——改变电机转速 Q:如何改变转速? A:通过串口改变OCR1A的值,从而改变PWM占空比。 通过串口由PC机改变OCR1A的值,从而改变直流电机的转速! 单极性方式 输入端In1为PWM信号,输入端In2为低电平,电动机正转;输入端In2为PWM信号,输入端In1为低电平,电动机反转。 占空比为0%时制动,为100%时达到最高速; 当EnA为低电平时,驱动桥路上的4个晶体管全部截止,使正在运行的电动机电枢电流反向,电动机自由停止。 但是,控制板的使能端通过按键开关接电源——用急停方式 双极性方式 In1输入正反控制信号, In2和In1反相。假如In1为高电平时电机正转,那么低电平时就是反转。 通过单片机使In1和In2产生反向的PWM信号,控制电机的转速。 当占空比为50%的时候,电机制动;大于50%时,电机向一个方向转动;小于50%的时候,向另外一个方向转动。且电机的转速基本上和(占空比-50%)成一定比例关系。 ICCAVR中如何设置T/C1 采用普通方式。 电机采用单极性方式驱动 定时/计数器1的初始化举例 void timer1_init(void) { TCCR1B = 0x00; //stop TCNT1H = 0x00; //setup TCNT1L = 0x00; OCR1AH = 0x02; OCR1AL = 0x27; OCR1BH = 0x02; OCR1BL = 0x27; OCR1CH = 0x02; OCR1CL = 0x27; ICR1H = 0x02; // 20kHz ICR1L = 0x27; TCCR1A = 0x02; // OCR1A未连接,做普通端口操作 TCCR1B = 0x19; // start Timer } ( 0227 )H=( 551 )D 定时/计数器1的比较匹配中断 #pragma interrupt_handler timer1_compa_isr:iv_TIM1_COMPA void timer1_compa_isr(void) { //compare occured TCNT1=OCR1A DC_Stop(); } 定时/计数器1的溢出中断处理 #pragma interrupt_handler timer1_ovf_isr:iv_TIM1_OVF void timer1_ovf_isr(void) { //TIMER1 has overflowed TCNT1H = 0x00; //reload counter high value TCNT1L = 0x00; //reload counter low
文档评论(0)