アプリケーションノート 3698

Rowley CrossWorksおよびMAXQ2000の評価キット入門


要約: MAXQ2000は、数多くのアプリケーションに対して、豊富な周辺サポートを備えた強力で低コストの低電力マイクロコントローラです。MAXQ開発環境用のRowley Associates社の強力なCrossWorksツールのサポートを得て、複雑なアプリケーションをC言語で記述し、デバッグすることができます。このアプリケーションノートでは、MAXQ2000の評価キットをセットアップし、CrossWorksツールを使って立ち上げる方法を紹介します。1つのアプリケーションとして、LCD上のシンプルな動作カウンタが、MAXQ2000の評価キットおよびCrossWorksの機能を示します。

はじめに

MAXQマイクロコントローラの開発プラットフォームは、Rowley Associates社のCrossWorksプログラミングツールによってサポートされています。このアプリケーションノートでは、CrossWorks ver.1.0とMAXQ2000の評価キットを使って、C言語で記述されたMAXQプラットフォーム用のアプリケーションの作成、構築、およびデバッグを行う方法について説明します。これらの説明は、CrossWorksのver.1.0以降のバージョンにも適用可能と考えられます。MAXQ2000マイクロコントローラの機能は、以下の「セットアップ」の説明の一環として検証されます。

MAXQ2000の評価キットのセットアップ

コードの記述を開始する前に、まずMAXQ2000評価キットを接続する必要があります。

このキットには、3つのボードが付属しています。その中の1つのボードは小さなLCD画面を装備しています。図1は、最も大きなボードにLCDドータボードを接続した例を示しています。このボードがMAXQ2000の評価キットであり、これについては後で説明します。LCDボードを取り出して、J3というラベルが貼られたMAXQ2000の評価キットボード(図1)上のヘッダにそのボードを接続します。

図1. LCDボードを取り付けたMAXQ2000の評価キット
図1. LCDボードを取り付けたMAXQ2000の評価キット

MAXQ2000のローダおよびデバッグエンジンは、JTAGプロトコルを通じて通信します。PC用の汎用JTAGアダプタはほとんど市販されていないので、ダラスセミコンダクタがこの評価キットのサードボードであるシリアル-JTAGコンバータボードを提供しています。評価キットに付属の小さな10ピンケーブルを使って、MAXQ2000評価キット上のJ4とラベルされたヘッダをJTAGボード上のP2とラベルされたヘッダに接続します。図2を参照してください。コネクタの赤色の側が両方のボードのピン「1」と「2」と書かれた側になるように注意してください。

図2. JTAGボードに接続されたMAXQ2000の評価キット
図2. JTAGボードに接続されたMAXQ2000の評価キット

3つのジャンパがMAXQ2000評価キットに配置されているはずです。ヘッダJU1のピン1と2をともにジャンパで接続してください。同様に、ヘッダJU2のピン1と2およびヘッダJU3のピン1と2をともにジャンパで接続してください。また、高周波水晶発振器がY1 (ボード上のマイクロプロセッサの近く)に実装されていることを確認してください。このアプリケーションノートの検証コードでは、評価キットの一部として内蔵されている16MHzの水晶発振器を想定しています。JTAGボードにも、ヘッダJH1、JH2、およびJH3に3つのジャンパを配置する必要があります。

5V ±5%のDC電源(中央がプラス)がこのセットアップに必要です。電源要件に関する詳細については、MAXQ2000の評価キットのドキュメンテーションを参照してください。JTAGボード上の電源ジャックJ2に電源を接続します。

最後に、PCのシリアルポートをJTAGボードに接続します。標準の9ピンストレートスルー型のシリアルケーブルを使って、PCのシリアルポートのいずれか1つをJTAGボードのシリアルポートに接続します。:MAXQ2000の評価キットのシリアルポートに接続しないでください。図3は、正しい接続を示しています。

図3. JTAGボードに取り付けられたシリアルケーブルの正しい位置
図3. JTAGボードに取り付けられたシリアルケーブルの正しい位置

これでCrossWorksツールを使って作業を開始する準備ができました。

