CodeWarriowの解説

製作例”エコドライブモニター”を例に説明します。”エコドライブモニターの製作”のデバイス設定にプロジェクトファイルECOMON.lzhのリンクがありますのでダウンロードして、解凍してから始めてください。

CodeWarriorを起動し左上のOPENアイコンをクリックしてダウンロードしたECOMONフォルダーを開くと下図のようにブルーのアイコンでECOMONというプロジェクトファイルが現れます。このアイコンをダブルクリックすればエコドライブモニタープロジェクトが開きます。CodeWarriorを起動していなくても、WindowsのエクスプローラーでECOMONフォルダを開き、ECOMON.mcp(CodeWarriorProject)をダブルクリックすればCodeWarriorが起動してエコドライブモニタープロジェクトが開きます。

下図がCodeWarriorでエコドライブモニタープロジェクトを開いた様子です。

【プロジェクトウィンドー】

@プロジェクトウィンドータブ
Files:このプロジェクトに関わるすべてのファイルが表示されます。Generated CodeフォルダにはPEが自動生成したCソースファイルが表示されます。User ModuleフォルダにはMAIN関数が含まれたECOMON.cが表示されています。ファイル名はプロジェクト名と同一で生成されます。ダブルクリックするとエディタウィンドーでソースコードを表示、編集する事が出来ます。

Link Order:このプロジェクトでリンクされるファイルが表示されます。

Targets:プロジェクトセッティングが表示されます。色々なコンパイラオプションが設定できます。

Processor Expert:プロセッサーエキスパートで設定する機能を表示します。
Aターゲット選択ボタン
ドロップダウンボックスの中には接続可能なシュミレーションやデバッカが表示されます。
BターゲットMCU&デバッカ選択ボタン
プロジェクトで使用するデバイスの選択と使用するデバッカを指定します。
Cスタンダードセッティングボタン
プロジェクトセッティングが表示されます。色々なコンパイラオプションが設定できます。
DSynchronize modification datesボタン
Eメークボタン
このボタンをクリックするとプロジェクトのファイルがコンパイルとリンクを実施され、エラーやワーニングがあればエラーとワーニングウィンドーに表示されます。
Fデバックボタン
メークと同様のコンパイルを実施後指定されたシュミレータやデバッカを起動します。
G変更通知
コンパイルした後にソースファイルを変更をした場合、この欄にチェックマークで表示されます。
Hコードサイズ
コードのサイズをバイト単位で表示します。
Iデータサイズ
データのサイズをバイト単位で表示します。
JDebugging status
K総ファイル数
L総コードサイズ
単位はバイト。
M総データサイズ
単位はバイト。

【プロセッサーエキスパートタブ】
プロジェクトウィンドータブでプロセッサーエキスパートを選択すると下図のような画面が表示されます。プロジェクトウィンドーのComponentsフォルダに表示されている物がプロセッサーエキスパートで設定したビーンモジュールです。CPUsフォルダにCPU:MC9S08SH8CPJが2個ありますが、チェックマークの付いている方をクリックするとコンポーネント管理ウィンドーが下図のように表示されます。コンポーネント管理ウィンドーの設定値を変更するとプロセッサーエキスパートがソースファイルを自動生成してくれるので、大変便利です。エコドライブモニターではInternal bus clockを8.0に設定しています。それ以外はデフォルトのままです。各製作事例のデバイス設定の項目で各ビーンモジュールのコンポーネント管理ウィンドーを示しています。新たにビーンモジュールを追加する時はコンポーネントライブラリウィンドーのCPU Internal Periphralsフォルダーの下に各モジュールがありますのでダブルクリックすると追加する事が出来ます。Pin設定をするとターゲットCPUウィンドーに対応したアイコンが表示されます。

タイマーを1秒で動作させる場合は、通常クロック周波数と分周比を計算してMAIN関数の初期設定に専用レジスタを設定する記述を行いますが、プロセッサーエキスパートではコンポーネントライブラリウィンドーからタイマービーンモジュールをダブルクリックして追加し、周期を1sに設定すれば後は自動生成してくれます。勿論、タイマー専用レジスタにどのような設定がされたかも表示され簡単にチェックする事が出来ます。マイコン初心者にとってデバイスの専用レジスタの設定は大変厄介なものです。デバイスの説明書を一通り読まないと、どこまで設定すれば動くのか分かりません。プロセッサーエキスパートはそんなデバイス設定を簡単に生成してくれる大変便利な機能です。

