完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
最近在做电机控制的项目,因为牵扯到电机的PI控制,所以想用到编码盘,但编码盘和PWM控制似乎都只能用TMR1来做,但似乎有冲突。附上程序编码盘初始化:
void tiM1_Init(void) { TIM1_CR1=0x00; //up count,interrupt not stop count TIM1_IER=0x00; TIM1_PSCRH=0x0; //PSC 10000 hz TIM1_PSCRL=0x0; TIM1_ARRH=0xFF; //这里步数从-32767—32767 TIM1_ARRL=0xFF; TIM1_CCMR1=0x01; TIM1_CCMR2=0x01; TIM1_CCER1=0x22; TIM1_SMCR=0x03; TIM1_CR1=0x01; //counter enable } PWM初始化 void PwmTIM1(void) { TIM1_EGR = 0x01;//初始化TIM1 TIM1时基初始化 TIM1_EGR |= 0x20;//重新初始化TIM1 TIM1_CR1 = 0x80;//边沿对齐,向上计数,带缓冲*************** TIM1_RCR = 0x01;//重复计数器*************************************** TIM1_PSCRH = 0; //预分频 设置PWM频率 TIM1_PSCRL = 0; TIM1_ARRH = 0x00; //设定重装载值 TIM1_ARRL = 150; TIM1_CCER1 = 0x55;//高/低电平有效(CCiP),使能PWM输出(CCiE)使能互补输出 (CCiNE),互补高/低电平有效(CCiNP) TIM1_CCMR1 = 0X6C; TIM1_CCER2 = 0x55;//高/低电平有效(CCiP),使能PWM输出(CCiE)使能互补输出 (CCiNE),互补高/低电平有效(CCiNP) TIM1_CCMR2 = 0x6C;//PWM模式1 通道2PWM输出 TIM1_CCMR3 = 0x6C;//PWM模式1 通道3PWM输出 TIM1_BKR = 0x80;//主使能 TIM1_DTR = 0x12;//插入2us死区时间 TIM1_CR1_CEN = 0x01;//计数使能 } 其中TIM1_ARRH 和TIM1_ARRL两个寄存器是重复定义的,不知道大家有其他办法么,我使用的芯片是STM8S105,望大神帮忙解答 |
|
相关推荐
1个回答
|
|
在您的电机控制项目中,您提到了编码盘和PWM控制都使用TMR1,这可能导致冲突。为了解决这个问题,您可以考虑使用其他定时器(如TMR2、TMR3等)来实现编码盘和PWM控制的功能。
首先,我们需要了解编码盘和PWM控制的基本原理: 1. 编码盘:编码盘是一种用于测量电机转速和位置的传感器。它通常有两个输出信号,A相和B相,这两个信号是相位相差90度的方波。通过读取这两个信号的变化,可以计算出电机的转速和位置。 2. PWM控制:脉宽调制(PWM)是一种用于控制电机速度和方向的常用方法。通过调整PWM信号的占空比,可以控制电机的电压和电流,从而实现对电机速度的控制。 为了解决TMR1的冲突问题,您可以尝试以下步骤: 1. 使用另一个定时器(如TMR2)来实现编码盘的功能。您需要配置TMR2的输入捕获模式,以便读取A相和B相的信号变化。同时,您需要编写中断服务程序来处理这些信号变化,并计算电机的转速和位置。 2. 使用TMR1来实现PWM控制。您需要配置TMR1的输出比较模式,以便生成PWM信号。同时,您需要根据PI控制算法调整PWM信号的占空比,以实现对电机速度的控制。 3. 如果您的微控制器支持多个PWM输出通道,您还可以考虑使用不同的通道来实现编码盘和PWM控制的功能。这样,您可以避免使用同一个定时器,从而减少冲突的可能性。 4. 如果您的项目对实时性能要求较高,您还可以考虑使用外部硬件(如FPGA或专用电机控制芯片)来实现编码盘和PWM控制的功能。这样可以减轻微控制器的负担,提高系统的稳定性和实时性能。 总之,解决编码盘和PWM控制的冲突问题需要对您的项目进行一定的调整。您可以尝试使用不同的定时器或PWM输出通道,或者考虑使用外部硬件来实现这些功能。希望这些建议对您有所帮助! |
|
|
|
只有小组成员才能发言,加入小组>>
调试STM32H750的FMC总线读写PSRAM遇到的问题求解?
1678 浏览 1 评论
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
1580 浏览 1 评论
1012 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
703 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
1626 浏览 2 评论
1892浏览 9评论
STM32仿真器是选择ST-LINK还是选择J-LINK?各有什么优势啊?
674浏览 4评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
537浏览 3评论
556浏览 3评论
stm32cubemx生成mdk-arm v4项目文件无法打开是什么原因导致的?
524浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-3 08:35 , Processed in 1.317905 second(s), Total 82, Slave 65 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号