softdev:msp430:lcd1
差分
このページの2つのバージョン間の差分を表示します。
両方とも前のリビジョン前のリビジョン次のリビジョン | 前のリビジョン次のリビジョン両方とも次のリビジョン | ||
softdev:msp430:lcd1 [2013/01/12 22:24] – king | softdev:msp430:lcd1 [2013/01/13 21:05] – [割り込み部] king | ||
---|---|---|---|
行 4: | 行 4: | ||
今回使ったのは、有る所から入手した4bit転送のLCDでした。初期化とか説明書通り。\\ | 今回使ったのは、有る所から入手した4bit転送のLCDでした。初期化とか説明書通り。\\ | ||
気をつける必要があるのは、「MSP430の電源は上限3.3V(公称)」と言う事。PICの様に5Vでも3Vでもというわけには行かず、LCDを5V品にすると、LDOなんぞが必要になる。\\ | 気をつける必要があるのは、「MSP430の電源は上限3.3V(公称)」と言う事。PICの様に5Vでも3Vでもというわけには行かず、LCDを5V品にすると、LDOなんぞが必要になる。\\ | ||
- | * 回路図は作らずに、適当に配線した。 | + | * 回路図は作らずに、適当に配線。ポート足りるので外部品もRESET端子のPU抵抗だけ。 |
* MSP430の低消費電力を体験したかったので、Sleep制御して、タイマー割り込みを使って起きるようにした。 | * MSP430の低消費電力を体験したかったので、Sleep制御して、タイマー割り込みを使って起きるようにした。 | ||
* [[softdev: | * [[softdev: | ||
* 外部SWでLCDコントラストを変えるようにする。(外部割り込み使う) | * 外部SWでLCDコントラストを変えるようにする。(外部割り込み使う) | ||
- | 初期化部 | + | ===== 初期化部 |
+ | コアクロックはデフォルトの内部クロック、1MHz。 | ||
<code c> | <code c> | ||
void main(void) | void main(void) | ||
行 26: | 行 27: | ||
</ | </ | ||
+ | ===== 端子割り込み ===== | ||
+ | SWを3つ、P1に割り振る。 | ||
+ | <code c> | ||
+ | // Pi interrupt enable | ||
+ | P1IE = 0x38; | ||
+ | P1IES = 0x38; // P1.3-5 エッジ割り込みH-> | ||
+ | P1IFG &= ‾0x38; // P1.3-5 割り込みフラグクリア | ||
+ | </ | ||
+ | ===== タイマ ===== | ||
+ | タイマを外部の低周波数CLK、ACLKだったかな、にする。ここに、32768Hzの水晶振動子を付けて、15bitカウントしたら時計を1秒進ませる。 | ||
+ | <code c> | ||
+ | // Timer A setting | ||
+ | TACTL = TASSEL_1 + MC_1 ;// ACLK, up to ccr, interrupt | ||
+ | TACCR0 = 32768; | ||
+ | TACCTL0 |= CCIE; // enable interrupt | ||
+ | </ | ||
+ | |||
+ | ===== Sleepモード ===== | ||
+ | ここまで書いたら、割り込み有効で、LPM3モード(ACLKのみ生きてて、MCLKもCPUもsleepしている)へ移行する。 | ||
+ | <code c> | ||
+ | _BIS_SR(LPM3_bits + GIE); // Enter LPM3 w/interrupt | ||
+ | </ | ||
+ | {{: | ||
+ | |||
+ | ===== 割り込み部 ===== | ||
+ | <code c> | ||
+ | //A0_VECTOR : Timer0_A CC0 | ||
+ | #pragma vector=TIMER0_A0_VECTOR | ||
+ | __interrupt void Timer_A (void) | ||
+ | { | ||
+ | jikan += 1; | ||
+ | if(jikan==86400)jikan=0;// | ||
+ | |||
+ | ここに時計データの表示処理が入る。 | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | <code c> | ||
+ | // Port 1 interrupt service routine | ||
+ | #pragma vector=PORT1_VECTOR | ||
+ | __interrupt void Port_1(void) | ||
+ | { | ||
+ | P1IFG &= ‾0x38; | ||
+ | ポート処理を入れる。 | ||
+ | } | ||
+ | </ | ||
softdev/msp430/lcd1.txt · 最終更新: 2013/07/15 20:25 by 127.0.0.1