「MSP430G2553 - クロック」の版間の差分

ナビゲーションに移動 検索に移動
400行目: 400行目:
* MCLK = 8[MHz] (DIVM_1), SMCLK = 2[MHz] (DIVS_2)
* MCLK = 8[MHz] (DIVM_1), SMCLK = 2[MHz] (DIVS_2)
* MCLK = 8[MHz] (DIVM_1), SMCLK = 1[MHz] (DIVS_3)
* MCLK = 8[MHz] (DIVM_1), SMCLK = 1[MHz] (DIVS_3)
<br>
以下の例では、DCOの周波数を16[MHz]、MCLKを8[MHz]、SMCLKを4[MHz]に設定している。<br>
<br>
<code>BCSCTL2 |= SELM_0 | DIVM_1 | DIVS_2;</code>により、<code>DIVM</code>ビットを<code>1</code>に設定してMCLKの分周比を2、<code>DIVS</code>ビットを2に設定してSMCLKの分周比を4にしている。<br>
これにより、DCOの周波数 (16[MHz]) がMCLKに2分周されて8[MHz]、SMCLKに4分周されて4[MHz]が供給される。<br>
<syntaxhighlight lang="c">
#include <msp430.h>
int main(void)
{
    WDTCTL = WDTPW | WDTHOLD;  // ウォッチドッグタイマの停止
    // 外部の水晶発振子のピン設定
    P2SEL |= BIT6 + BIT7;      // P2.6 - P2.7 : 水晶発振子のピン
    // クロックの設定
    BCSCTL1 |= DIVA_0;          // ACLK = LFXT1 / 1
    BCSCTL3 |= LFXT1S_0;        // LFXT1 = 32.768[kHz]
    __delay_cycles(50000);      // 水晶発振子が安定するまで待機
    // FLLの設定
    BCSCTL2 |= SELM_0 | DIVM_1 | DIVS_2;  // MCLK = DCO / 2, SMCLK = DCO / 4
    BCSCTL1 |= CALBC1_16MHZ;              // DCO周波数レンジの設定
    DCOCTL  = CALDCO_16MHZ;              // DCO校正値の設定
    while(1) {
        // ...略
    }
}
</syntaxhighlight>
<br><br>
<br><br>


案内メニュー