13,005
回編集
80行目: | 80行目: | ||
<math>\mbox{ PWM 周 期 } = (\mbox{TA0CCR0} + 1) \times 8 = 20000 \times 8 = 160000</math><br> | <math>\mbox{ PWM 周 期 } = (\mbox{TA0CCR0} + 1) \times 8 = 20000 \times 8 = 160000</math><br> | ||
<br> | <br> | ||
<math>\mbox{ PWM 周 波 数 } = \frac{\mbox{ ク ロ ッ ク 周 波 数 }}{\mbox{ PWM 周 期 }} = \frac{ | <math>\mbox{ PWM 周 波 数 } = \frac{\mbox{ ク ロ ッ ク 周 波 数 }}{\mbox{ PWM 周 期 }} = \frac{16 \mbox{[MHz]}}{160000} = 1 \mbox{[kHz]}</math><br> | ||
<br> | <br> | ||
<math>\mbox{ デ ュ ー テ ィ 比 } = \frac{\mbox{TA0CCR1}}{\big( \mbox{TA0CCR0} + 1 \big)} = \frac{ | <math>\mbox{ デ ュ ー テ ィ 比 } = \frac{\mbox{TA0CCR1}}{\big( \mbox{TA0CCR0} + 1 \big)} = \frac{16000}{160000} = 0.1 = 10 [%]</math><br> | ||
<br> | <br> | ||
このように、クロックが16[MHz]の場合は、分周器を使用してクロックを分周して、適切なTA0CCR0とTA0CCR1の値を設定することにより、目的のPWM周期とデューティ比を達成することができる。<br> | |||
<br> | |||
また、上記のサンプルコードでは、、タイマA0のクロックソースとしてSMCLK (Sub-Main Clock) を選択している。<br> | |||
SMCLKは、DCOを分周して生成されるクロックであり、タイマや周辺機器のクロックとして使用されるクロックである。<br> | |||
<syntaxhighlight lang="c"> | |||
TA0CTL = TASSEL_2 | MC_1 | ID_0; // SMCLK (1MHz), アップモード, 分周なし | |||
</syntaxhighlight> | |||
<br> | |||
ここで、TASSEL_2レジスタはクロックソース選択ビットであり、以下のように定義されている。<br> | |||
* TASSEL_0 | |||
*: TAxCLK (外部クロック) | |||
* TASSEL_1 | |||
*: ACLK (補助クロック、32.768[kHz]) | |||
* TASSEL_2 | |||
*: SMCLK (サブメインクロック、DCOを分周) | |||
* TASSEL_3 | |||
*: INCLK (外部クロック) | |||
<br> | |||
一方、MCLK (Main Clock) は、CPUやその他の一部の周辺機器のクロックとして使用される。<br> | |||
MCLKは、DCOを直接使用する、または、DCOを分周して生成される。<br> | |||
<br> | |||
デフォルトではDCOが1.1[MHz]に設定されており、SMCLKとMCLKはこの周波数で動作する。<br> | |||
ただし、DCOの周波数を変更することにより、SMCLKとMCLKの周波数を変更することができる。<br> | |||
<br><br> | <br><br> | ||