再封装一下,加上原点回归搜索,就可以做简易运动控制器了
请教大佬,两轴插补时如何代入应用?
stc8系列可以移植吗
感谢大佬分享,先收藏了。回头焊个板子试试。感觉控制伺服加速时间可以短一些。再搞个基底速度,S曲线就完美了。
666,我都是直接怼,没加缓启动和缓停止{:4_167:}
可以同时控制4个电机运动吗?
void PWMB_Init(void)
{
PWMB_PSCRH = (u8)(1 >> 8); //配置预分频系数
PWMB_PSCRL = (u8)(1 );
PWMB_CCER1 = 0x00; //写 CCMRx 前必须先清零 CCxE 关闭通道
PWMB_CCER2 = 0x00;
PWMB_CCMR1 = 0x68; //通道模式配置 pwm模式1
PWMB_CCER1 = 0x01; //配置通道1输出使能和极性
PWMB_ARRH = (u8)((2000-1) >> 8); //设置周期时间
PWMB_ARRL = (u8)(2000-1);
PWMB_ENO = 0x00;
PWMB_ENO = ENO5P; //使能输出
PWMB_PS = 0x00; //高级 PWM 通道输出脚选择位
PWMB_PS |= PWM5_0; //选择 PWM1_0 通道
PWMB_IER |= (1<<2); //使能更新中断
PWMB_BKR = 0x80; //使能主输出
PWMB_CCR5H = 0; //设置周期时间
PWMB_CCR5L = 0;
PWMB_SR1 = 0;
PWMB_CR1 = 0x80;
PWMB_CR1 = 0x00;
PWMB_ENO = 0x00;
PWM1 = 1;
DIR1 = 1;
Variable_Init();
}
void Pluse_start()
{
StartSave=Current;
LadderOrderNum=0;//加减速级数序号为0
PWMB_PSCRH = (u8)((LadderPSC) >> 8); //配置预分频系数
PWMB_PSCRL = (u8)((LadderPSC) );
PWMB_ARRH = (u8)(LadderARR >> 8); //配置预分频系数
PWMB_ARRL = (u8)(LadderARR );
PWMB_CCR5H = (u8)((LadderARR/2) >> 8); //配置预分频系数
PWMB_CCR5L = (u8)((LadderARR/2) );
delay_ms(2);
PWMB_ENO = ENO5P; //启动计数器
PWMB_CR1 = 0x80;
PWMB_CR1 |= 0x01;
PWMB_SR1 = 0;
RunFlag=ON; //脉冲输出定位指令执行标志置ON
}
//========================================================================
// 函数: PWMA_ISR中断服务函数
// 描述: 0C1的更新中断重载OC2和OC3的初始比较值(准备置位),0C2和0C3的比较中断,准备翻转电平
// 参数: 无.
// 返回: 无.
// 版本: V1.0, 2022-9-30
//========================================================================
void PWMB_ISR() interrupt 27
{
long temp;
if(PWMB_SR1 & 0x04)
{
PWMB_SR1 &= (~0x04);
这个配置 是不是与中断 检测对不上 不是通道5吗 在这里怎么是通道6了没有看明白
lichaoming 发表于 2025-4-16 17:09
再封装一下,加上原点回归搜索,就可以做简易运动控制器了
https://www.stcaimcu.com/thread-22154-1-1.html
我封装了一个库,可以测试看看,无用关心任何底层,速度模式,点位模式,回零都支持
xiangzichen 发表于 2026-1-15 10:57
https://www.stcaimcu.com/thread-22154-1-1.html
我封装了一个库,可以测试看看,无用关心任何底层,速度模 ...
感谢楼主分享