发新帖我要提问
123
返回列表
打印

GD芯片带多路步进电机工作不正常,请高手们指点一下

[复制链接]
楼主: gdszzyq
手机看帖
扫描二维码
随时随地手机跟帖
41
xdqfc| | 2022-4-19 09:08 | 只看该作者 回帖奖励 |倒序浏览
gdszzyq 发表于 2022-4-18 16:06
主程序查询中断标志肯定来不及的,几路一起产生中断请求的概率非常低,就算出现了7路一起产生中断请求,对 ...

就是这个意思,你可以试试看,改一下程序试试,也花不了多少时间。

使用特权

评论回复
42
gdszzyq|  楼主 | 2022-4-19 10:04 | 只看该作者
zeshoufx 发表于 2022-4-18 22:12
你这个函数明显是错的啊,,,你使能的是CCX通道,,极性却是配置CCXN通道的,,,
把这句
timer_ocintpara ...

为了方便使用,我没有使用默认的端口产生PWM信号,只是利用中断,在中断里控制其它端口产生PWM信号

使用特权

评论回复
43
gdszzyq|  楼主 | 2022-4-19 10:10 | 只看该作者
xdqfc 发表于 2022-4-19 09:08
就是这个意思,你可以试试看,改一下程序试试,也花不了多少时间。

请问这种情况如何避免?主程序不太可能做这种判断,而且也来不及,唯有一个定时器输出一路PWM才能避免那种丢失中断请求的可能。

使用特权

评论回复
44
xdqfc| | 2022-4-19 10:46 | 只看该作者
本帖最后由 xdqfc 于 2022-4-19 10:50 编辑

主程序一个循环才多长时间啊,不够查询吗,不会是ms级别吧。这种方式起码是不会漏掉的,除非慢的出奇。尝试一下又何妨。还没有尝试就先否决,这不是解决问题的态度。

使用特权

评论回复
45
gdszzyq|  楼主 | 2022-4-19 11:29 | 只看该作者
本帖最后由 gdszzyq 于 2022-4-19 11:33 编辑
xdqfc 发表于 2022-4-19 10:46
主程序一个循环才多长时间啊,不够查询吗,不会是ms级别吧。这种方式起码是不会漏掉的,除非慢的出奇。尝试 ...

主程序循环周期是1毫秒,我定死的,顺便作程序中需要的定时时标,我现在是希望找出是别的原因,如果真是因为这样会丢失中断请求那我只能放弃用GD芯片,因为这样改动太大了,我的程序比较多,还要考虑兼容性。

使用特权

评论回复
46
xdqfc| | 2022-4-19 11:41 | 只看该作者
gdszzyq 发表于 2022-4-19 11:29
主程序循环周期是1毫秒,我定死的,顺便作程序中需要的定时时标,我现在是希望找出是别的原因,如果真是因 ...

还真是ms级的呢。

使用特权

评论回复
47
tonb| | 2022-4-19 12:12 | 只看该作者
gdszzyq 发表于 2022-4-19 11:29
主程序循环周期是1毫秒,我定死的,顺便作程序中需要的定时时标,我现在是希望找出是别的原因,如果真是因 ...

看工程中配置的是108M,需要在system_gd32c10x.c文件中屏蔽掉#define __SYSTEM_CLOCK_108M_PLL_HXTAL,打开#define __SYSTEM_CLOCK_72M_PLL_HXTAL。定时器中配置的分频值还是按72M时钟计算的,定时周期应该和你预想的是不一样的。

使用特权

评论回复
48
gdszzyq|  楼主 | 2022-4-19 12:32 | 只看该作者
tonb 发表于 2022-4-19 12:12
看工程中配置的是108M,需要在system_gd32c10x.c文件中屏蔽掉#define __SYSTEM_CLOCK_108M_PLL_HXTAL,打 ...

我在预处理那里定义__SYSTEM_CLOCK_72M_PLL_HXTAL,#elif defined (__SYSTEM_CLOCK_72M_PLL_HXTAL)
    system_clock_72m_hxtal();所以是72M时钟,而且我也测试是准的。

使用特权

评论回复
49
tonb| | 2022-4-19 14:32 | 只看该作者
gdszzyq 发表于 2022-4-19 12:32
我在预处理那里定义__SYSTEM_CLOCK_72M_PLL_HXTAL,#elif defined (__SYSTEM_CLOCK_72M_PLL_HXTAL)
    s ...

不好意思,没打开KEIL工程看。屏蔽掉其它中断看看,避免中断优先级的影响问题,或者系统时钟用108M试试,会不会有改善?

使用特权

评论回复
50
gdszzyq|  楼主 | 2022-4-19 16:37 | 只看该作者
tonb 发表于 2022-4-19 14:32
不好意思,没打开KEIL工程看。屏蔽掉其它中断看看,避免中断优先级的影响问题,或者系统时钟用108M试试, ...

谢谢你,目前有串口中断及3个定时中断,但产生PWM信号的定时器中断级别最高,串口是接收触摸屏数据的,不按它的话是不会发送数据的。同样的程序在ST芯片下是没任何问题的

使用特权

评论回复
51
gdszzyq|  楼主 | 2022-4-26 10:54 | 只看该作者
顶上来

使用特权

评论回复
52
xdqfc| | 2022-4-27 11:29 | 只看该作者

这里是GD32板块,咱不好说多少,前面就建议你换APM32,你不听,那咋办,为什么换APM32,咱又不好说太多,你懂的。GD32咱也用不少,有些东西跟我们理解的还真不一样。

使用特权

评论回复
53
kfhzy| | 2022-4-27 12:32 | 只看该作者
gdszzyq 发表于 2022-4-14 21:35
.如果是这样就是芯片问题,我想不至于吧,stc的我也有用,3个定时器控3路步进电机没问题,定时器有点特别 ...

我买过假的GD芯片,能烧写程序,也能执行IO操作,但内部时钟全是错的,配置的10k频率的PWM,输出只有7k左右。可以弄个管脚输出一定的波形,用示波器查查,看看时钟是否正常

使用特权

评论回复
54
tpgf| | 2022-5-4 11:03 | 只看该作者
外接的什么驱动啊

使用特权

评论回复
55
aoyi| | 2022-5-4 11:13 | 只看该作者
把加速过程拉长试试看

使用特权

评论回复
56
nawu| | 2022-5-4 11:22 | 只看该作者
会不会是负载过大了

使用特权

评论回复
57
zljiu| | 2022-5-4 11:32 | 只看该作者
是跑的系统吗

使用特权

评论回复
58
gwsan| | 2022-5-4 11:40 | 只看该作者
只运行电机那部分代码试试看

使用特权

评论回复
59
tfqi| | 2022-5-4 11:47 | 只看该作者
我还是不习惯用结构体

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则