CrossWorksでのMAXQ2000プロジェクトの作成

Rowley Associates社は、30日の評価ライセンス付きのCrossWorks for MAXQの完全機能バージョンを提供しています。このバージョンを同社のWebサイト(www.rowley.co.uk/maxq/index.htm)からダウンロードすることができます。インストール時には指示に従い、インストール場所とその他のオプションについてはデフォルトを選択してください。なお、Rowley Associates社のCrossWorks for MAXQは、現在、Windowsプラットフォームでのみ利用可能です。続行する前に電子メールでRowley Associates社から30日の製品起動キーを入手する必要があります。Rowley Associates社のWebサイト上の「Support: Evaluating CrossWorks (サポート:CrossWorksの評価)」の下にある指示に従ってください。

インストールが完了したら、[スタート]メニューから[Rowley Associates Limited]→[CrossWorks MAXQ 1.0]→[CrossStudio]を順に選択して、CrossWorks for MAXQを起動します。CrossWorksで利用可能な機能の概要を示すメインウィンドウが開きます。

メニューから[File]→[New]→[New Project]の順に選択して、新しいプロジェクトを作成します。表示されるダイアログボックスで、テンプレートから「C Executable」を選択して、新しいプロジェクト名と場所を入力し、[OK]をクリックします(図4参照)。

図4. 「New Project」のオプションダイアログウィンドウ
図4. 「New Project」のオプションダイアログウィンドウ

続く[Project Setup]ダイアログ(図5)で、MAXQ2000が「Target Processor」オプションに選択されていることを確認します。残りの設定値は各デフォルト値のままにすることができます。[Finish]をクリックして、新しいMAXQ2000プロジェクトを作成します。

図5. [New Project Setup]のダイアログウィンドウ
図5. [New Project Setup]のダイアログウィンドウ

次に、MAXQ2000の評価キットになにか興味深いことをさせるのに十分なコードを入力する必要があります。[Project Explorer]ウィンドウが開いていない場合は、[View]→[Project Explorer]を順に選択して、このウィンドウを開きます。次に[Project Explorer]ウィンドウの「main.c」ファイルをダブルクリックして、このファイルを開きます。以下のコードを入力します(最初に「main.c」内の当初のコードをすべて削除します)。
#include <MAXQ2000.h>

void main(void)
{
  int i = 0;
  int j = 0;
  int k = 1;

  LCRA = 0x03E0;    // Set LCD configuration
  LCFG = 0xF3;     // Set up all segments as outputs, normal operation
             //  mode, and enable display.
  while (1) {
   for (i = 0; i < 500; i++) {
     for (j = 0; j < 500; j++) {
      // delay loop
     }
   }
   k = (k << 1);
   if (k == 64) {
     k = 1;
   }
   LCD0 = k;
   LCD1 = k;
   LCD2 = k;
   LCD3 = k;
  }
}
このコードを入力した後に、MAXQ2000の評価キットボードとシリアル-JTAGボードが電源投入され、前述のように接続されていることを確認します。[CrossWorks]ウィンドウの下部にあるステータスバーには、黄色のランプが隣にある「MAXQ Serial to JTAG」と表示されたインジケータがあるはずです。ただし、灰色のランプが隣にある「Disconnected」インジケータがある場合は、メニューから「Target」→「Connect MAXQ Serial to JTAG」を順に選択して、シリアル-JTAGボードに接続します。

シリアル-JTAGボードが接続され、準備が完了したら、メニューから「Build」→「Build and Run」を順に選択して、プロジェクトコードを作成し、実行します。「Verify Completed」で表示が終了する一連のメッセージが[Output]ウィンドウに表示されるはずです。MAXQ2000の評価キット上のLCDセグメントは、コードが実行されると作動を開始するはずです。

前掲のコードは、CrossWorks for MAXQのいくつかの機能を検証します。最初にMAXQ2000のレジスタはすべて、「MAXQ2000.h」組込みファイルで事前定義されています。このファイルはCrossWorksに付属し、ディレクトリ「%Program Files%\Rowley Associates Limited\CrossWorks MAXQ 1.0\include」にあります。プロジェクトがコンパイルされるとこのディレクトリは自動的に検索されます。このため、「MAXQ2000.h」ファイルを現在のプロジェクトディレクトリにコピーする必要はありません。

