大家好,我是 在本视频中,让我们 定时器来生成脉宽调制输出。 如果您还记得,定时器 我们将在码盘实验中把它用作输入, 来测量频率或周期。 这将让我们了解轮子的 在本实验中,我们要把它 来调节电机的功率。 定时器的另一个用途是 产生周期性中断, 在本视频中,我们将重点关注 PWM 我们用 选择一个周期 选择一个周期 这个周期小于电机的时间常数。 这个周期小于电机的时间常数。 这样一来,电机会对平均值作出响应, 而不是对瞬时的高电平和低电平作出响应。 但是,我们要调节的是占空比, 也就是它处于高电平的时间百分比。 因此,如果我们要 我们将需要很大的占空比。 您可以看到,这里的 再说一次,我们将 如果我们需要更小的功率, 同时保持周期不变。 如果我们需要更小 这是一个输出,因此我们 这是一个输出,因此我们 也就是调节范围是多大? 占空比的范围是 占空比的范围是 但有趣的是一个称为精度的概念。 换句话说,我可以产生 换句话说,我可以产生 那么,我的系统中有 因为它是一个 因此实际上有大量的 理论上高达 实际上,不会有这么多。 但我们还是可以获得大量不同的占空比, 我一会儿将向您展示具体是多少。 总之,我们在这里的 脉宽调制输出来驱动电机。 这是对模块 这里是我们的电机 左侧电机,还有右侧电机。 电机由镍氢电池供电。 电机由镍氢电池供电。 那么,驱动器芯片,也就是这里的 那么,驱动器芯片,也就是这里的 可以驱动电流向下或向上流动, 我们可以让电流同时向上或向下流动, 或者一个向上、一个向下, 可以采用任一方式。 现在,端口 在这里看到,端口 在这里看到,端口 我们需要向前或向后移动? 端口 如果我想进入低功耗睡眠模式的话。 但本视频重点关注的是端口 因为这里将产生脉宽调制输出, 通过它们可以独立驱动左侧和右侧电机。 通过它们可以独立驱动左侧和右侧电机。 这样,我可以为每个电机提供不同功率。 该功能的实现代码是在本课程的 配套例程包中,在其中您可以找到 在 您在实验中的任务是进行代码移植, 将该功能从 以及从 我们可以使用连接到电机的引脚来控制电机。 我们可以使用连接到电机的引脚来控制电机。 好,本幻灯片中需要注意的另一件事是 注意一下所有这些引脚,好吗? 请记住,本课程是关于输入/输出的, 处理器中有大量的输入/输出引脚。 本幻灯片,我要说的第二件事是 MSP432 有四个定时器子模块, 每个定时器子模块可以连接 多至五个输入/输出引脚, 多至五个输入/输出引脚, 可以通过各种方式与定时器相关联。 以各种方式与定时器相关联。 在本示例中, 将生成两个 但您可以看到这个处理器能产生的 远远大于两个。 好的,那么正如我说过的,这里的 在定时器内, 周期通过该 这是该定时器模块中的常量寄存器之一。 那么,我们把该寄存器设置为固定的周期, 接下来我们将调节子模块中的另一个常量, 接下来我们将调节子模块中的另一个常量, 接下来我们将调节子模块中的另一个常量, 那么,这两个常量的比值就是占空比。 通过这种方法,我们可以生成 在一个定时器中, 我们可以生成多达四个 他们具有相同的频率,以及不同的占空比。 好的,这里的示波器波形展示了 波形的周期 再看另一个波形的下降沿到下降沿 该示例中的两个波形周期是相等的。 一个周期在那里,一个周期在这里。 不同的是占空比。 这个占空比大,这个占空比小。 好的,让我们向您展示它是怎么工作的。 我们将在两个单独的引脚上生成 我们将在两个单独的引脚上生成 我将仅为您展示图中的这个。 我将使用的定时器模式称为 这意味着计数器将先向上计数, 然后再向下计数。 我将从 因此我将获取一个 这是系统模块时钟。 然后,我将选择一个预分频值。 就像产生周期性中断时一样, 我可以调节预分频, 我也可以减小预分频, 我将选择预分频 该比率意味着,我的计数器实际上 该比率意味着,我的计数器实际上 该比率意味着,我的计数器实际上 将以 那么,这就是它进行计时的方式。 从根本上说,我要做的是 从这里设置 这个常量值将用于设置周期。 因此,这将确定我的 因此,这将确定我的 正如您知道的,该周期将是一个常数。 如果我想设置一个 该周期小于电机的时间常数, 但仍足够快,使我们有大量的 空间来处理其它任务 我将在这里选择一个计数器值 来设置该周期。 我一会儿将展示它如何实现。 向上/向下计数模式,顾名思义 在电机接口上, 我们将有一个大得多的计数器值, 但在本幻灯片中, 为了让您能看到所有计数器值, 我选择了一个很小的数字 我选择了一个很小的数字 它工作的方式是, 10,9,8,7,6,5,4,3, 然后它继续计数 1,2,3,4,5,6,7, 9,8,7,6,5,4,3, 因此,向上/向下意味着 然后再向下计数,然后再向上, 然后再向下... 你可以看到,如果将波形的周期 与该计数机制相关联, 每个周期将消耗 您可以看到,这里不是 而只是 10 -- -- 预分频 我将选择这里的常量, 从而使该周期值为 好的,那么现在我已经使时钟运行起来。 我的子模块 然后其他子模块 子模块 可用于生成脉宽调制输出。 我要向您展示其中的两个 一个在子模块 一个在子模块 我要采用的方法是, 使用定时器的 它将做的是,它将重置引脚 P4.2 计数器值与 但它在向上计数和向下计数时 但它在向上计数和向下计数时 在向上计数时,它将让引脚清零, 然后,当定时器在向下计数 它将让引脚置 好的,我在这里再次 该 在该简单的例子中,它是 它将是我的占空比。 那么,这将是的占空比。 那么,再说一次, 如果我向上计数, 当它与 但在进行向下计数时, 它将切换 在本例中,也就是将输出置 那么,再说一次,在向上 在向下计数时, 因此,通过这种方法, 占空比被设置为 占空比被设置为 占空比被设置为 那么,如果我想调节占空比, 比如说我想从70% 我可以把 我可以把 现在将发生的是, 它将被置 再次与 再次与 再次与 我所做的是,我在这里 更改为 由于这些是整型常量, 因此您能够看到我可以 0、1、2、3、4、5、 现在,事实证明 但我可以选择这些中的任何一个。 那么您可以看到精度, 也就是不同占空比的数量 由 占空比的数量由我存储在 CCR0 这就是精度。 好,那么这里是实际的代码。 这段代码将在 您需要把它移植到到 好的,那么我们将通过函数传递占空比。 我将使用系统模块时钟(SMCLK), 它的频率是总线时钟除以 然后,我将在这里使用预分频 因此该 将小于 我为该占空比选择的周期 是这里的周期值的函数。 那么,占空比的周期 是 乘以 再乘以 这是替代函数之一。 我们已经清除了选择寄存器所在的位, 现在是时候设置它们了。 这些显然是输出引脚。 我将在 这是我的周期。 这里是 我们还将在 这两个分频一起,将为我产生周期。 我将使用的 它向上计数时会将输出引脚置 它向上计数时会将输出引脚置 向下计数时则会做相反操作。 向下计数时则会做相反操作。 占空比由这里的常量确定。 由于有两个定时器,因此 一次针对一个定时器, 一次针对子模块 在我全部完成之后, 我设置 并进行 那么,在代码里为了实现 我将把周期设置为 那么,如果我乘以 这就是我们的 乘以 把它乘以 到这里的参数。 这将为我生成 这是 我们要做的是,设置 这意味着,CCR1 这意味着,CCR1 那么,这段代码所产生 因为有 所以,精度是 因此,这是一种非常非常精密的方法 来调节输入到电机的功率。 这就是它为什么如此强大。 现在,这里是例程。 每当我想改变功率时, 我不必再次重写所有代码。 我要做的是,改变 然后改变 CCR1 可以是 这将为我提供 也就是大约 它具有 这是一种非常非常强大的方法, 帮助我们来调节输入到电机的功率。 正如我先前提到的, 该代码在端口 您的任务是把它移植到 正如您看到的,这可以通过 该模块 子模块 总而言之,PWM 我们可以使用它来调节和影响我们的世界。 在本例中,通过 我们可以调节向电机提供的功率。 我们有两个 我们将使波形的周期为常数。 我们将使用 它将在一个边沿进行重置, 这就是脉宽调制。 拿出您的示波器吧, 拿出您的逻辑分析仪, An internal server error occurred.