📢 Webサイト閉鎖と移転のお知らせ
このWebサイトは2026年9月に閉鎖いたします。
新しい記事は移転先で追加しております。(旧サイトでは記事を追加しておりません)
細 文字列「__FORCETOC__」を「{{#seo: |title={{PAGENAME}} : Exploring Electronics and SUSE Linux | MochiuWiki |keywords=MochiuWiki,Mochiu,Wiki,Mochiu Wiki,Electric Circuit,Electric,pcb,Mathematics,AVR,TI,STMicro,AVR,ATmega,MSP430,STM,Arduino,Xilinx,FPGA,Verilog,HDL,PinePhone,Pine Phone,Raspberry,Raspberry Pi,C,C++,C#,Qt,Qml,MFC,Shell,Bash,Zsh,Fish,SUSE,SLE,Suse Enterprise,Suse Linux,openSUSE,open SUSE,Leap,Linux,uCLnux,電気回路,電子回路,基板,プリント基板 |description={{PAGENAME}} - 電子回路とSUSE Linuxに関する情報 | This page is {{… |
|||
| (同じ利用者による、間の2版が非表示) | |||
| 324行目: | 324行目: | ||
これにより、DCOの周波数 (16[MHz]) がそのままMCLKに供給されて、SMCLKにはDCOの周波数を2で割った8[MHz]が供給される。<br> | これにより、DCOの周波数 (16[MHz]) がそのままMCLKに供給されて、SMCLKにはDCOの周波数を2で割った8[MHz]が供給される。<br> | ||
DCOの周波数レンジと校正値を16[MHz]に設定している。<br> | DCOの周波数レンジと校正値を16[MHz]に設定している。<br> | ||
< | <syntaxhighlight lang="c"> | ||
#include <msp430.h> | #include <msp430.h> | ||
| 365行目: | 365行目: | ||
これにより、アプリケーションの要件に応じて、MCLKとSMCLKの周波数を個別に最適化することができる。<br> | これにより、アプリケーションの要件に応じて、MCLKとSMCLKの周波数を個別に最適化することができる。<br> | ||
<br> | <br> | ||
==== 他の周波数の設定 ==== | |||
==== 他の周波数の設定 / DCOの周波数が16[MHz]の場合 ==== | |||
MSP430G2553マイコンでは、DCOの周波数を分周して、SMCLKとMCLKの周波数を設定することができる。<br> | MSP430G2553マイコンでは、DCOの周波数を分周して、SMCLKとMCLKの周波数を設定することができる。<br> | ||
分周比は、BCSTCLレジスタの<code>DIVM</code>ビットおよび<code>DIVS</code>ビットを使用して制御する。<br> | 分周比は、BCSTCLレジスタの<code>DIVM</code>ビットおよび<code>DIVS</code>ビットを使用して制御する。<br> | ||
| 430行目: | 431行目: | ||
} | } | ||
</syntaxhighlight> | </syntaxhighlight> | ||
<br> | |||
==== 他の周波数の設定 / DCOの周波数が16[MHz]以外の場合 ==== | |||
MSP430G2553マイコンのDCOは、BCSCTL1レジスタ、および、DCOCTLレジスタに特定のビットを立てることにより、以下に示す周波数レンジで動作させることができる。<br> | |||
* <code>CALBC1_1MHZ</code>と<code>CALDCO_1MHZ</code> | |||
*: DCOの周波数を1[MHz]に設定 | |||
* <code>CALBC1_8MHZ</code> / <code>CALDCO_8MHZ</code> | |||
*: DCOの周波数を8[MHz]に設定 | |||
* <code>CALBC1_12MHZ</code> / <code>CALDCO_12MHZ</code> | |||
*: DCOの周波数を12[MHz]に設定 | |||
* <code>CALBC1_16MHZ</code> / <code>CALDCO_16MHZ</code> | |||
*: DCOの周波数を16[MHz]に設定 | |||
<br> | |||
DCOの周波数を変更すると、MCLKとSMCLKの分周比に応じて、それぞれの周波数が変化する。<br> | |||
<br> | |||
例えば、DCOの周波数を8[MHz]に設定した場合、以下に示すような組み合わせが可能となる。<br> | |||
* MCLK = 8[MHz] (DIVM_0), SMCLK = 8[MHz] (DIVS_0) | |||
* MCLK = 8[MHz] (DIVM_0), SMCLK = 4[MHz] (DIVS_1) | |||
* MCLK = 8[MHz] (DIVM_0), SMCLK = 2[MHz] (DIVS_2) | |||
* MCLK = 8[MHz] (DIVM_0), SMCLK = 1[MHz] (DIVS_3) | |||
* MCLK = 4[MHz] (DIVM_1), SMCLK = 4[MHz] (DIVS_0) | |||
* MCLK = 4[MHz] (DIVM_1), SMCLK = 2[MHz] (DIVS_1) | |||
* MCLK = 4[MHz] (DIVM_1), SMCLK = 1[MHz] (DIVS_2) | |||
* MCLK = 4[MHz] (DIVM_1), SMCLK = 0.5[MHz] (DIVS_3) | |||
<br> | |||
以下の例では、DCOの周波数を8[MHz]、MCLKを4[MHz]、SMCLKを2[MHz]に設定している。<br> | |||
<br> | |||
DCOの周波数を8[MHz]に設定して、MCLKとSMCLKの分周比をそれぞれ2に設定している。<br> | |||
その結果、MCLKは4[MHz]、SMCLKは2[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_1; // MCLK = DCO / 2, SMCLK = DCO / 2 | |||
BCSCTL1 |= CALBC1_8MHZ; // DCO周波数レンジを設定 | |||
DCOCTL = CALDCO_8MHZ; // DCO校正値を設定 | |||
while(1) { | |||
// ...略 | |||
} | |||
} | |||
</syntaxhighlight> | |||
<br> | |||
このように、DCOの周波数を変更すると、MCLKとSMCLKの周波数も変化する。<br> | |||
アプリケーションの要件に応じて、適切なDCOの周波数と分周比を選択することが重要である。<br> | |||
<br><br> | <br><br> | ||
{{#seo: | |||
|title={{PAGENAME}} : Exploring Electronics and SUSE Linux | MochiuWiki | |||
|keywords=MochiuWiki,Mochiu,Wiki,Mochiu Wiki,Electric Circuit,Electric,pcb,Mathematics,AVR,TI,STMicro,AVR,ATmega,MSP430,STM,Arduino,Xilinx,FPGA,Verilog,HDL,PinePhone,Pine Phone,Raspberry,Raspberry Pi,C,C++,C#,Qt,Qml,MFC,Shell,Bash,Zsh,Fish,SUSE,SLE,Suse Enterprise,Suse Linux,openSUSE,open SUSE,Leap,Linux,uCLnux,電気回路,電子回路,基板,プリント基板 | |||
|description={{PAGENAME}} - 電子回路とSUSE Linuxに関する情報 | This page is {{PAGENAME}} in our wiki about electronic circuits and SUSE Linux | |||
|image=/resources/assets/MochiuLogo_Single_Blue.png | |||
}} | |||
__FORCETOC__ | __FORCETOC__ | ||
[[カテゴリ:MSP430]] | [[カテゴリ:MSP430]] | ||