Blog Archives

マイクロマウス研修 割り込みの構成

マイクロマウス研修、今週のレポート担当の江川です。

前回のレポートからだいぶ間があいてしまいましたが、現在はようやく迷路を走らせる段階まで来ています。

さて、今回はそれまで習った中で、「割り込み」がプログラミングの要となっていながら、少々分かりにくいので、これについてまとめてみたいと思います。

Pi:Co Clasicのサンプルプログラムでは、次の5つのタイマーを使っています。

  • CMT0 (コンペアマッチタイマ0) 走行制御 1ms毎の割り込みを発生
  • CMT1 (コンペアマッチタイマ1) センサ制御 1/4ms毎に
  • MTU0 (マルチファンクションタイマパルスユニット2 ) ブザー音
  • MTU3 (マルチファンクションタイマパルスユニット3 ) ステッピングモーター 右
  • MTU4 (マルチファンクションタイマパルスユニット3 ) ステッピングモーター 右

ここでブザー音用MTU0以外には割り込みが設定されており、走行に密接にかかわっています。

マイコンの直接の割り込みはIDEが用意したintprg.cに書かれた関数群に飛んできますが、さらにそこからinterrupt.cに飛んでその中に実際に処理するルーチンを書くようにしているようです。

interrupt.cには、以下のの4つの割り込みルーチンがあります。

  • void int_cmt0(void) 1ms毎に呼び出され、バッテリー監視、加速処理、センサ制御など走行の細かい制御をします。
  • void int_cmt1(void) 1/4ms毎に呼び出され、4つのセンサを各回1つずつ制御し、sen_l,sen_r,sen_fl,sen_frに記録します。
  • void int_mot_r(void) 右モータが1ステップ進む毎に呼び出され、step_rをカウントアップします。
  • void int_mot_l(void) 左モータが1ステップ進む毎に呼び出され、step_rをカウントアップします。

これらと、run.cの走行メインルーチンが協調して実際の走行を行っています。

続きを読む ›

Posted in 研修


マイクロマウス、I/Oの構成

マイクロマウス研修、今週のレポート担当の江川です。

現在、C言語やマイコンの仕組みについて座学が進んでいる所です。

さて、自分はマイコン経験者なので、後々ちょっと変わった事をしてみたく、その基礎調査としてPi:Co Classic 3で使っているI/Oの構成を回路図を読んでまとめてみました。

ブロック図

I/O構成表

カテゴリ
ピン名
D/A
I/O
RX631

モーター制御
motor_EN
Digtal
Output
P1.5

motor_L_PWM
Digtal
Output
PE.2

CW/CCW_L
Digtal
Output
PC.6

motor_R_PWM
Digtal
Output
P1.7

CW/CCW_R
Digtal
Output
PC.5

赤外線LED
SLED_L
Digtal
Output
P5.4

SLED_FL
Digtal
Output
P2.7

SLED_FR
Digtal
Output
PB.5

SLED_R
Digtal
Output
P0.5

センサー入力
AN0
Analog
Input
PE.0

AN1
Analog
Input
PE.1

AN2
Analog
Input
P4.4

AN3
Analog
Input
P4.6

AN4
Analog
Input
P4.2

パネル
SW_L
Digtal
Input
P3.1

SW_C
Digtal
Input
PC.3

SW_R
Digtal
Input
PC.2

LED_0
Digtal
Output
PB.0

LED_1
Digtal
Output
PA.6

LED_2
Digtal
Output
PA.4

LED_3
Digtal
Output
PA.0

BLED_0
Digtal
Output
PB.1

BLED_1
Digtal
Output
PA.3

Buzzer
Digtal
Output
PB.3

 

続きを読む ›

Posted in Pi:Co Classic3 製作記