主题中讨论的其他器件:DRV8955
工具与软件:
您好!
我会尽力解释我的最终目标、但我可能无法正确解释、因此请耐心等待。
我将尝试使用 MSP430上的一个奇异引脚、生成"延迟"PWM 信号、其中信号开始处于高电平(3.3V)并持续4ms、然后开始根据我所需的频率和占空比产生脉冲。 这将基于来自外部源的 GPIO 输入生成。
我的方法是:
1)设置计时器 B (对应于 P4.3)
-在向上(MC_1)模式下设置 CCR0和 CCR3
-通过与 CCIE 或操作比较/控制寄存器来初始化它们的中断
-初始化相应的引脚到 GPIO 引脚
2)设置计时器 A (仅使用此计时器计数到4ms)
-设置 CCR0以保持值32000、@8MHz DCOCLK 这应该等于4ms
-按照与 Timer B 相同的方式初始化中断
3)设置所有相应的 GPIO、在本例中、我使用的是 P6.5 (是的、我知道、我应该已经将这个信号路由到 P1或 P2、以便我可以使用硬件中断、但我是通过软件轮询来实现的、这可能是我无法使其正常工作的问题)
-将 P6.5初始化为下拉的 GPIO 输入
4)在我的 main 中、使用 while (1)创建一个无限循环、
if (TRIGGER_INPUT)->使用 P4OUT |= BIT3将 P4.3设置为高电平->激活计时器 A ->在计时器 A IRQ 中、使用 P4SEL |= BIT3将 P4.3设置为 PWM 引脚->激活计时器 B ->在 TB 中激活 CCR0和 CCR3的 IRQ 之间触发器。
这似乎不起作用,或者,更确切地说,它似乎"有时"起作用。
让我们简单介绍一下:我将尝试使用此 PWM 信号作为 DRV8955的输入、DRV8955是一款电机驱动芯片、具有4个 PWM 输入和4个 PWM 输出。 出于某种原因、在输出上实际 PWM 之前、我似乎看不到带有"延迟"的初始 GPIO 脉冲。 此外-无论出于何种原因、我的初始延迟仅为1.5ms 而不是4ms、我不清楚原因。 下面是将时钟设置为8MHz 的代码:
DCOCTL = CALDCO_8MHZ;//更改 DCO = MCLK = 8 MHz
BCSCTL1 = CALBC1_8MHZ | XTS;//基本时钟系统控制寄存器
任何有关如何正确执行此操作的见解都很棒! 我可以张贴我的整个代码以及去任何细微差别,但我不想使这篇文章太多的一篇文章。
提前感谢您、这一直是我目前处理的一个问题、已有近两个星期、没有任何希望。
我所需的波形如下所示: