SRAMメモリーマップThis is a featured page

内臓SRAM   : 4KByte
アドレス領域 : 0x0100 ~ 0x10FF


メモリーアドレス


内容


備考


0x0140 ~ 0x01FF ユーザー定義変数格納領域 第一変数が0x0140から始まっているので、256バイト定義できない
(注1参照)



0x0300 ~ 0x031F サーボ#0 ~#31の指定角度  10~190値
0x0320 ~ 0x033F サーボ#0 ~#31の現在角度 10~190値
0x0340 ~ 0x035F サーボ#0 ~#31の零点データ +-値で格納 (0で補正なし)
0x0360~ 0x037F サーボ#0 ~#31の零点補正とジャイロ加算後の角度 (1~199)
0x0380~ 0x039F サーボ#0 ~#31の方向補正後の角度 この値を元にパルス発生
0x03A0~ 0x03BF サーボ#0 ~#31の速度カウンター 4msごとに(S03C0~)の値をここに加算。キャリーが出たとき(C3E0~)に$FF
0x03C0~ 0x03DF サーボ#0 ~#31の移動速度 初期値=50、(PTPOFF時、SPEED値の$11倍の値)
0x03E0~ 0x03FF サーボ#0 ~#31の角度変更トリガー 0=そのまま、$FF=角度を+-1
0x0400~ 0x041F サーボ#0 ~#31の絶対移動量+1 0x0300~ と 0x0320 の差の絶対値+1
0x0420~ 0x043F サーボ#0 ~#31 AIモータ用



0x04C2 接続確認したI2C(TWI)のスレーブアドレス A1:A0の値、通常=3(外付けEEPROM
0x04C3 ? b7:
b6:
b5:
b4:
0x04C4 パルス幅? 初期値=$3F(63)
0x04C5




0x04C7

0x04C8

0x04C9

0x04CA G8A AIMOTORのON/OFFフラグ ビット指定(1:ON 0:OFF)
0x04CB G8B AIMOTORのON/OFFフラグ ビット指定(1:ON 0:OFF)
0x04CD G8C AIMOTORのON/OFFフラグ ビット指定(1:ON 0:OFF)
0x04CE G8D AIMOTORのON/OFFフラグ ビット指定(1:ON 0:OFF)



0x04D2 STATUS
b7:PTP ALLONフラグ
b6:STOPフラグ
b5:通信コマンド処理中?
b4:BREAKフラグ
b3:BREAK1回目フラグ?
b2:RESETフラグ?
b1:AI信号の出力信号反転フラグ
b0:
初期値=$00



0x04D4 SPEED 値
0x04D6:0x04D5 スタックポインタ値 初期値=$0D02
0x04D7 フェーズNo(0~3) 4msごとにフェーズ切換
0:サーボ0~11処理
1:サーボ12~24処理
2:サーボ24~31処理
3:ジャイロ検出処理
(ジャイロがないときは0~2を繰り返す)



0x04DA PTP SETON/OFF フラグ 1=ON;0=OFF
0x04DB サーボグループ移動量の最大値+1 0x0400~の指定個数中の最大値
0x04DD:0x04DC DELAYカウンター 4msごとに-1、0でDELAY終了
0x04DE DELAY中フラグ $FF=DELAY中
0x04E0:0x04DF SRAM変数アドレス
0x04E1 スクリプトコマンドコード格納
0x04E2 スクリプトサブコマンドコード格納
0x04E3 サーボG8Aの移動完了フラグ ビット指定、移動中0、移動完了1
0x04E4 サーボG8Bの移動完了フラグ ビット指定、移動中0、移動完了1
0x04E5 サーボG8Cの移動完了フラグ ビット指定、移動中0、移動完了1
0x04E6 サーボG8Dの移動完了フラグ ビット指定、移動中0、移動完了1
0x04E7 サーボG8AのDIR値 ビット指定
0x04E8 サーボG8BのDIR値 ビット指定
0x04E9 サーボG8CのDIR値 ビット指定
0x04EA サーボG8DのDIR値 ビット指定
0x04EB サーボG8AのON/OFF状態 ビット指定
0x04EC サーボG8BのON/OFF状態 ビット指定
0x04ED サーボG8CのON/OFF状態 ビット指定
0x04EE サーボG8DのON/OFF状態 ビット指定
0x04EF HIGHSPEEDフラグ
0x04F0 AIMOTORフラグ? b7:AIMOTOR SETONフラグ(1:ON)
b6:?
0x04F1 サーボNo(0~31)
0x04F2 チェックサム上位バイト ファームウェアーの
$0000~$7FFF(64KB)の合計の上位
0x04F3 チェックサム下位バイト ファームウェアーの
$0000~$7FFF(64KB)の合計の下位
0x04F4
b7:タイマー0割り込み処理中フラグ




0x0505 TEMPO 初期値100
0x0506 音の長さカウンター



0x0509:0x0508

0x050A MUSIC ステータス b7:MUSIC演奏中フラグ
b6:MUSIC開始フラグ
b5:
b4:音階が休止符($7F)のとき1
b3:同一音連続フラグ
b2:タイマー1割り込み処理中フラグ
b1:
b0:



0x050E:0x050D MUSICデータアドレス MUSICデータの一番最初の外付けEEPROMアドレス
0x0510:0x050F MUSICデータアドレス 次に演奏するMUSICデータの外付けEEPROMアドレス
0x0511

0x0512 ファームウェアー確認フラグ b7:ブートローダーチェックフラグ(1:OK)

システム起動時にbootloaderの内容の一部とファームウェアーのデータを比較し、正規のプログラムであるかチェックしています。不一致の場合、ユーザプログラムは走りません。

0x0513 タイマー0割り込みカウンター 4msごとに単純に+1されるカウンター(0~255)
内部では使用していないのでユーザで参照・変更自由。
但し、MUSIC演奏中はタイマー0が停止されてしまいます。(サーボ、ジャイロも停止)



0x052D メモリー容量 $40



0x052F ジャイロ使用フラグ b4:0=GWS,1=KRG-1ジャイロ
b3:ジャイロ4使用
b2:ジャイロ3使用
b1:ジャイロ2使用
b0:ジャイロ1使用
0x0530 ジャイロ1の入力パルス値 初期値=44(中心位置)
0x0531 ジャイロ2の入力パルス値 初期値=44(中心位置)
0x0532 ジャイロ3の入力パルス値 初期値=44(中心位置)
0x0533 ジャイロ4の入力パルス値 初期値=44(中心位置)
0x0534~ 0x0553 サーボ#0~#31への適用ジャイロNo
0x0554~ 0x0573 サーボ#0~#31のジャイロ方向 初期値=1
0x0574~ 0x0593 サーボ#0~#31へのジャイロ適用値 初期値=44(中心位置)
0x0594~ 0x05B3 サーボ#0~#31へのGYROSENSE値 初期値=1
0x05B4 ジャイロ適用トリガーカウンター GYROSENSE値を加算してキャリーが出た時、ジャイロ適用値を+-1する。



0x0CFD 外付けEEPROM読込データ一時保管
0x0CEF:0x0CEE BASICプログラムカウンター 初期値=$0010
0x0D02~ BASICスタック領域



0x0E00~ 汎用メモリー領域?




注1)
 マニュアルには「MR-C3000系は、256バイトまでの大きさの変数を使うことができる。」とあるが、
実際には192バイトまでの変数しか定義できない。それ以上の変数を定義しようとすると、
コンパイルエラーになる。(バグの可能性あり?)


Posted Anonymously Latest page update: made by Anonymous , Aug 6 2007, 10:51 PM EDT (about this update About This Update Posted Anonymously Edited anonymously

1 word added
1 word deleted

view changes

- complete history)
Keyword tags: SRAM (edit keyword tags)
More Info: links to this page

Anonymous  (Get credit for your thread)


There are no threads for this page.  Be the first to start a new thread.