2012/04/30

[fm3]レジスタ名は大切ね

富士通のFM3を搭載したCQ基板で遊んでいる。
まだ遊ばれているというところではあるが・・・。

 

LPC-2388は、まだなんかわかったような気がしている。
しかし、Cortex-M3になって複雑になったのか、FM3はなんかよくわかっていない。
ドキュメントは日本語があるのだ。
これは大きい!

でも・・なんかわかりにくい。
なんでだろう?
富士通マイコンのドキュメントを読むのが久しぶりなせいか、なんかわかりにくい。

ドキュメントの構成のせいなのか、Cortex-M3が複雑なのか、他に要素があるのか、そこらへんがわかっていない。


ただ、1つだけ。
1つだけ気になったことがあった。
外部割り込みのレジスタ名だ。
いや、レジスタをCソースで扱うためにビットフィールド定義したmb9b610t.hのフィールド名だ。

今回、FeliCa Plugからの割込を受け付けるために、FM3から2つの外部割り込みピンを使おうとしている。
FM3のつくりかCortex-M3のつくりかしらないけど、外部割り込みは0~7chと8~31chの2つに分かれている(アプリケーションノートには8~15chとあったけど、違うチップかしら?)。
0~7chはIRQ4に、8~31chはIRQ5に割り当てられている。

そこまではいい。
気になるのは、C定義だ。

 

IRQ4

typedef struct stc_intreq_irq04mon_field
{
  __IO uint32_t EXTINT0    : 1;
  __IO uint32_t EXTINT1    : 1;
  __IO uint32_t EXTINT2    : 1;
  __IO uint32_t EXTINT3    : 1;
  __IO uint32_t EXTINT4    : 1;
  __IO uint32_t EXTINT5    : 1;
  __IO uint32_t EXTINT6    : 1;
  __IO uint32_t EXTINT7    : 1;
} stc_intreq_irq04mon_field_t;

 

IRQ5

typedef struct stc_intreq_irq05mon_field
{
  __IO uint32_t EXTINT0    : 1;
  __IO uint32_t EXTINT1    : 1;
  __IO uint32_t EXTINT2    : 1;
  __IO uint32_t EXTINT3    : 1;
  __IO uint32_t EXTINT4    : 1;
  __IO uint32_t EXTINT5    : 1;
  __IO uint32_t EXTINT6    : 1;
  __IO uint32_t EXTINT7    : 1;
  __IO uint32_t EXTINT8    : 1;
  __IO uint32_t EXTINT9    : 1;
  __IO uint32_t EXTINT10   : 1;
  __IO uint32_t EXTINT11   : 1;
  __IO uint32_t EXTINT12   : 1;
  __IO uint32_t EXTINT13   : 1;
  __IO uint32_t EXTINT14   : 1;
  __IO uint32_t EXTINT15   : 1;
  __IO uint32_t EXTINT16   : 1;
  __IO uint32_t EXTINT17   : 1;
  __IO uint32_t EXTINT18   : 1;
  __IO uint32_t EXTINT19   : 1;
  __IO uint32_t EXTINT20   : 1;
  __IO uint32_t EXTINT21   : 1;
  __IO uint32_t EXTINT22   : 1;
  __IO uint32_t EXTINT23   : 1;
} stc_intreq_irq05mon_field_t;

 

どっちもEXTINT0からはじまるんかい!!

せめて、IRQ5はEXTINT8から始まるべきだろう。
そうしないと、私みたいにあまりよく見ずに「EXTINT0は1つしかないはずだから、間違ってたらコンパイルエラーになるだろう」と期待している人が馬鹿を見るではないか。

ああ、馬鹿を見たさ・・・。
You look a foolish guy in this site (?).

EXTINTという外部割り込みの先頭は0から始まるべきだろう、という思想なのかもしれないけど、わかりにくい。
(他にも、同じ名前のレジスタがよくある)
ここはビット番号ではなく、機能として表した方がいろいろとよかったんじゃなかろうかね。

0 件のコメント:

コメントを投稿

コメントありがとうございます。
スパムかもしれない、と私が思ったら、
申し訳ないですが勝手に削除することもあります。