นี่คือรหัสที่ฉันใช้ ฉันพยายามที่จะดูว่าจะมีอะไรเปลี่ยนแปลงเมื่อฉันเปลี่ยนการตั้งค่า
pwmSetClock (1); -> 2.342kHz
pwmSetClock (2); -> 4.81MHz
pwmSetClock (3) -> 3.19MHz
pwmSetClock (4); -> 2.398MHz
pwmSetClock (5) -> 1.919MHz
pwmSetClock (6); -> 1.6MHz
pwmSetClock (7); -> 1.3MHz
pwmSetClock (8); -> 1.2MHz
pwmSetClock (9); -> 1.067MHz
pwmSetClock (10); -> 959kHz
pwmSetClock (11); -> 871kHz
pwmSetClock (20); -> 480kHz
pwmSetClock (200); -> 48kHz
pwmSetClock (500); -> 19kHz
pwmSetClock (1000) -> 9.59kHz
pwmSetClock (2000); -> 4.802kHz
pwmSetClock (4000); -> 2.401kHz
pwmSetClock (5000); -> 10.58kHz
จากสิ่งที่ฉันได้ทดสอบดูเหมือนว่าตัวหารจะมีค่าตั้งแต่ 2 ถึงบางส่วนน้อยกว่า 5000 ฉันเดาว่ามันมีบางอย่างที่เกี่ยวข้องกับการแทนเลขฐานสองของตัวเลขเหล่านั้นซึ่งตั้งค่าโดยตรงในการลงทะเบียน เมื่อตัวเลขที่เป็นตัวแทนของไบนารี่มีบิตมากกว่ารีจิสเตอร์ก็สามารถรับได้เพียงบิตแรกและตีความตัวเลขด้วยวิธีนั้น นั่นเป็นสาเหตุที่พฤติกรรมแปลก ๆ เกิดขึ้นเมื่อคุณเปลี่ยนจาก 4,000 เป็น 5,000
pwmWrite()
มันผันแปรไปขึ้นอยู่กับการตั้งค่าความกว้างในการเต้นของชีพจร ไม่ใช่สิ่งที่ฉันคาดว่าจะเกิดขึ้น