Top Page [◀◀]  2   3   4   5   6   7   8   9   ... [▶▶Last Page

CS+ for CC のデバッグ・ツールについて

最近、マイコンを触り始めたものです。

CS+ for CC で RL78/G14 の R5F104LE(64pin)、アプリケーション(CC-RL)でプロジェクトを作成している状態です。

以下のような簡単なプログラムを main.c に書いています。

#include "iodefine.h"

static void intit(void);
#pragma interrupt intit(vect = INTIT, bank = RB1)

void main(void) {
// インターバルタイマの割り込み許可
ITMK = 0;
__EI();

// 低速オンチップ・オシレータ・クロックを供給
OSMC |= 0x10;

// クロックの供給許可
RTCEN = 1;

// LED0 の設定
PM1_bit.no7 = 0; // 出力モード
P1_bit.no7 = 1; // 消灯

// 100ms 間隔で動作開始
ITMC = 0x8000 + (15000 / 1000) * 100 - 1;

while(1);
}

void intit(void) {
static int count = 0;

if (10 == count) {
P1_bit.no7 = !P1_bit.no7;
count = 0;
} else {
++count;
}
}

この状態でデバッグ・ツールとして RL78 EZ Emulator を選択し、CC-RL (ビルド・ツール) のプロパティからリンク・オプションタブの、デバイス > デバッグ・モニタ領域を設定する を 「はい」にした状態でビルド&デバッグ・ツールへダウンロードを押すと、以前はソースファイルに対してステップオーバー実行などが出来ていたのに、逆アセンブル上でしかできなくなってしまいました。
現在のPC位置を示す黄色くなる行も逆アセンブルにしか表示されず、ソースファイルにはPC位置を示すものも表示されず、アドレス欄も空欄です。
何か設定を変えてしまったのだと思いますが、どこの設定を直せばソースファイル上でのステップオーバー実行ができるでしょうか。

よろしくお願いします。

  • In reply to sol:

    必要な設定が済んだ後に使用を許可するというのは何か難しい話ですか?
  • In reply to sol:

    チョコです。
    追加でコメントします。

    >hwinit 関数でハードウェアに関する初期化をしているのかな、と考えました。
    その通りです。このhdwinitはスタートアップ・ルーチン(cstart.asm)から呼び出されています。アセンブラの時代からhdwinit がハードウェアの初期化を行っています。その名残か、CS+で新しいプロジェクトを作成したときにhdwinit .asmが生成され、_hdwinitという空のサブルーチンが入っています。
    コード生成するとr_systeminit.cの中にhdwinit関数が存在し、そこからR_Systeminit関数を呼び出して、そこで初期化を行っています。

    >R_CGC_Create(); // クロック動作周波数の初期化?
    使用するクロックによって異なります。RL78は、基本的にHOCO(高速内蔵発振クロック)です。その周波数はオプション・バイトで決められます。ここでは、ここでは、クロック発振用端子の設定や高速システムクロックを使うときの処理や、サブシステム・クロックなどをメインに処理しています。

    >R_CGC_Get_ResetSource(); // リセットフラグの取得
    これは、お勧めできません。コード生成でリセット要因の読出しは禁止しておくことを推奨しています。
    これは、コード生成のブービートラップの一部です。R_CGC_Get_ResetSource()関数では、リセット要因をローカル変数にセットしているだけです。この関数から戻ってきた段階でリセット要因レジスタはクリアされてしまっています。(たとえ、ローカル変数の値をグローバル変数に格納しても、その後のスタートアップ・ルーチンで変数領域が初期化されてしまうので意味がありません。
    それよりは、チェックを外して、全部自分で処理するのが正解です。

    >この順番(ポートの値の初期化→ プルアップ抵抗の有効化→ ポートモードの設定)である必要はありますか?

    追加ですが、「プルアップ抵抗の有効化」は最後の方がいいかもしれません。ここでやると、出力ポートで使用するときにHi-Z→ Hi → 正規の出力値となります。Hi-ZをLowと認識すれば、Lowが初期値のときにヒゲが出ます。ただし、プルアップ抵抗をONにしてもすぐにはHiにはならないので、連続した処理では影響は考えなくてもいいですが。

    ついでに、入力ポートに対するビット操作は要注意です。ここらは、マニュアルにも記載されているので、確認してみてください。
  • In reply to チョコ:

    ①、②
     なるほど。
     ここさえ変えれば設定できるように、一応書いてあるみたいな感じですね。


     1. ヒゲというのは、一瞬混じるノイズデータのような意味でしょうか。
     2. 入力モードの状態で入出力ポートへ書き込んだ場合、
      > 転送命令により, 出力ラッチに値を書き込めます。しかし, 出力バッファがオフしていますので, 端子の状態は変化しません。
      > 一度出力ラッチに書き込まれたデータは, もう一度出力ラッチにデータを書き込むまで保持されます。
      > また, リセット信号が発生したときに, 出力ラッチのデータはクリアされます。
      との記述を見つけました。
      この記述が理解できないのですが、出力ラッチと、出力バッファがよく分かっていないからです。
      ・入出力ポートへ書き込み = 入出力ポートのレジスタへ書き込み
      ・ラッチは入力の値を特定のタイミングで保持する回路のこと
      ・入出力ポートのレジスタに書き込まれたデータは、特定のタイミングで出力ラッチにコピーされる
      ・出力バッファ???
      ・出力バッファがONの時は、出力ラッチの値が出力される。
      ・出力バッファがOFFの時は、端子の状態は変化しない。
     ということでしょうか。
     特に出力バッファがよくわかりませんが、出力するかどうかのフラグみたいなものですか?
  • In reply to fujita nozomu:

    先に許可しておいても問題ないのでは?と思ってしまいます…
    もちろん、設定が終わった後に使用を許可するというのも納得しますが。
  • In reply to チョコ:

    > hdwinit, clock, reset
    わかりました。理解できました。

    > port
     Hi-Z とは、何でしょうか…?
     他は分かりました。
     > 出力モードに設定したビットは, プルアップ抵抗オプション・レジスタの設定にかかわらず, 内蔵プルアップ抵抗は接続されません
     との記載があるので、ここは問題ないのかな?と思っていました。

    > 入力ポートに対するビット操作は要注意
     確認して、仕組みも理解できました。
     ありがとうございます。
  • In reply to sol:

    チョコです。
    >特に出力バッファがよくわかりませんが、出力するかどうかのフラグみたいなものですか?
    例えば、P17で見てみます。
    G14のマニュアルの「2.1.8 64ピン(コード・フラッシュ・メモリ16 KB~64 KB)」でP17をみると端子タイプが「8-1-8」となっています。
    そこで、「2.4 端子ブロック図」で、端子タイプ「8-1-8」を見ると、「図2 - 18 端子タイプ8-1-8の端子ブロック図」に記載されています。
    このブロック図の左側の中央から少し上に「出力ラッチ」とかかれた四角があります。これがP17として書き込んだときにデータが書き込まれるレジスタです。

    その右側にP-chとN-chのトランジスタが上下に接続され、真ん中からその右の◎(これが端子を示します)に接続されていますが、この部分が出力バッファです。
    出力ラッチと出力バッファの間は論理回路を介して接続されているので、PM(ポート・モード)レジスタが出力(0)になっていると、出力ラッチに設定された値が端子に出力されます。RL78はトランジスタの数を抑えるために、兼用機能を含めた論理回路になっていますが、基本はPMが0で出力バッファがオンして出力ラッチの値が端子に出力され、PMが1なら出力バッファはオフしているので、端子には出力されません。
    PMレジスタが出力(0)になっているとP17を読むと、右側のセレクタ(台形で示される)を介して出力ラッチの値を読むことができます。(左側のPMSレジスタで制御されるセレクタは安全機能で、PMレジスタの設定によらず、端子の状態を読めるようになっています。通常は右側のセレクタの出力が選択されています。)
  • In reply to sol:

    チョコです。
    >Hi-Z とは、何でしょうか…?
    ハイ・インピーダンスのことです。
    データを出力していないので、入力モードと同義になります。
  • In reply to チョコ:

    ありがとうございました。
    まだまだ回路図は全然読めないですが、出力ラッチの意味については分かりました。
    出力バッファの意味については、なんとなくわかりました。
    このくらい分かれば、なんとなくいいかな、と思っています。
    ありがとうございました!

Top Page [◀◀]  2   3   4   5   6   7   8   9   ... [▶▶Last Page