MAXQ2000.h」ファイルをプロジェクトに追加すると、レジスタLCRA、LCFG、LCD0、LCD1、LCD2、およびLCD3とともに上に示すようにC言語から直接、MAXQ2000のすべての内部レジスタをコードが参照することができます。MAXQ2000でサポートされるシステムおよび周辺機器レジスタの全リストについては、MAXQ2000のユーザガイドの補足を参照してください。

注:名前にA[0]やDP[0]などの角括弧が付いているレジスタは、CrossWorksにおいてはA_0やDP_0などの下線で参照する必要があります。また、各レジスタビットはCコードから直接設定することができないため、IMR.0 = 0は不可です。

MAXQ2000の評価キットの機能

CrossWorksデバッガに進む前に、MAXQ2000の評価キットボードの機能の一部を検証するより詳細なアプリケーションをセットアップします。この例のコードは、ダウンロードすることができます。

このアプリケーションは、ストップウォッチタイマのように常時増分または減分する動作カウンタ値をLCDに表示します。このカウンタ値は、LCDが表示可能な最大値である19999でロールオーバします。MAXQ2000の評価キットボードの2つの押しボタンは、以下のようにこのアプリケーションの制御スイッチとして機能するように設定されています。
  • SW5を押すと、カウンタ値は0000にリセットされます。
  • SW4を押すと、カウンタは方向を反転します。カウンタがこれまで順カウントしていた場合は、逆カウントを開始し、その逆もまた同様です。カウンタが0を下回ると、19999までロールします。
アプリケーションコードを変更するには、[Project Explorer]ウィンドウの「main.c」を右クリックし、ポップアップメニューから[Remove]を選択します。次に、[Source Files]を右クリックし、[Add Existing File]を選択します。上記のリンクからダウンロードした「demo2000.c」ファイルを選択します。このファイルをプロジェクトに追加した後に、メニューから[Build]→[Build and Run]を選択します。新しいアプリケーションは、MAXQ2000の評価キット上でコンパイル、ロード、および実行する必要があります。アプリケーションが実行された後に、ボード上のすべてのDIPスイッチがSW6.2とSW6.5を除いてオフにされていることを確認します。SW6.2とSW6.5はオンになっているはずです。

今こそ、MAXQ2000の評価キットのさらに便利な機能であるRESETボタンを検証する時です。評価キットボードの左下側に、SW2およびRESETというラベルが貼られたスイッチがあります。このボタンを押し、LCD画面に注目してください。0からすぐに再始動するはずです。このRESETボタンは、MAXQ2000のリセットピンに接続されています。アプリケーションを再起動する必要がある場合は、このボタンを押してください。

LCDコントローラMAXQ2000の初期化

MAXQ2000は、スタティック、x2、x3、またはx4の多重化を備えるフルバイアス、1/2バイアス、または1/3バイアスモードで動作する液晶ディスプレイ(LCD)用のハードウェアコントローラモジュールを内蔵しています。このため、MAXQ2000-RAX上でLCD駆動機能に専用化可能な37のライン(COM0~COM3、SEG0~SEG32)は、x4の多重ディスプレイで最大132のLCDセグメント(33セグメント×4コモン)を駆動することができます。

アクティブLCDディスプレイ上の各セグメントには、セグメントが接続されたコモンラインとセグメント間で駆動される連続的な電圧パターンが必要です。この電圧パターンによって、LCDガラスを損傷する恐れがあるDC電圧バイアスを生成することなく、希望通りにセグメントがオンまたはオフ状態に維持されます。LCDコントローラMAXQ2000は、これらのパターンをバックグランドで自動生成します。すなわち、LCDに表示されたセグメントが遷移している時は、LCDコントローラのレジスタのみを変更する必要があります。

前例のように、最初のステップは、使用中のディスプレイ用のLCDコントローラレジスタの初期化です。
void initLCD(void)
{
  LCRA = 0x03E0;    // Set LCD configuration
  LCFG = 0xF3;     // Set up all segments as outputs, normal operation
             //  mode, and enable display.
}
LCRAレジスタは以下の3つの重要機能を制御します。すなわち、ディスプレイ種類(この場合にはスタティック)、VADJとグランド間にある調整可能な抵抗(この抵抗を使ってディスプレイの明度を変更可能)、およびLCDセグメントの駆動に使用されるパターンの周波数です。LCFGレジスタはLCDコントローラをオン/オフして、どの兼用ピンをポートピンもしくはLCDセグメントとして使用するかを制御します。

ディスプレイへの値の書込み

使用するLCDの種類や多重モードとは関係なく、LCDセグメントはLCDコントローラディスプレイレジスタのいずれか1つのシングルビットによって制御されます。このビットを設定するとセグメントがオンになり(暗色)、このビットをクリアするとセグメントがオフになります(透明色)。使用するLCDセグメントは、図6に示すようにMAXQ2000の評価キットボード用にメモリマッピングされています。

図6. LCDセグメントをLCDディスプレイメモリレジスタビットにメモリマッピング
図6. LCDセグメントをLCDディスプレイメモリレジスタビットにメモリマッピング

LCDの数字はそれぞれ1つのLCDディスプレイメモリレジスタを占有し、数字ごとにビットのパターンは同じです。従って、0から9までの数字ごとにセグメントパターン用のルックアップテーブルを使って、数値をLCDに書き込むことができます。
#define LCD_PATTERN_0   0x03F
#define LCD_PATTERN_1   0x006
#define LCD_PATTERN_2   0x05B
#define LCD_PATTERN_3   0x04F
#define LCD_PATTERN_4   0x066
#define LCD_PATTERN_5   0x06D
#define LCD_PATTERN_6   0x07D
#define LCD_PATTERN_7   0x007
#define LCD_PATTERN_8   0x07F
#define LCD_PATTERN_9   0x067

int PATTERNS[] = {
  LCD_PATTERN_0, LCD_PATTERN_1, LCD_PATTERN_2, LCD_PATTERN_3, LCD_PATTERN_4,
  LCD_PATTERN_5, LCD_PATTERN_6, LCD_PATTERN_7, LCD_PATTERN_8, LCD_PATTERN_9
};


/******************************************************************************
* Returns the value that will need to be placed in one of LCD0-LCD3 to display
* a digit 0-9. No bounds checking is done here. If you ask for a digit other
* than 0-9, you will get a bogus display.
*/
int getLCDDigit(int digit)
{
  return PATTERNS[digit];
}
これらのルーチンが適切な場合は、以下のようにカウンタ値(4桁、特別な場合は第5桁に「1」)をディスプレイに書き込むことができます。

int show(int value)
{
  if (value >= 10000)
   LCD4 = 0x40;
  else
   LCD4 = 0;
  LCD3 = getLCDDigit((value / 1000) % 10);
  LCD2 = getLCDDigit((value / 100) % 10);
  LCD1 = getLCDDigit((value / 10) % 10);
  LCD0 = getLCDDigit((value) % 10);
  return 0;
}

押しボタン入力のバウンド防止

アプリケーションのその他の対話要素はSW4およびSW5の2つの押しボタンであり、両方のボタンはDIPスイッチブロックのSW6を通じてポートピンP5.2およびP7.1にそれぞれ接続されています(RESETスイッチはMAXQ2000上のアクティブローリセットラインに直接ハードワイヤードされているため、プログラミングサポートは不要です)。

(JTAGインタフェースを構成するP4.0~P4.3を除く) MAXQ2000のすべてのポートピンの電源投入時のデフォルトモードは、ポートピンとVDDIO間に内部弱プルアップを備えた入力モードです。SW4およびSW5スイッチは押し込まれるとポートピンをグランドにプルダウンするように組み込まれているため、ポートピンは必要とされる構成にすでに設定されています。ポートピン入力ビット(SW4の場合はPI5.2、SW5の場合はPI7.1)をチェックして、ポートピンの状態をごく簡単に確認することができます。このビットがゼロの場合はスイッチが押し込まれ、ビットが1の場合はスイッチが解除されます。

