一個脈寬調變(Pulse-width Modulation, PWM)訊號可控制一顆 DC motor 轉速,或決定一具 servomotor 的方向、位置或轉速。在複雜的機器人身上,常用上好幾顆馬達,因而能以一顆微控制器(microcontroller, uC)產生多組 PWM 訊號是非常實用的。 前陣子在 RobotFun.net 論壇看到一群機器人愛好者討論自製串列伺服控制器(serial servo controller, SSC)的討論。後來又在 CSZone 的 Robotics 版跟 happosai 及 MasterChang 討論了「以 uC 產生多組 PWM 訊號」的方法。這次就對這個議題作個整理: Busy Waiting 我們先來看個最直接的作法: <!--Code List 1--> 1: // List 1. PWM loop