2005/04/02

ワンチップマイコン(番外)今後の方針

これも備忘録。
とりあえず今考えてる用途は、PCでステッピングモータを制御すること。
なんだ、そんなの市販のボードを買ってきて差せば良いじゃないかと言われそうだが、考えているのはRS-232C(最終的にはRS-422かUSB2.0辺り)でワンチップマイコンボードと通信をし、ステッピングモータを制御すること。
その場合に概略どの様な動作が必要かをまとめておこう。

1.PCとボード間の通信(コマンド体系の決定:疑似NCコードが良いか?)
2.PCからのコマンドをボード側で解析(例えばX軸を100パルス移動とかをMOV X 100というコマンドとした場合、それを受け取ったボードが認識すること等)
3.コマンドに応じたパルス数分の出力(パルス毎に出力トランジスタのオンオフ(これはドライバICにあわせる))
4.位置決め完了信号をPCへ返送(これもコマンドの返送)
5.その他として原点信号とかリミット信号の確認(割り込み入力が必要か?)

大体、こんなものだろう。

これらに必要な部分だけプログラムを作っていくので、これに関係しないと思われる部分はやらない予定。
何事も落下傘方式で行かなくては最短距離は進めない。時間もないことだし。
とりあえずは「通信」と「モータ駆動」周りを攻めていこうと思う。

| | コメント (0) | トラックバック (0)

2005/03/31

R8C/15Fワンチップマイコン(4)クロック切り替え

これも備忘録
マニュアルを読むと、クロックの扱いが一寸変わっている。
まず、パワーオンリセット後は、オンチップオシレータの8分周クロックがデフォルトになるらしい。
約125KHzだということ。
Xin-Xout端子はP4_6とP4_7と共通だから、ポートをフルに使いたい場合、外部クロックは使えず8MHzが最大になるわけだ。

<ハードウエア・マニュアル 表9.1>
Table9_1