ただし、これらのスイッチは機械式スイッチであるため、1回押すと、0から1への急激な遷移がいくつか発生する場合があります。これを防ぐため、既存のメインループと遅延を構成要素として利用して、簡単にバウンドを防止します。
while(1)
{
  for (i = 0; i < 32000; i++)
  {
   // just a delay loop
  }
  show(counter);

  if (((PI5 & 0x04) == 0) && (debounce1 == 0)) {
   inc *= -1;
   debounce1 = 20;
  }

  if (((PI7 & 0x02) == 0) && (debounce2 == 0)) {
   counter  = 0;
   debounce2 = 20;
  }

  counter += inc;
  if (counter  > 19999) { counter = 0;   }
  if (counter  < 0)   { counter = 19999; }

  if ((debounce1 > 0) && ((PI5 & 0x04) == 0x04)) { debounce1--; }
  if ((debounce2 > 0) && ((PI7 & 0x02) == 0x02)) { debounce2--; }
}
スイッチがハイからローに遷移すると、バウンド防止カウンタが設定されます。スイッチはメインカウンタの20のクリックに対してハイの状態を維持してから、別のハイからローへの遷移を受け付ける必要があります。バウンド防止カウンタはスイッチのバウンドを防止するだけでなく、このカウンタによってスイッチを押し下げても機能は繰り返されません。このスイッチを解除して、再度押す必要があります。

CrossWorksデバッガの使用方法

これで、このアプリケーションはMAXQ2000上で動作しているため、CrossWorksのデバッグシステムの機能を検証することができます。また、MAXQ2000にコードをロードするために使用される同様のJTAGインタフェースも、ハードウェアにおいていくつものデバッグ機能をサポートしています。機能の例として以下が挙げられます。
  • ステップごとの単一命令の実行
  • 実行アドレスごとのブレークポイント設定(同時に最大4つのアクティブブレークポイントを利用可能)
  • レジスタの直接読取り/書込み
  • コードおよびスタックメモリのダンプ
  • データメモリのダンプおよび直接編集
これらのデバッグ機能は、MAXQ2000 (およびその他のMAXQマイクロコントローラ)によって非常に低位のレベルでサポートされ、アプリケーションが利用可能なプロセッサリソースにほとんど影響を与えずにインシステムデバッグが可能です。この目的のために専用JTAGポートを使用すると、ホストシステムと通信するのに他のインタフェース(MAXQ2000のUARTポートなど)は不要になります。さらに、ブレークポイントメカニズムは完全にバックグランドで動作し、MAXQ2000がデバッガによって停止されていない場合は常にフルスピードで動作します。MAXQ2000が完全にバックグランドで動作している間、ブレークポイントの追加、削除、または変更を行うこともできます。

CrossWorksはこれらのハードウェアデバッグ機能を活用して、ブレークポイント設定、変数/レジスタ監視、およびメモリダンプ/編集モードなどのフル機能のデバッグ関数セットによってC言語およびアセンブラレベルのソースコードのデバッグを行います。アプリケーションのデバッグを開始するには、メニューから[Build]→[Build and Debug]を順に選択します。アプリケーションはコンパイルされ、MAXQ2000の評価キットにロードされ、ちょうどmain() 関数内で実行を停止します(図7)。

図7. CrossWorksのデバッグモード
図7. CrossWorksのデバッグモード

図7でCrossWorksの複数のデバッガ機能を確認することができます。
  • 現在の実行行は、左側の余白に黄色の矢印が付いています。また、すべての実行可能行(コメント、空白、および一部の括弧記号を除く)には左側に青色の三角形が付いています。
  • ローカル変数とその値は、アプリケーションコードディスプレイの右側部分に示されています。こうした値をクリックし、新しい値を入力して、値を編集することができます。
