PWMを試すのにPIC12F683でやってみようと「pic12f683 pwm」で検索したらいい感じのページが見つかったので試してみた。
「PWM機能を使ってスピーカを鳴らす(動作確認:単音を出してみる)(PIC12F683)」
このページ、説明が細かくてわかりやすい。
回路図があったけど、LEDをチカチカさせていた回路のLEDの代わりにスピーカー(普通のスピーカーも圧電スピーカーも試した)を付けてみたら音が鳴ったので、そのまま使った。
(最初、LEDのままで動かしたら、いくらCCPR1Lの値を変化させてもLEDの明るさが肉眼で違いがわからなかった。「PWMが動いてないのか?」とオシロスコープで見たらPWMは動いているのがわかったので、とりあえずスピーカーを付けたら音が出た。)
#include <htc.h>
#ifndef _XTAL_FREQ
#define _XTAL_FREQ 4000000
#endif
__CONFIG(INTIO & WDTDIS & PWRTEN & MCLRDIS & BORDIS);
void main(void)
{
OSCCON = 0x06 << 4; // 4MHz
CMCON0 = 0x07;
GPIO = 0x00;
TRISIO = 0;
ANSEL = 0;
// PWMの設定
PR2 = 239;
CCPR1L = 119;
CCP1CON = 0x0C;
T2CON = 0x07;
TMR2 = 0;
// 無限ループ
while (1) {
}
}