【エディターに日本語のコメントが書けるようにする】

まずはエディタのフォント設定をして日本語が表示できるようにします。
Editボタンをクリックして→Priferenceをクリックします。IDE Priference PanelsのFont&Tabsを選ぶと下図のような画面になりますのでFontとScriptを日本語が表示できる物に設定してください。

【エディターでソースファイルを編集する】

CodeWarrior画面左のプロジェクトウィンドーにUser Modulesフォルダの中にECOMON.cというメインプログラムが有ります。これをダブルクリックするとエディターが起動します。

@ヘッダーリスト
A関数リスト
Bマーカーリスト
Cドキュメントセッティング
Dバージョンコントロール
Eソースファイルのパス

CodeWarrior画面左のプロジェクトウィンドーにUser Modulesフォルダの中にECOMON.cというメインプログラムが有ります。
これをダブルクリックするとエディターが起動します。下図の
緑色で表示した部分はプロセッサーエキスパートによって自動生成されたコードです。
TRIM設定とメインループ以外はすべて自動生成されたコードです。
自動生成している部分に記述してもコンパイル時に消去されてしまうので注意が必要です。

/** ###################################################################
** Filename : ECOMON.C
** Project : ECOMON
** Processor : MC9S08SH8CPJ
** Version : Driver 01.11
** Compiler : CodeWarrior HCS08 C Compiler
** Date/Time : 2009/10/06, 13:42
** Abstract :
** Main module.
** This module contains user's application code.
** Settings :
** Contents :
** No public methods
**
** ###################################################################*/
/* MODULE ECOMON */


/* Including needed modules to compile this module/procedure */
#include "Cpu.h"
#include "Events.h"
#include "DISPLAY.h"
#include "TO1.h"
#include "AD1.h"
/* Include shared modules, which are used for whole project */
#include "PE_Types.h"
#include "PE_Error.h"
#include "PE_Const.h"
#include "IO_Map.h"


/* User includes (#include below this line is not maintained by Processor Expert) */
↑ここまでは自動生成されます。ユーザーのコードはここから下に記述します。↓

/****************************************************
* *
* Filename : ECOMON.c *
* Version : 01.00 *
* Compiler : CodeWarrior HCS08 C Compiler *
* Date/Time : 2009/10/07, 0:00 *
* *
* エコドライブモニター制御プログラム *
* *
* Copyright : n.Tanaka *
* *
****************************************************/
/***** 宣言部 *****/
char ERR;                   // エラーコードレジスタ
unsigned int XDATA,YDATA,ZDATA;  // AD変換値格納レジスタ
unsigned int DATA;             // 表示用データレジスタ

/*************
* メイン関数 *
*************/
メイン関数の自動生成部分↓
void main(void)
{
/* Write your local variable definition here */

ローカル関数がある場合はここに記述します。
/*** Processor Expert internal initialization. DON'T REMOVE THIS CODE!!! ***/
  PE_low_level_init();
/*** End of Processor Expert internal initialization. ***/


/* Write your code here */
/* For example: for(;;) { } */
ユーザーのメインプログラムはここから記述する。
/***********
* 初期設定 *
***********/

/***** TRIM設定 *****/
  ICSTRM = 0xA9;     // 内臓基準クロックのトリム設定
  ICSSC_FTRIM = 0;   // 内臓基準クロックのファイントリム設定

/***** メインループ *****/
  for (;;)
  {
    ERR = AD1_MeasureChan(0,0);     // ADP0 AD変換開始
    XDATA = ADCR;              // 変換値を格納
    ERR = AD1_MeasureChan(0,1);     // ADP0 AD変換開始
    YDATA = ADCR;              // 変換値を格納
    ERR = AD1_MeasureChan(0,2);     // ADP0 AD変換開始
    ZDATA = ADCR;              // 変換値を格納
    DATA = ((XDATA+6)/15);        // offset加算してから1/15
    switch(DATA)                // LED表示
    {
      case 41: PTBD = 0b00000001;break;
      case 40: PTBD = 0b00000011;break;
      case 39: PTBD = 0b00000110;break;
      case 38: PTBD = 0b00001100;break;
      case 37: PTBD = 0b00011000;break;
      case 36: PTBD = 0b00110000;break;
      case 35: PTBD = 0b01110000;break;
      case 34: PTBD = 0b11110000;break;
      case 33: PTBD = 0b01110000;break;
      case 32: PTBD = 0b00110000;break;
      case 31: PTBD = 0b00011000;break;
      case 30: PTBD = 0b00001100;break;
      case 29: PTBD = 0b00000110;break;
      case 28: PTBD = 0b00000011;break;
      case 27: PTBD = 0b00000001;break;
      default: PTBD = 0b00000000;
    }
    Cpu_Delay100US(1000);         // 100mS待機してループ
  }

/*** Don't write any code pass this line, or it will be deleted during code generation. ***/
/*** Processor Expert end of main routine. DON'T MODIFY THIS CODE!!! ***/
for(;;){}
/*** Processor Expert end of main routine. DON'T WRITE CODE BELOW!!! ***/
} /*** End of main routine. DO NOT MODIFY THIS TEXT!!! ***/