これはかなり遅いけど、省電力用途なのだろうか?Debug時には却って有効?(^^;

次にクロックの切り替えをどうするか、だが、そのためのレジスタがCM0とCM1だ。

<ハードウエア・マニュアル 図9.2 CM0レジスタ>
Table9_2
<ハードウエア・マニュアル 図9.3 CM1レジスタ>
Table9_3

まず、PRCレジスタのビット0をセット(1:書き込み許可)にしてからCMレジスタを書き換えるのを忘れては駄目。
同様に、変更後はリセットして書き込み禁止にもどすのも。
とりあえず、外部クロックに切り替えるプログラムをまとめておこう。

<ここから>

BSET prc0 ;書き込み許可にセット
BSET cm13 ;ポートをXin-Xoutに切り替え
BSET cm15 ;Xin-Xout駆動能力High
BCLR cm05 ;メインクロック発振
BCLR cm16 ;システムクロック分周無し
BCLR cm17 ;同上
BCLR cm06 ;CM16,17の設定を有効に
NOP
NOP
NOP
NOP
BCLR ocd2 ;メインクロック選択
BCLR prc0 ; 書き込み禁止にセット


<ここまで>

このまま貼り付けるのが現実的で簡単そう(^^;

| | コメント (0) | トラックバック (0)

R8C/15Fワンチップマイコン(3)レジスタ関係

これも備忘録

最初にR8CTinyのレジスタ関係をまとめておく
内部レジスタ:
  8ビットレジスタ:R0H,R0L(合わせてR0)
            R1H,R1L(合わせてR1)
 16ビットレジスタ:R0
            R1
            R2
            R3
            A0
            A1
 32ビットレジスタ:R2R0
            R3R1
            A1A0
SFR(Special Function Register):アドレス領域は0h~02FFh
 SFRの例
  [レジスタ]           [シンボル例]  [リセット後の値]
  ポートレジスタ          P1       XXh
  ポート方向レジスタ       PD1      00h
                    (出力:1 入力:0)
  プルアップ制御レジスタ0    PUR      00XX0000b
  プルアップ制御レジスタ1    PUR      XXXXXX0Xb
  ポート駆動能力制御レジスタ DRR      00h
                    (High:1 →15mA  Low:0 →5mA)
  タイマC出力制御レジスタ   TCOUT    00h

フラグレジスタ:(FLG)
  b15:予約
  b14~b12:IPL
  b11~b8:予約
  b7:スタック・ポインタ指定フラグ
  b6:割り込み許可フラグ
  b5:オーバーフローフラグ
  b4:レジスタ・バンク指定フラグ
  b3:サインフラグ
  b2:ゼロフラグ
  b1:デバグフラグ
  b0:キャリーフラグ
  
その他のレジスタ:とりあえず今は省略


続いて、アセンブラの擬似命令(特に変わったものなし。一般的なアセンブラと同じ)

.INCLUDE:ファイルをインクルード
.SECTION:セクションの定義
  使い方:.SECTION 第一オペランド 第二オペランド
       例:.SECTION FIXVECTOR , ROMDATA
第二オペランドの指定は3種類
          CODE:コード領域
          ROMDATA:ROMデータ領域
          DATA:書換可能データ領域
.ORG:アドレス指定
.LWORD:4バイト長のROMDATA
.END:プログラムの終了

とりあえずこれくらいで簡単なプログラムは組めそう。

| | コメント (0) | トラックバック (0)

2005/03/30

R8C/15Fワンチップマイコン(2)HEWの操作

しばらく慣れるまで、何度と無くやり直すと思うので、とりあえず備忘録として書いておこう。
新規ワークスペースを作成する手順。
1.新規プロジェクトワークスペース画面
プロジェクトの種類:Empty Application
  ワークスペース名:作成プログラム名
  ディレクトリ名:適宜指定
  CPU種別:M16C
  ツールチェイン:Renesas M16C Standard
2.ターゲットCPUの指定
  CPU Series:R8C/Tiny
3.RTOS画面
  設定変更無し
4.Target System for Debugging画面
  Target:M16C R8C FoUSB/UART
5.Warningを無視して進む
6.Debugger Option画面
  設定変更無し
7.Summaryの確認
  設定変更無し
8.HEW画面
  「ファイル」→「新規作成」→Document1
9.プロジェクトに追加
  「ファイル」→「名前を付けて保存」
  「ファイル名.a30」(ファイル名はプロジェクト名と同じ)
  右クリック→プロジェクトにファイルの追加
ここからプログラム作成
10.プログラム入力
11.プログラムのビルド
  HEW画面の上部設定
  ビルド:Debug
  セッション:DefaultSession
  「ビルド」→「ビルド」
ここからターゲットボードと接続
12.プログラムのダウンロード
  HEW画面の上部設定
  ビルド:Debug
  セッション:SessionM16C_R8C_FoUSB_UART
13.Init画面
  COMポート:COM1(PCによる)
  ボーレート:38400
  MCUの指定:参照→R8C-TinySeries→R5F21154.MCU
14.実行プログラムのダウンロード
  HEWツリービュー上で「プロジェクト名.x30」ファイルを右クリック→ ダウンロード
終了操作
15.HEWの終了
  セッション:DefaultSessionに変更
  「アプリケーションの終了」

まぁ、慣れたらなんて事無いと思うけど、備忘録ね(^^;

| | コメント (0) | トラックバック (0)

R8C/15Fワンチップマイコン(1)評価ボード

トラ技2005年4月号の付録、R8C/15Fワンチップマイコンを評価すべく、評価ボードを作ってみた。
<出来たボード>
SSCN0287
<とりあえずノートPCとつないだ>
SSCN0289

で、通信も出来ることが確認出来て、プログラムもダウンロード(書き込み)が出来る所まできたのだが、テストプログラムが思うように動かない。
と思ったら、+5Vラインの接触不良と端子8,9,10の配線抜けが発覚。なんたる不覚(^^;
で、なんとかプログラムも動いて、このボードはOKと言うことでよいのか?

ところで、ワークスペースを「新規作成」するとき、トラ技の記事と設定が違うのだけど、スタック領域の設定はどうするのだろう?記事にはなんの説明もない。
この部分が謎だ。
そこで、もう一度「新規作成」でステップを追ってみた、すると新規ワークスペースを作成する時点で、デフォルトは「Application」の設定なのだが、これでは駄目で「Empty Application」にしないといけない事に気付いた。
なるほど。
あと、間違いやすいと言うか忘れやすいことだけど、ダウンロード時のMCUの指定で「R5F21154.MCU」の指定が抜けるとエラーになる。(当然だ)

とりあえず、これでボードがいじれる様になったので、これから色々と試してみよう。

| | コメント (0) | トラックバック (0)