画面の最下部にある「MAXQ Serial To JTAG」表示の隣にある赤色のランプは、アプリケーションが一時停止していることを示しています。この地点から、実行を続行するいくつものオプションがあります。
  • Step Into (次の命令に移動する) (F11) 一行ごとに実行ステップを進め、コードをステップごとに実行することができます。行が関数呼出しで構成されている場合は、その関数に移動し、実行ポイントが関数の先頭に移動します。
  • Step Over (次の命令を飛び越える) (F10) その行が関数呼び出しで構成されていない場合は、同様に一行ごとに実行ステップを進めます。行が関数呼び出しで構成されている場合は、停止せずに実行ステップはその関数に一気に移動し(その関数をスキップせずに実行)、その関数呼び出しの次の行で停止します。
  • Step Out (次の命令外に移動) (Shift+F11) 関数(トップレベル関数main()ではない)内からのみ使用することができます。これによって実行ステップは残りの関数に進み、その関数が呼び出された行の次の行で停止します。
  • Run to Cursor (カーソル位置まで実行) (Control+F10) カーソルが置かれた行に実行ステップが達するまで、実行ステップが進みます。これが機能するには、カーソルが実行可能コードライン上にある必要があります。
Go (F5)を選択して、アプリケーションを通常速度で実行することもできます。この選択によって、アプリケーションがデバッグ制御から解放され、通常動作を行います。アプリケーションの実行時に、最下部にある「MAXQ Serial to JTAG」表示の隣のランプが緑色で点滅して、アプリケーションはフリーランニング中だが、デバッガが必要に応じて実行に割り込み、実行を停止させることを示します。実行中のアプリケーションを停止させ、デバッグ制御に再び移行する2つの主な方法があります。
  • Break (停止)コマンド(Control+".")によって、アプリケーションが現在どの位置にあっても、アプリケーションが即時停止します。
  • 実行可能コードラインを表す青色の三角形を左クリックして、アプリケーション内の任意の場所にブレークポイントを設定することができます。この設定によって、青色の三角形は赤色の円に変わります。アプリケーション実行中にアプリケーションがブレークポイントに達すると、ブレークポイント設定された行でアプリケーションは停止し、デバッグモードに再び移行します。アプリケーションの停止時またはフリーランニング時に、最大4つのブレークポイントを設定またはクリアすることができます(様々なステップ関数が1つのブレークポイントを占有するため、ステップバイステップモード使用時には3つのブレークポイントしか設定することができないことに注意してください)。
最後にもう1つの方法で、Stop (終了) (Shift+F5)によって、デバッグセッションが終了し、アプリケーションが解放され、フリーランニングになります。

デバッグモード時にアプリケーションを参照するモードが、以下のように3種類があります。
  • Source Mode (ソースモード) (Control+T、S) アプリケーションをCコードのみで表示します。
  • Assembly Mode (アセンブリモード) (Control+T、A) アプリケーションをアセンブリ言語で表示します。ステップバイステップおよびブレークポイント関数を各アセンブリコードラインで使用することができます。
  • Interleaved Mode (インタリーブモード) (Control+T、I) (図8)は、同一ウィンドウでC言語およびアセンブリ言語コードを表示します。
図8. インタリーブモードでのデバッグ
図8. インタリーブモードでのデバッグ

[Register]ウィンドウの使用方法

アプリケーションがデバッグモードで一時停止している間に、MAXQ2000のレジスタを参照して、直接編集することができます(図9)。この表示を開くには、メニューから[Debug]→[Debug Windows]→[Registers (1,2,3,4) ]を順に選択します。迅速に表示することができる4種類の[Register]ウィンドウがあります。左上にある「Groups」アイコンをクリックして、各レジスタグループを表示するようにこれらの各ウィンドウを設定することができます。

図9. [Register]ウィンドウ
図9. [Register]ウィンドウ

[Call Stack]ウィンドウの使用方法

もう1つのデバッグウィンドウは、アプリケーションの現在のコールスタックを表示します(図10)。この表示は、コードが現在実行中の位置に達するまでに呼び出されたすべての関数を示します。現在実行中の関数が一覧の最後に表示され、その上の行に現在の関数を呼び出した前の関数が表示されます。この表示パターンが、main()が先頭行に表示されるまで続きます。このウィンドウを開くには、[Debug]→[Debug Windows]→[Call Stack]を順に選択するか、またはControl+Alt+Sを同時に押します。

