Answers:
伺服库不使用PWM。当您调用write()时,它将以微秒为单位计算脉冲宽度,并将其存储在全局数组中。然后是一个计时器,该计时器定期触发一个中断,该中断会根据每个通道的所需脉冲宽度来更改输出信号。
您可以在下面找到源代码: Github链接
6个PWM引脚使用ATmega328P上的内置UART产生输出。这使得脉冲非常快,以获得更高质量的“模拟”输出。由于伺服器的通讯速度足够慢,因此可以使用软件中断来驱动它们。软件中断会远离您正在执行的代码,而会运行伺服库中包含的代码。该代码使用标准方法来更改引脚的状态。通过使用中断而不是使用UART来进行操作,您浪费了一些处理时间,但获得了驱动更多伺服器的能力。