/* END ECOMON */
/*
** ###################################################################
**
** This file was created by Processor Expert 3.06 [04.26]
** for the Freescale HCS08 series of microcontrollers.
**
** ###################################################################
*/

リアルタイムデバッカの解説

OSBDMをエコドライブモニタに接続して電源を入れ、OSBDMをUSBコネクタに接続して、CodeWarriorのデバックボタンを押してデバッカを起動します。
下図のような「マスイレースして良いか」を問い合わせる画面が出ますのでOKをクリックします。

プログラムの書き込みが終了すると下図のようにデバッカが表示されます。

ソースコードウィンドー
エディターで作成したソースプログラムが表示されます。

プロシージャ(手順)ウィンドー
プログラムを実行している際に処理した関数の履歴を表示します。

データウィンドー
プログラムに用いた変数の内、指定された変数の値が表示されます。

アセンブリウィンドー
ターゲットデバイスに書き込まれたプログラムを逆アセンブルして作成された、アセンブラコードが表示されます。

レジスタウィンドー
レジスタの値を監視する画面です。

メモリーウィンドー
メモリの値を監視する画面です。

コマンドウィンドー
画面上でコマンドを入力する事により、本アプリケーションを操作する事が出来ます。また、デバック中のステータスを表示する画面としても機能します。

【ツールバー】

@スタート/コンティニューボタン・・・プログラムを実行する。
Aシングルステップボタン・・・・・・・・プログラムを1行づつ実行する。
Bステップオーバーボタン・・・・・・・次に出てくる関数/ルーティンを1回処理し、そこから抜け出た所でプログラムを停止する。
Cステップアウトボタン・・・・・・・・・・今処理している関数/ルーティンから抜け出た所でプログラムを停止する。
Dアセンブリステップボタン・・・・・・アセンブラ・レベルでのプログラムを1行ずつ実行する。
E停止ボタン・・・・・・・・・・・・・・・・・・実行中のプログラムを停止する。
Fリセットボタン・・・・・・・・・・・・・・・プログラムをリセットする。  

【日本語を表示する】
ソースウィンドを見ると日本語のコメント表示されていません。MENUのComponent→Fonts...をクリックすると下図のようなフォント設定画面が出ますので日本語を表示できるフォントを選択し、文字セットを日本語に設定します。

【ブレークポイント】
ソースウィンドーの任意の行でマウスを右クリックするとMENUが表示されます。一番上のセットブレークポイントをクリックすると下図のように赤い矢印が表示され、プログラムをスタートさせるとこのブレークポイントで一時停止状態になります。データウィンドーの表示された変数の内容が変化していれば赤字で表示されます。
プログラムが上手く動作しない時はこのブレークポイントとデータウィンドーに表示される変数の値を見ながらデバックして行きます。
ブレークポイントを消したい時は消したいブレークポイントのある行で右クリックするとMENUにデリートブレークポイントと表示されますのでクリックして消します。
ブレークポイントは3か所まで同時に設定する事が出来ます。

【データウィンドー】
データウィンドーの変数はグローバル定義した物が表示されています。見たい変数はをクリックするとその時点での変数値を表示します。右クリックでMENUを表示しAdd Expressionをクリックすると表示する変数を追加する事が出来ます。

TOP BACK