MSP430 / eZ430-F2013
 sample_0 project         日々の取り組みはこちら
IMAGE11.GIF - 980BYTES  
コンセプト
IMAGE11.GIF - 980BYTES  解説
IMAGE11.GIF - 980BYTES  ダウンロード
IMAGE12.GIF - 2,801BYTES

変更履歴
2006年9月9日 追加
2006年9月8日 新規作成

記述内容には、思い込みによる記述や十分な検証をしていない部分が存在する可能性があります。十分に注意してください。
誤り等ありましたら、ご指摘いただけると幸いです。 新井健司 / JH1PJL    E-mail : MAIL12_006.PNG

MSP430関連の開発を再開しました(2011年4月4日)

今回はこれだけで、HW変更なしで動作 このような改造は不要です。購入したままの形で、動作可能




MSP430 sample_0 project ----- コンセプト
IMAGE12.GIF - 2,801BYTES
TOP02_001.PNG - 934BYTES

基本コンセプト
1.HW
  eZ430-F2013のTI出荷状態のままで動作すること
  すなわち、HWに関しては何も変更しないで動作すること
2.SW
  内蔵温度センサーの測定値をLEDにモールス信号として表示する
  電源電圧の測定値をLEDにモールス信号として表示する
  上記、2つのデータ表示を定期的に切り替える






MSP430 sample_0 project ----- 解説
IMAGE12.GIF - 2,801BYTES
TOP02_001.PNG - 934BYTES

7月19日にeZ430-F2013を入手してから約2ヶ月間、紆余曲折の上、ADC(SD_16)の使い方に関して(確証はまだ得られないが)かなりの部分が判ってきた。
加速度センサーを組み合わせた本来の目標達成の前に、上記でまとめたように、eZ430-F2013のハードウェア改造しないで、動作確認が出来るサンプルをまとめておく事にする。ここで説明しているように、Webページを探してもまだeZ430-F2013を使用した製作事例が少ないので、TI提供のLED点滅のサンプルから次のステップに行く参考にしてもらえるとありがたい。

<RTM>
MSP430の特徴はなんと言っても省電力タイプであることだが、その特徴を生かすためにはポーリングするようなプログラムを書くのではなく、Event Driven、すなわち何かが変化したり何かが起こった時にMPUが動き出すようにするのが良い。この目的では、以前から私が作成し使っているRTMが非常に相性が良いと思う。ここを参考にして、動作原理を理解してみてほしい

ユーザープログラムの作成の際、絶対守らなければならない点:
    → プログラムでは待ちループを絶対作らない。
考え方の基本:
    →
 State Transition(状態遷移図)を作成して、制御全体を整理した上で、
      状態遷移が現在どの状態なのか(例えばステートを番号で表して)を識別し、
      状態の遷移が発生したかを判断し、
      次の状態に移行するか、とどまるかをTask内に記述すること。


<Morse code>
eZ430-F2013の出力装置はたった一個のLEDです。この一個の表示装置で数値を表示する方法はそんなに思いつきません。今回はモールス信号を応用しました。詳しくは、ここを参考の事
初めての人には、読み取りが難しいが少し慣れると読み取れるようになる!(?)

<ADC>
今回は大変苦労した。先ず、ADCの方式がΣΔ変換器と呼ばれるもので、今までのMPU内蔵のADCとは違う方式たっだので今までの経験が生かせない。更に、ADC変換値と物理データ値との関係がうまくつかめずに苦労してしまった。ADCの動作原理はいまだに十分理解出来ず。まだまだ修行が足らないようだ。

<正規化>
大分まじめにWebで探し回って、電源電圧の正規化や内蔵温度センサーの正規化コードを探したが、見つけることが出来なかった。
ここに掲載した、Vcc温度の考え方もまだ確証が持てない。間違いなどあれば是非ご指摘願いたい。

VCC計算の検証


温度計算の検証


VCC計算のインプリメント
/********** Nomalize Vcc data subroutine ******************************************/
//   (Normalized Vcc) = (ADC converted data ) x Constant_Vcc
//   Constant = 201.4 [uV/bit]
void normalize_adcvcc( void )
{
     nor_adc_vcc = ((unsigned long)((int)(adc_vcc)-(adc_offset))*20142)/100000;
}

温度計算のインプリメント
/********** Nomalize Temperature data subroutine ***********************************/
//   (Normalized Temperature) = (Vsen - Voffset)/TCsen - 273
//   Vsen = (ADC converted data ) x Constant_temp
//   Constant_temp = 18.311 [uV/bit], Voffset = 0 [V], TCsen = 1.32 [mV/K]
void normalize_adctemp( void )
{
    nor_adc_temp =
     (unsigned int)((((unsigned long)((int)(adc_temp)-(adc_offset))* 18311)/132 - 2730000)/100);
}


<悩み>
今回の正規化ルーチンでは、longでの加減乗除計算を入れてしまい、結果として32bitのLibraryがリンクされてしまった。結果は、コード領域のオーバーフロー!サンプルプログラムは、RTM部分の中で今回使用していない部分を削除したりして何とかまとめたが、今後のプログラム作成上でも、ROMの2KBやRAMの128Bは、かなり気を使って臨まないと、やりたいことがまとまってもインプリメンテーションの段階でROMやRAM不足で実現できない可能性がある。

*************************************************************
* SEGMENTS IN ADDRESS ORDER *
*************************************************************
SEGMENT SPACE START ADDRESS END ADDRESS SIZE TYPE ALIGN
=======   =====  =============   ===========   ==== ==== =====
DATA16_AN                      0000 - 0000                1     rel     0
                                     0021 - 0022                2
                                     0053 - 0053                1
                                     0056 - 0057                2
                                     00B0 - 00B0               1
                                     0100 - 0103                4
                                     0112 - 0113                2
                                     0120 - 0121                2
DATA16_I                        0200 dse 0
DATA16_Z                       0200 - 022D                2E     rel     1
CSTACK                         0258 - 027F                28     rel     1
DATA16_AN                     10FC - 10FD                2      rel     0
CSTART                         F800 - F81D                1E     rel     1
CODE                            F81E - FEDB               6BE    rel     1
DATA16_C                      FEDC - FF3F                64     rel     1
INTVEC                          FFE0 - FFF5                16     com   1
RESET                           FFFE - FFFF                 2      rel     1
*************************************************************
* END OF CROSS REFERENCE *
*************************************************************








MSP430 sample_0 project ----- ダウンロード
IMAGE12.GIF - 2,801BYTES
TOP02_001.PNG - 934BYTES

IAR Embedded Workbench で試すことの出来るソースファイルを下記に格納。
あくまでもテスト用です。ご承知置きください。

-------- eZ430_sample_0_by_JH1PJL.zip