王昱顺 发表于 2024-10-9 10:17:50

huatlwangl 发表于 2024-10-9 10:08
感觉这一部分有点问题,为什么if执行不了呢
if(P_CNT < 1)
                                {


你这部分中,PCNT只有第一次等于0的时候进入了一次。
然后就一直卡在下面这个>=1的判断里面循环了,你加在这里肯定是不对的。
你这个逻辑也比较混乱,看不出来你的这些标志位是要干什么的

huatlwangl 发表于 2024-10-9 11:51:23

王昱顺 发表于 2024-10-9 10:17
你这部分中,PCNT只有第一次等于0的时候进入了一次。
然后就一直卡在下面这个>=1的判断里面循环了,你加 ...

因为只需要他转一圈,执行一次,到达一圈角度后,即使再按着也不会转动,所以加了这些

王昱顺 发表于 2024-10-9 12:04:36

huatlwangl 发表于 2024-10-9 11:51
因为只需要他转一圈,执行一次,到达一圈角度后,即使再按着也不会转动,所以加了这些 ...

那你的停止不应该加在这里,应该找一个90°达到的标志,然后给关上

huatlwangl 发表于 2024-10-9 14:16:50

王昱顺 发表于 2024-10-9 12:04
那你的停止不应该加在这里,应该找一个90°达到的标志,然后给关上

问题就在这里?怎么知道90°到达了呢

王昱顺 发表于 2024-10-9 16:17:01

huatlwangl 发表于 2024-10-9 14:16
问题就在这里?怎么知道90°到达了呢



定时器内有对M1_PulseCnt的自减处理。所以,在设定好脉冲数量后,判断M1_PulseCnt是否为0就可以得知此次运行是否完成
你可以将大约在程序696行附近的如图程序段替换为以下程序
if (M1_PulseCnt != 0) // 总脉冲数非0减1
      {
            if (--M1_PulseCnt == 0)
            {
                B_M1_RunEn = 0;
                PWMA_ENO = 0x00;//关闭输出
            }   
      }

huatlwangl 发表于 2024-10-10 09:10:21

王昱顺 发表于 2024-10-9 16:17
定时器内有对M1_PulseCnt的自减处理。所以,在设定好脉冲数量后,判断M1_PulseCnt是否为0就可以得知此 ...

但是加了这个后,到达90度的确停了,但是我释放按键后,他也不动了,也不回零了

王昱顺 发表于 2024-10-10 09:28:39

huatlwangl 发表于 2024-10-10 09:10
但是加了这个后,到达90度的确停了,但是我释放按键后,他也不动了,也不回零了
...



那你可以尝试再将RunMotor1()中的这四条被注释掉的语句解开
以便在下次启动的时候恢复输出

huatlwangl 发表于 2024-10-10 10:04:34

王昱顺 发表于 2024-10-10 09:28
那你可以尝试再将RunMotor1()中的这四条被注释掉的语句解开
以便在下次启动的时候恢复输出
...

尝试这四句打开后,还是和之前一样到达后仍然会缓慢转动

huatlwangl 发表于 2024-10-10 11:57:41

王昱顺 发表于 2024-10-10 09:28
那你可以尝试再将RunMotor1()中的这四条被注释掉的语句解开
以便在下次启动的时候恢复输出
...

这是加了这四句的效果,不停了,按键释放后,的确是只转动了一圈。

huatlwangl 发表于 2024-10-11 15:46:18

王昱顺 发表于 2024-10-10 09:28
那你可以尝试再将RunMotor1()中的这四条被注释掉的语句解开
以便在下次启动的时候恢复输出
...

您好,但是我按下后,为什么到了90度还会继续转动呢
页: 1 2 [3] 4
查看完整版本: 请教下,这个8H系列MCU 中两项细分程序