図10. [Call Stack]ウィンドウ
図10. [Call Stack]ウィンドウ

[Variable]および[Watch]ウィンドウの使用方法

その他のデバッグウィンドウを[Debug]→[Debug Windows]メニューから利用することができます。[Locals]および[Globals]ウィンドウは、それぞれ(現在の関数または範囲に対して)ローカルおよびグローバルな変数の値を表示します。ローカル変数表示ウィンドウは、上記の図7に示されています。その他のウィンドウの[Watch]ウィンドウを使って、変数の値だけでなく、任意のC言語式の値も表示することができます(図11)。ただし、MAXQ2000のレジスタをこれらの式で使用することはできません。変数および式別の一覧をそれぞれ備える最大4つの[Watch]ウィンドウを個別に設定することができます。

図11. [Watch]ウィンドウ
図11. [Watch]ウィンドウ

コードおよびデータメモリの参照

[Memory]ウィンドウ([Debug]→[Debug Windows]→[Memory (1,2,3,4) ]を順に選択)をコードまたはデータメモリのセグメントの現在値を示すように設定することができます。それぞれの実行ステップまたはブレークポイントでの停止後、これらの値は更新されます(図12)。さらに、データメモリの値をクリックし、新しい値を入力して、データメモリの値を直接編集することもできます。

図12. [Data Memory]ウィンドウ
図12. [Data Memory]ウィンドウ

サポートオプション

MAXQプラットフォームが利用可能なサポートオプションがいくつかあります。ダラスセミコンダクタの開発者がチェックするオンラインディスカッションフォーラムでは、ユーザが投稿した質問に返答します。また、このフォーラムには利用可能な最新ツールの情報やその他の関心のあるトピックも掲載されているため、開発者用のニュース発信地としての役割も果たしています。

公開フォーラムに適していない質問については、マキシムのサポートセンターにてお問い合わせください。

一般的なニュース/情報については、またはMAXQ2000、MAXQプラットフォーム、および今後のMAXQデバイスに関する情報の起点としては、MAXQのホームページを参照してください。

トラブルシューティング

新しいデバイスで始める際には、通信しようとした時に遭遇するいくつかの典型的な問題があります。多くの問題は、このアプリケーションノートの最初の部分に記載されたすべての指示(基板の接続やプロジェクト構成など)に従ったかどうかを確認することで解決することができます。以下に、一般的な問題と解決策を示します。

問題 可能な解決策
アプリケーションをコンパイルすると、MAXQ2000のレジスタを使用する各場所に「undeclared identifier」と表示されるエラーが発生します。 アプリケーションの先頭部分に、

#include <MAXQ2000.h>

の行があるか確認してください。
[Connect MAXQ Serial to JTAG]を選択すると、「Device is not responding」と表示されるエラーが発生します。 以下を確認してください。両方のボードが接続され、電源投入されているか、JTAGケーブルが両側でピン1に至る赤いワイヤと接続されているか、ジャンパP2 (シリアル-JTAGボード上)とJU11 (MAXQ2000ボード上)がともに閉じているか。
[Connect MAXQ Serial to JTAG]を選択すると、「Cannot open serial link」と表示されるエラーが発生します。 他のソフトウェアが、選択したCOMポートを使用していないか確認してください。多くの場合、PDAソフトウェアは、コンピュータの起動時からシリアルポートを占有します。別のCOMポートを選択するか、またはPDAソフトウェアをオフにしてください。
デモアプリケーションを実行すると、LCDセグメントがスクランブル化されます。 LCDドータボードがMAXQ2000の評価キットボードの中心に垂れ下がる位置ではなく、ボードの上面から垂れ下がっていることを確認してください。

結論

MAXQ2000は、数多くのアプリケーションに対して豊富な周辺サポートを備えた強力で低コストの低電力マイクロコントローラです。MAXQ開発環境用のRowley Associates社のCrossWorksのサポートを得て、強力なツールの支援によって複雑なアプリケーションをC言語で記述し、デバッグすることができます。この作業によって、迅速な製品化までの期間と高品質の製品がもたらされます。