SlideShare ist ein Scribd-Unternehmen logo
1 von 124
Downloaden Sie, um offline zu lesen
マイコン・ロボット実習
2005年10月3日~ 7日
Takehiko YOSHIDA
マイコンロボット『ワクチン君』を使用したマイコン制御実習
実習スケジュール
• 1日目 (月)
概要説明
プログラム開発環境構築
単純なモータ制御
• 2日目 (火)
ライン検知処理
高度なモータ制御 (PWM制御)
• 3日目 (水)
敵(障害物)検知処理
実習スケジュール
• 4日目 (木)
割り込み処理
相撲プログラム作成実習(1)
• 5日目 (金)
相撲プログラム作成実習(2)
まとめ(報告資料作成)
ワクチンくん
マイコン内臓の自律型ロボット
ワクチンくんの概要
• モータ × 2
⇒ 前進、後退、旋回など
• 底面赤外線センサ × 4
⇒ ライン(白黒)検知
• 前面赤外線センサ × 2
⇒ 障害物検知
マイコン(MPU)
• 汎用(パソコン向け)マイコン
– Intel社 Pentium
– Motorola社 / IBM社 PowerPC
• 組込用マイコン
– 日立製作所 SH-3、SH-4
– ルネサステクノロジ(旧日立) H8
– ARM社 ARM9
– Microchip Technology社 PIC
マイコンの比較
汎用マイコン
• 高速処理
• 大メモリ容量
• 高消費電力
組込み向けマイコン
• 低消費電力
• 低価格
• 耐環境特性
温度特性、耐ノイズ
• 多機能
時計、A/Dコンバータ、
シリアル通信回路
PICの特徴
• RISC
• ハーバード・アーキテクチャ
• ROM/RAM内臓
RISC(縮小命令セットコンピュータ)
⇔ CISC(複合命令セットコンピュータ)
個々の命令を簡略化することによりパイプライン処理の効率
を高め、処理性能の向上をはかる。
・ 命令数が少ない。 (PIC16F84の場合、35命令)
・ 命令語長が一定。 (PIC16F84の場合、14ビット)
ノイマン・アーキテクチャ ハーバード・アーキテクチャ
CPU
CPUメモリ
(プログラム/データ)
データバス
プログラムメモリ
データメモリ
プログラムバス
データバス
例) Texas Instruments社 DSP
メモリアーキテクチャ (PIC16F84)
• プログラムメモリ
フラッシュ 1Kword
• データメモリ
RAM 68byte
EEPROM 64byte
フラッシュROM
• 電気的に内容を書き換えることが出来る
ROM
• 専用の書込器(ROMライター)が必要
(参考)
・ マスクROM : 工場製造時に書込み
・ UVPROM : 紫外線消去型
・ EEPROM
その他のPICの特徴
• 広範な動作電圧 ・・・ 2V~6Vで動作
• I/O ・・・ LED直接駆動可能な容量
入出力プログラマブル
• 開発環境 ・・・ 統合開発環境(アセンブラ、
シミュレータ)が無償提供
マイコンロボット実習
第1部
単純なモータ制御の方法
モーター制御 (PART1)
• I/O書き込みによるモータ駆動方法
• ウェイト・ループによる
ロボットの動きの時間制御方法
学習のポイント
1 ;***************************************
2 ; SAMPLE PROGRAM
3 ; source file : spin.asm
4 ; function : only right spin
5 ; author : Yoshida Takehiko
6 ; date : 2002.3.11
7 ;***************************************
コメント文
; (セミコロン)の後に記述した
文はコメントとして解釈される。
ソースコードの先頭には、『機能』や『作者』 、 『日付』を記述したコメントを
記述するように心がけましょう。
9 list p=16f84, f=INHX8M
10 #include p16f84.inc
11
12 __CONFIG _CP_OFF & _WDT_OFF & _PWRTE_OFF & _XT_OSC
おまじない (1) プロセッサの型名: “16F84” と
出力形式 : “INTEL HEX 8ビット”
を指定する。
インクルード・ファイルの指定
コンフィグレーション・ビットの指定
コードプロテクト:OFF, ウォッチドックタイマ:OFF
パワータイマイネーブル:OFF, オシレータ:XT
おまじない (2)
14 ORG H'00' ; reset vector
15 goto INIT
リセット・ベクタの設定
パワーオン・リセット “00” が発生したら
ラベル “INIT” へジャンプしなさい。
おまじない (3)
18 INIT
19 ; --- Initilize PORT A & B ---
20 clrf PORTA ; clear Port A latch
21 clrf PORTB ; clear Port B latch
22 bsf STATUS,RP0 ; switch BANK 0 -> 1
23 movlw B'11100000' ; 0:Output / 1:Input
24 movwf TRISA ; set I/O Port A
25 movlw B'11110011' ; 0:Output / 1:Input
26 movwf TRISB ; set I/O Port B
27 bcf OPTION_REG,7; set Pull-up of Input B Port
28 bcf STATUS, RP0 ; switch BANK 1 -> 0
I/Oポートの初期化 (入出力設定/プルアップ設定)
おまじない (4)
30 ; --- Initilize Device ---
31 movlw B'00000000' ; stop motor
32 movwf PORTA ; write to PORT A
33 movlw B'11110011' ; off front LED
34 movwf PORTB ; write to PORT B
デバイス(I/Oポート出力)の初期化
(モータ停止 / LED消灯)
ウェイト・ループ
37 MAIN
38 ; --- idle wait loop ---
39 movlw D'10'
40 movwf H'13
<< 途中省略 >>
53 nop
54 decfsz H'13', F
55 goto LOOP3
(意味のないループを回すことで)
時間稼ぎ
実質的なプログラム開始点
実習でプログラムを書換えるときは
“MAIN”以降を編集すること。
モータ制御
58 ; --- Control Motor ---
59 movlw D‘05’
60 movwf PORTA
wレジスタに値“05”を代入す
る
wレジスタの内容を“PORTA”
に書き込む
『 movlw 』 命令の説明
Move Literal to W-registerの略
リテラル(ある特定の値)をWレジスタに代入する。
Wレジスタ=値を格納する入れ物(PICには一つしかない)
0
5
Wレジスタ
Movlw D’05’ を実行
例えば
数値の表記法
進数 表記 例
2進数
B’~’
~b
B’01001101’
1001101B
8進数 O’~’ O’115’
10進数
D’~’
.~
D’77’
.77
16進数
H’~’
0x~
~h
H’4D’
0x4D
4Dh
文字(ASCII)
A’~’
’~’
A’M’
’M’
~b 01001101B
.~ .77
0x~
~h
0x4D
4Dh
’~’ ’M’
『 movwf 』 命令の説明
Move W-register to F-registerの略
Wレジスタの内容をFレジスタに書き込む。
Fレジスタ は PICの中に複数ある。
『 PORTA』という名前を指定することで区別する。
5
5
Wレジスタ
Movwf PORTA を実行
0
5
Fレジスタ
PORTA
後始末
63 goto $ ; Infinite Loop
64
65 END
アセンブラに対して、ソースコードの
「おしまい」を教える。
※プログラムがここで止まるわけではない
ので注意!!
自分自身(63行目から63行目)へジャンプ
=プログラマの意図しない
「遠い彼方」へジャンプすることを防止する。
58 ; --- Control Motor ---
59 movlw D‘05’
60 movwf PORTA
ここまでのまとめ
問:PORTAに直接、値5を書き込めないのか?
答:書き込めません。
PICでは、基本的に 『W(ワーキング)レジスタ』 を
中心に、値の読み書きや演算(加減算など)、
比較を行なわなければなりません。
I/Oポートの説明
RA0
10進数の “5” = 2進数の “0101”
RA1
RA2
RA3
⇒ High
1010ポートA
(PORTA)
⇒ Low
⇒ High
⇒ Low
右輪
左輪
端子 電位
マイコン・ロボット(ワクチン君)内部
マイコン(PIC)のピン配列
1
2
3
4
5
6
7
8
9 10
11
12
13
14
15
16
17
18
VDDVSS
OSC1
OSC2MCLR
RA0
RA1RA2
RA3
M
モータ駆動(ブリッジ)回路
Low
LowHigh
Low
Low
High
後退
RA0
RA0
RA1
RA1
0
PORTA
0 1
M
モータ駆動(ブリッジ)回路
LowLow
LowLow High
High
前進
RA0
RA0
RA1
RA1
0
PORTA
01
モータ駆動とポートAの値の関係
左輪 右輪 2進数 16進数
停止 停止 B’0000’ H’00’
停止 後退 B’0001’ H’01’
停止 前進 B’0010’ H’02’
前進 停止 B’0100’ H’04’
後退 停止 B’1000’ H’08’
後退 前進 B’1010’ H’0A’
前進 後退 B’0101’ H’05’
前進 前進 B’0110’ H’06’
後退 後退 B’1001’ H’09’
ウェイト・ループの説明
45 movlw D'255‘
46 movwf H'11‘
47 LOOP1
48 decfsz H'11', F
49 goto LOOP1
50 nop
Wレジスタに値“255”を代入する。
Wレジスタの値をアドレス11に
書き込む。
ラベル:goto文のジャンプ先
条件文(分岐命令)
LOOP1へジャンプ
何もしない。 (No Operation)
『 movlw D’255’ 』 の説明
255(10進表記)をWレジスタに代入。
なぜ D‘255’ ?
Wレジスタのサイズは8ビット
8ビットで表現できる最大値は B‘11111111’
= D‘255’
『 movwf H’11’ 』 の説明
Wレジスタの内容をFレジスタに書き込む。
Fレジスタは、H‘00’~H‘4F’番地
の80個(80バイト)
但し、H‘00’~H‘0B’は、特別な用途に予約
実は、H‘05’番地の別名が 『PORTA』
『 decfsz H'11', F 』 の説明
Fレジスタ(11番地)の内容を‘-1’(デクリメント)
Decrement F-register, Skip if Zero の略
Fレジスタの内容が0ならば、
次の命令(行)をスキップ
ウェイト・ループの説明
45 movlw D'255‘
46 movwf H'11‘
47 LOOP1
48 decfsz H'11', F
49 goto LOOP1
50 nop
255
255
254 ≠0253 ≠0252 ≠03 =0210
ウェイト・ループの入れ子構造
42 movlw D'255'
43 movwf H'12'
44 LOOP2
<< LOOP1 >>
54 decfsz H'12', F
55 goto LOOP2
56 nop
ウェイト・ループの時間調整
• Fレジスタ(××番地)の初期値を変える。
利点:微妙な時間調整が可能
欠点:大きな(256倍以上)調整が不可
• ループの階層を増やす/減らす。
利点:大きな(256倍以上)調整が不可
欠点:微妙な時間調整が不可能
2つの方法の利点を組み合わせて、
適切な時間調整を行う。
本日の課題
• 机の上に、消しゴムや筆箱などの障害物を
置いて適当なコースを作り、そのコースを
いち早く駆け抜けるプログラムを作る。
<< ポイント >>
1.モータ駆動制御を操り、
前進、後退、旋廻などをおこなう。
2.ウェイト・ループを調整することで、
適切なタイミングで、ロボットの動きを操る。
マイコンロボット実習
第2部
単純なセンサー検知の方法
センサー検知 (PART1)
• I/O読み込みによる底面光センサの
検出方法
• 条件分岐命令による動作制御
• ポーリング処理
学習のポイント
検知センサーのしくみ
底面センサー回路図
HighLow
黒 High
白 Low
論理の逆転
(負論理)に注意!!
フォトレフレクタ
(広義の)フォトカプラ
マイコン(PIC)のピン配列
1
2
3
4
5
6
7
8
9 10
11
12
13
14
15
16
17
18
VDDVSS
OSC1
OSC2MCLR
RA0
RA1RA2
RA3
RB4
RB5
RB6
RB7
前
I/Oポートの説明
⇒ RB4
⇒ RB5
⇒ RB6
⇒ RB7
Low
ポートB
(PORTB)
High
High
High
端子電位
左前:白
左後:黒
右後:黒
右前:黒
0111
LSBMSB
Bit 4Bit 5Bit 6Bit 7
サンプルコード説明
1 ;***************************************
2 ; SAMPLE PROGRAM
3 ; source file : detect.asm
4 ; function : detect one bottom sensor
5 ; author : Yoshida Takehiko
6 ; date : 2002.3.13
7 ;***************************************
8
9 list p=16f84, f=INHX8M
10 #include p16f84.inc
11
12 __CONFIG _CP_OFF & _WDT_OFF & _PWRTE_OFF & _XT_OSC
定数の定義
15 ;--- define constants ---------
16 COUNTER1 equ 0x11
17 COUNTER2 equ 0x12
18 COUNTER3 equ 0x13
19 ;--- define constants <END> ---
メモリアドレス値を直接記述すると紛らわしいので
文字列を別名として定義する。
サンプルコード説明
22 ORG H'00' ; reset vector
23 goto INIT
24
25
26 INIT
27 ; --- Initilize PORT A & B ---
28 clrf PORTA ; clear Port A latch
29 clrf PORTB ; clear Port B latch
30 bsf STATUS,RP0 ; switch BANK 0 -> 1
31 movlw B'11100000' ; 0:Output / 1:Input
32 movwf TRISA ; set I/O Port A
33 movlw B'11110011' ; 0:Output / 1:Input
34 movwf TRISB ; set I/O Port B
35 bcf OPTION_REG,7; set Pull-up of Input B Port
36 bcf STATUS, RP0 ; switch BANK 1 -> 0
37
38 ; --- Initilize Device ---
39 movlw B'00000000' ; stop motor
40 movwf PORTA ; write to PORT A
41 movlw B'11110011' ; off front LED
42 movwf PORTB ; write to PORT B
おまじない
(初期化)
サブルーチン呼び出し
44 ; --- idle wait loop ---
45 call WAIT
サブルーチン呼び出し(コール)
呼び出し(ジャンプ)先から “return”命令で戻る。
※ “goto”命令はジャンプしたまま(戻ってこない)。
電源ON直後は不安定なので、必ずWAIT(待ち)を
入れてから、動き出すようにプログラムしましょう。
ウェイト・サブルーチンの説明
66 ;-----------
67 ; Idle Wait
68 ;-----------
69 WAIT
70 movlw H'0A'
71 movwf COUNTER3
<< 途中省略 >>
85 decfsz COUNTER3, F
86 goto LOOP3
87 return
“spin.asm” と同じ
ウェイト・ループ
ループ・カウンタの初期値を
変えることで、待ち時間を調整。
アドレスをH’13’と直接指定する
代わりに“COUNTER3”と書く。
呼び出し元の“call”命令に戻る。
47 MAIN
48
49 ; --- check bottom sensors ---
50 btfss PORTB, 4 ; check “FRONT LEFT”
51 goto RIGHT_TURN ; go to RIGHT_TURN
52 goto LEFT_TURN ; go to LEFT_TURN
I/Oポートのビットによる分岐
プログラムの『実質的な』開始位置
PORTBの“4thビット”をテスト
ラベル “RIGHT_TURN” へ
ラベル “LEFT_TURN” へ
『 btfss PORTB, 4 』 命令の説明
Bit Test F-register, Skip if Setの略
第1オペランド:Fレジスタのアドレス(または別名)
第2オペランド:テストするビットの位置
0
ポートB
(PORTB)
LSBMSB
Bit 4Bit 5Bit 6Bit 7 Bit 3 Bit 2 Bit 1 Bit 0
[クリア] 次の命令を実行
1 [セット] 次の命令をスキップ
47 MAIN
48
49 ; --- check bottom sensors ---
50 btfss PORTB, 4 ; check "FRONT LEFT"
51 goto RIGHT_TURN ; go to RIGHT_TURN
52 goto LEFT_TURN ; go to LEFT_TURN
ビット・テストによる分岐
IF 左前センサ = “1”(非検知)
左前センサをテスト
IF 左前センサ = “0”(検知)
問:なぜ “call”命令ではなく
“goto”命令を使うの?
答:“call”では、returnで戻り、
いつも “LEFT_TURN” へ飛ぶ
54 RIGHT_TURN
55 ; --- Control Motor (1) ---
56 movlw B'00000100' ; Left=Forward, Right=Stop
57 movwf PORTA ; write to PORT A
58 goto MAIN
59
60 LEFT_TURN
61 ; --- Control Motor (2) ---
62 movlw B'00000010' ; Left=Stop, Right=Forward
63 movwf PORTA ; write to PORT A
64 goto MAIN
ビット・テストによる分岐
左輪=前進で右旋回
右輪=前進で左旋回
プログラム全体の構成
左前センサ
テスト
右旋回 左旋回
白線あり 白線なし
ポーリング
課題
• 4つ全ての底面(白線検出)センサの
検出条件を利用し、ロボットが土俵から
落ちないように制御する。
<< ポイント >>
1.各々のセンサが検出したとき、どのような
動きをさせれば、落ちないか考える。
(註)二つ以上同時検出する場合は考えない。
2.プログラムがポーリング処理となるように、
常に先頭に戻り、同じ処理を繰り返す。
マイコンロボット実習
第3部
高度なモータ制御の方法
モーター制御 (PART2)
• モータのスピード(トルク)調整
⇒ PWM制御方式
• CPUサイクル(クロック)の理解
学習のポイント
サンプルコード説明
1 ;***************************************
2 ; SAMPLE PROGRAM
3 ; source file : slowturn.asm
4 ; function : PWM Control
5 ; author : Yoshida Takehiko
6 ; date : 2002.3.14
7 ;***************************************
=== 48行目まで省略 ===
メイン・ルーチンの説明
49 MAIN
50 call FORWARD
51
52 call WAIT100
53
54 call RIGHT_TURN
55
56 call WAIT100
57
58 goto MAIN
“FORWARD” へ
“WAIT100” へ
“RIGHT_TURN”へ
“WAIT100” へ
“MAIN” へ戻る
FORWARDルーチンの説明
62 FORWARD
63 ; --- Control Motor ---
64 movlw B'00000110‘
65 movwf PORTA
66 return
右輪:前進
左輪:前進
⇒ ロボット:直進
RIGHT_TURNルーチンの説明
69 RIGHT_TURN
70 ; --- Control Motor ---
71 movlw B'00000100‘
72 movwf PORTA
73 return
右輪:停止
左輪:前進
⇒ ロボット:右旋回前進
WAIT100ルーチンの説明
102 ; --- wait 100 micro sec (250cycle) ---
103 WAIT100
104 movlw H'52'
105 movwf COUNT
106 nop
107 LOOP100
108 decfsz COUNT, F
109 goto LOOP100
110 return
CPUサイクル
PICの場合
 movlw、movwf、nop など 一般の命令
⇒ 実行時間 = 1cycle
 goto、call、return など 無条件ジャンプ命令
⇒ 実行時間 = 2cycle
 btfss、btfsc、decfsz など 条件分岐命令
分岐(スキップ)なし ⇒ 実行時間 = 1cycle
分岐(スキップ)あり ⇒ 実行時間 = 2cycle
CPUサイクルの計算
 LOOP100の場合、250Cycle
 このマイコンは 2.5MHz で動作
1[sec] / 2.5×106
[Hz] = 400×10-9
[sec/cycle]
= 400 [nsec/cycle]
400×10-9
[sec/cycle]×250[cycle] = 100×10-6
[sec]
= 100 [μsec]
モーター駆動
右輪
左輪
High
High
Low
Low
回る、回る、回る、・・・
回 止 回 止 回
パワー50%OFF
PWM(Pulse Width Modulation)
PWM:一定周期、一定振幅のパルスの幅
(ON/OFF比)を変えることにより、
出力を制御する方法
ON/OFF周期は、短くても長くても関係ないか?
⇒ 極端に短い周期では、回路(素子)の駆動が間に合わない。
⇒ 極端に長い周期では、なめらかな回転(走行)にならない。
周期(=可聴周波数)によっては、モータやギアがうなる。
課題
• 白線検知とPWM制御を組み合わせて、
速度を抑えた制御をおこなう。
⇒ 相撲プログラムとしては、これで80%の仕上り
<< ポイント >>
1.白線検知とPWM制御を、いかに同一の
ループ(ポーリング)処理におさめるか。
2.相撲ロボットらしく、土俵の中を
探し回るような動きになれば、Good!
マイコンロボット実習
第4部
高度なセンサー検知の方法
センサー検知(PART2)
• センサーの感度調整
⇒ タイマ(ウェイトループ)を利用した
積分検知方式
学習のポイント
検知センサーのしくみ
障害物(前面)センサー回路図
左:RA2
右:RA3
左:RA0
右:RA1
コンデンサ
入力ポートの電位
時間
電位
反射光なし ←|→ 反射光あり
コンデンサ保持 さらに光が弱い
センサ入力の積分処理の利点
• 微小な信号を時間軸で足し合わせることで、
感度を上げたり、ノイズの影響を打ち消す
ことができる。
• 積分する時間を変えることで、センサの
感度を調整できる。
サンプルコード説明
1 ;***************************************
2 ; SAMPLE PROGRAM
3 ; source file : follow.asm
4 ; function : front sensor
5 ; author : Yoshida Takehiko
6 ; date : 2002.4.1
7 ;***************************************
=== 49行目まで省略 ===
媒介変数の初期化
50 ; --- clear MOTOR ---
51 movlw B'00000000‘
52 movwf MOTOR
媒介変数 “MOTOR” の初期化
前面LEDの消灯
55 MAIN
56 ; --- Light OFF Front LED ---
57 movf PORTB, W
58 andlw B'11110011‘
59 movwf PORTB
“PORTB” を “W” へ
B’11110011’AND “W”
“W” を “PORTB” へ
『 movf 』 命令の説明
Mov F-registerの略
※ mov(コピー) 命令としては無意味。
但し、Fレジスタがゼロor 非ゼロでゼロ・フラグが変化する。
movf H‘20’, F ; 20H番地から20H番地へコピー
第1オペランド:コピー元アドレス (Source)
第2オペランド:コピー先 (Destination) [W|F]
『 andlw B‘11110011’』 命令の説明
And Literal with Wの略
XXXXW X X X X
LSBMSB
1111Literal 0 0 1 1
Bit 4Bit 5Bit 6Bit 7 Bit 3 Bit 2 Bit 1 Bit 0
XXXXW 0 0 X X
AND (論理積)
=
『 movwf 』 命令の説明
Move W-register to F-registerの略
Wレジスタの内容をFレジスタに書き込む。
B ‘XXXX00XX’
B ‘XXXX00XX’
Wレジスタ
Movwf PORTB を実行
B ‘XXXXXXXX’
B ‘XXXX00XX’
Fレジスタ
PORTB
コンデンサ放電のためのウェイト
61 call WAIT100
62 call WAIT100
63 call WAIT100
64 call WAIT100
65 call WAIT100
LED消灯(反射光なし)を一定時間保ち、
検知なし(コンデンサ放電)状態にする
前面LEDの点灯
67 ; --- Light ON Front LED ---
68 movf PORTB, W
69 iorlw B'00001100' ; LIGHT ON Front LED
70 movwf PORTB ; write to PORT B
“PORTB” を “W” へ
B’00001100’ OR “W”
“W” を “PORTB” へ
『 iorlw B‘00001100’』 命令の説明
Inclusive Or Literal with Wの
略
XXXXW X X X X
LSBMSB
0000Literal 1 1 0 0
Bit 4Bit 5Bit 6Bit 7 Bit 3 Bit 2 Bit 1 Bit 0
XXXXW 1 1 X X
OR (論理和)
=
コンデンサ放電のためのウェイト
72 call WAIT10
73 call WAIT10
74 call WAIT10
75 call WAIT10
76 call WAIT10
77 call WAIT10
反射光検知による電圧降下を待つ。
媒介変数の初期化
79 ; --- clear MOTOR ---
80 movlw B'00000000‘
81 movwf MOTOR
媒介変数 “MOTOR” の初期化
PORTB(前面センサ)の読み取り
83 ; --- read EYES ---
84 movfw PORTB ; PORT B -> W
85 movwf EYES ; W -> EYES
“PORTB”(前面センサ)の値を“EYES”に格納
左目の検出有無による分岐
87 ; --- check Left EYE ---
88 movlw B'00000000' ; Left=Stop, Right=Stop
89 btfss EYES, 0
90 movlw B'00000010' ; Left=Stop, Right=Forward
91 iorwf MOTOR, F
If (Bit 0 = 0) then w = 00000010
If (Bit 0 = 1) then w = 00000000
MOTOR = MORTOR || W
右目の検出有無による分岐
93 ; --- check Right EYE ---
94 movlw B'00000000' ; Left=Stop, Right=Stop
95 btfss EYES, 1
96 movlw B'00000100' ; Left=Forward, Right=Stop
97 iorwf MOTOR, F
If (Bit 0 = 0) then w = 00000100
If (Bit 0 = 1) then w = 00000000
MOTOR = MORTOR || W
媒介変数(MOTOR)をポートBへ反映
99 ; --- Control Motor ---
100 movfw MOTOR ; MOTOR -> W
101 movwf PORTA ; write to PORT A
102
103 goto MAIN ; go to the Top of Program
MOTORの値をポートBへ書き込み、
モータを駆動する。
プログラム作成
• 相撲プログラムの作成
白線検出による土俵ワレ回避ロジック
敵検出による攻撃(押出し)ロジック
土俵を動き回って敵を探す索敵ロジック
マイコンロボット実習
第5部
割込み処理
割込み処理
• 割込み処理の理解と実装
学習のポイント
割込みの種類
ソフトウェア割込み
ハードウェア割込み
CPU外部からの要因で発生
CPU内部からの要因で発生
例)割込命令、ゼロ除算、ページフォルト
『割込み』とは
何か仕事をしている
最中に電話が
掛かってきました。
さて、どうしますか?
ポイント
• 2つ以上の処理を同時に実行できない。
• 割込みの原因が外部にある。
⇒いつ、どこで割込みが発生するか分からない。
• 割込む処理を出来るだけ速やかに
着手する。
• 中断した処理を確実に再開する。
割込み処理の流れ
割込み発生
戻り番地の退避
0004H番地へジャンプ
レジスタの退避
割込禁止(GIEビットのクリア)
割込ビットのセット
割込処理本体
割込ビットのクリア
レジスタの復帰
割込許可(GIEビットのセット)
RETFIE命令
割込前の処理に復帰
割込み処理の準備
• ハードウェアが正しく結線されている
• 4番地から始まる割込み処理がある
• INTCONレジスタのGIEビットがONである
• INTCONレジスタの割込み要因毎の
許可ビットがONである
サンプルコード説明
1 ;***************************************
2 ; SAMPLE PROGRAM
3 ; source file : intrpt.asm
4 ; function : interrupt function
5 ; author : Yoshida Takehiko
6 ; date : 2002.4.12
7 ;***************************************
8
=== 25行目まで省略 ===
割込みベクター初期化
19 ORG H'00' ; reset vector
20 goto INIT
21
22 ORG H'04' ; interrupt vector
23 goto INTRPT
割込みが発生したときに実行する命令
(へのジャンプ先)を設定する。
媒介変数の初期化
43 ; --- clear MOTOR ---
44 movlw B'00000000‘
45 movwf MOTOR
媒介変数 “MOTOR” の初期化
割り込み処理の設定
47 ; --- set interrupt ---
48 bcf INTCON, RBIF
49 bsf INTCON, RBIE
50 bsf INTCON, GIE
割り込みの設定
『INTCON』割込設定のための特殊なレジスタ
メイン・ループ
52 MAIN
53 ; --- Control Motor ---
54 movfw MOTOR ; MOTOR -> W
55 movwf PORTA ; write to PORT A
56
57 goto MAIN
割り込み処理
59 INTRPT
60 ; --- push register ---
61 movwf STACK_W ; push Wreg
62 swapf STATUS, W
63 movwf STACK_S ; push STATUS reg
レジスタの退避
『Wレジスタ』と『STATUSレジスタ』の値(内容)を
“STACK_W”と“STACK_S”に保存する。
ポートB (PORTB) を参照
65 ; --- Read Sensor Status ---
66 movf PORTB, W
割り込みが発生したことで分かることは、
監視しているポート(PORTB)の値(bit)が
変化したことだけ。
媒介変数 MOTOR のビット反転
68 ; --- Change MOTOR value ---
69 movlw B'00000110‘
70 xorwf MOTOR, F
『 xorlf B‘00000110’』 命令の説明
eXclusive OR Literal with Fの略
0000W 0 0 0 0
LSBMSB
0000Literal 0 1 1 0
Bit 4Bit 5Bit 6Bit 7 Bit 3 Bit 2 Bit 1 Bit 0
0000W 0 1 1 0
XOR (排他的論理和)
=
『 xorlf B‘00000110’』 命令の説明
eXclusive OR Literal with Fの略
0000W 0 1 1 0
LSBMSB
0000Literal 0 1 1 0
Bit 4Bit 5Bit 6Bit 7 Bit 3 Bit 2 Bit 1 Bit 0
0000W 0 0 0 0
XOR (排他的論理和)
=
割込フラグのクリア
72 ; --- Clear RB Interrupt Flag ---
73 bcf INTCON, RBIF
次の割込処理(割込トリガ)を
受入れるための準備
割り込み処理の後始末
75 ; --- pop register ---
76 swapf STACK_S, W
77 movwf STATUS
78 swapf STACK_W, F
79 swapf STACK_W, W
80 retfie
レジスタの復帰
『Wレジスタ』と『STATUSレジスタ』の値(内容)を
“STACK_W”と“STACK_S”から復帰する。
割込処理実行直前の命令へ戻る
マイコンロボット実習
第5部
タイマ処理
割込み処理
• タイマの使い方の理解
学習のポイント
タイマとは
• 時間を計る周辺装置
• CPUサイクル毎にカウントアップする
カウンタ
• カウンタがオーバーフローするたびに
割込みを発生させることが出来る。
タイマ0
• PIC16F84に内蔵されているタイマは
『タイマ0』の一個だけ
• タイマ0のサイズは8ビット
⇒数えられる数は、0~255
255を超えると、オーバーフローして
0に戻る
タイマの限界
• 単純にCPUの命令サイクルを数えるだけ
だと、2.5MHzで動作する場合
タイマの(オーバーフロー)周期
=(1/(周波数))*4 * タイマサイズ
=(1/(2.5*106)) * 4 * 256
=409.6*10-6 [sec] ≒ 400 [μsec]
1
長い時間を計るためには?
• 解1:タイマのサイズを大きくする
⇒ 8ビット ⇒ 16ビット ⇒ 32ビット
回路が複雑になり、コストがかさむ
長い時間を計るためには?
• 解2:分周する
複数サイクル毎にカウントアップさせる。
例えば、2サイクル毎に1カウントアップ
4サイクル毎に1カウントアップ
↓
256サイクル毎に1カウントアップ
プリスケーラ
• OPTION_REGの 0th~2th ビットで設定
2th 1th 0th スケール値
0 0 0 1:2
0 0 1 1:4
0 1 0 1:8
--- 途中省略 ---
1 1 1 1:256
プリスケーラによる拡張
スケール値 1:2のとき
400 [μsec] * 2 = 800 [μsec]
スケール値 1:256のとき
400 [μsec] * 256 = 102400
[μsec]
≒ 100 [msec]
その他のタイマの使い方
• 周波数カウンタ
TOCKIピンに入力される信号の
High/Lowの回数を数える。
※信号の立ち上がり/立ち下がり
どちらでカウントアップするか設定できる
信号の模式図
High
Low
時間
立ち上がり 立ち下がり
ウォッチドッグ・タイマ(WDT)
• 番犬
• システムの健全動作をチェックする
• WDTがオーバーフローすると
マイコンがリセットされる
WDTの使い方
• ユーザプログラムは定期的に
CLRWDT命令を実行してWDTをクリアす
る
• 万一、プログラムが暴走した場合は、CLR
WDT命令が実行されないため、WDTが
オーバーフローしてリセットが掛かる

Weitere ähnliche Inhalte

Was ist angesagt?

4章 Linuxカーネル - 割り込み・例外 4
 4章 Linuxカーネル - 割り込み・例外 4 4章 Linuxカーネル - 割り込み・例外 4
4章 Linuxカーネル - 割り込み・例外 4mao999
 
DE0でラジコンカー作ってみた 関西de0 fpga勉強会20120519
DE0でラジコンカー作ってみた 関西de0 fpga勉強会20120519DE0でラジコンカー作ってみた 関西de0 fpga勉強会20120519
DE0でラジコンカー作ってみた 関西de0 fpga勉強会20120519Yasuhiro Ishii
 
Stellaris を使った組み込みアプリ開発ガイド
Stellaris を使った組み込みアプリ開発ガイドStellaris を使った組み込みアプリ開発ガイド
Stellaris を使った組み込みアプリ開発ガイドryos36
 
Wiresharkで検出できないチャットプログラム
Wiresharkで検出できないチャットプログラムWiresharkで検出できないチャットプログラム
Wiresharkで検出できないチャットプログラムShinichi Hirauchi
 
プロセスとコンテキストスイッチ
プロセスとコンテキストスイッチプロセスとコンテキストスイッチ
プロセスとコンテキストスイッチKazuki Onishi
 
Windowsのパケットモニタ作成
Windowsのパケットモニタ作成Windowsのパケットモニタ作成
Windowsのパケットモニタ作成Shinichi Hirauchi
 
プログラミング実習
プログラミング実習プログラミング実習
プログラミング実習openrtm
 
RTミドルウェアによるロボットプログラミング技術 3. RTMによるプログラミング
RTミドルウェアによるロボットプログラミング技術 3. RTMによるプログラミングRTミドルウェアによるロボットプログラミング技術 3. RTMによるプログラミング
RTミドルウェアによるロボットプログラミング技術 3. RTMによるプログラミングNoriaki Ando
 
機械語の動作トレース による処理装置のはたらきの説明スライド
機械語の動作トレース による処理装置のはたらきの説明スライド機械語の動作トレース による処理装置のはたらきの説明スライド
機械語の動作トレース による処理装置のはたらきの説明スライドseastar orion
 
Fpgaでの非同期信号の扱い方とvivadoによるサポート(公開用)
Fpgaでの非同期信号の扱い方とvivadoによるサポート(公開用)Fpgaでの非同期信号の扱い方とvivadoによるサポート(公開用)
Fpgaでの非同期信号の扱い方とvivadoによるサポート(公開用)marsee101
 
StackExchangeで見たシステムプログラミング案件
StackExchangeで見たシステムプログラミング案件StackExchangeで見たシステムプログラミング案件
StackExchangeで見たシステムプログラミング案件yaegashi
 
Trema day 1
Trema day 1Trema day 1
Trema day 1ykuga
 
20分でわかった事にするパワーマネジメント
20分でわかった事にするパワーマネジメント20分でわかった事にするパワーマネジメント
20分でわかった事にするパワーマネジメントmagoroku Yamamoto
 
Interrupt Affinityについて
Interrupt AffinityについてInterrupt Affinityについて
Interrupt AffinityについてTakuya ASADA
 
Japan Robot Week 2016 RTM講習会 第2部
Japan Robot Week 2016 RTM講習会 第2部Japan Robot Week 2016 RTM講習会 第2部
Japan Robot Week 2016 RTM講習会 第2部openrtm
 
181106 03
181106 03181106 03
181106 03openrtm
 
ラズパイでデバイスドライバを作ってみた。
ラズパイでデバイスドライバを作ってみた。ラズパイでデバイスドライバを作ってみた。
ラズパイでデバイスドライバを作ってみた。Kazuki Onishi
 

Was ist angesagt? (20)

Kiso sekkei 02rev02
Kiso sekkei 02rev02Kiso sekkei 02rev02
Kiso sekkei 02rev02
 
4章 Linuxカーネル - 割り込み・例外 4
 4章 Linuxカーネル - 割り込み・例外 4 4章 Linuxカーネル - 割り込み・例外 4
4章 Linuxカーネル - 割り込み・例外 4
 
DE0でラジコンカー作ってみた 関西de0 fpga勉強会20120519
DE0でラジコンカー作ってみた 関西de0 fpga勉強会20120519DE0でラジコンカー作ってみた 関西de0 fpga勉強会20120519
DE0でラジコンカー作ってみた 関西de0 fpga勉強会20120519
 
Stellaris を使った組み込みアプリ開発ガイド
Stellaris を使った組み込みアプリ開発ガイドStellaris を使った組み込みアプリ開発ガイド
Stellaris を使った組み込みアプリ開発ガイド
 
Wiresharkで検出できないチャットプログラム
Wiresharkで検出できないチャットプログラムWiresharkで検出できないチャットプログラム
Wiresharkで検出できないチャットプログラム
 
プロセスとコンテキストスイッチ
プロセスとコンテキストスイッチプロセスとコンテキストスイッチ
プロセスとコンテキストスイッチ
 
RSQB Flip Flopの等価回路モデル
RSQB Flip Flopの等価回路モデルRSQB Flip Flopの等価回路モデル
RSQB Flip Flopの等価回路モデル
 
Windowsのパケットモニタ作成
Windowsのパケットモニタ作成Windowsのパケットモニタ作成
Windowsのパケットモニタ作成
 
プログラミング実習
プログラミング実習プログラミング実習
プログラミング実習
 
RTミドルウェアによるロボットプログラミング技術 3. RTMによるプログラミング
RTミドルウェアによるロボットプログラミング技術 3. RTMによるプログラミングRTミドルウェアによるロボットプログラミング技術 3. RTMによるプログラミング
RTミドルウェアによるロボットプログラミング技術 3. RTMによるプログラミング
 
機械語の動作トレース による処理装置のはたらきの説明スライド
機械語の動作トレース による処理装置のはたらきの説明スライド機械語の動作トレース による処理装置のはたらきの説明スライド
機械語の動作トレース による処理装置のはたらきの説明スライド
 
Fpgaでの非同期信号の扱い方とvivadoによるサポート(公開用)
Fpgaでの非同期信号の扱い方とvivadoによるサポート(公開用)Fpgaでの非同期信号の扱い方とvivadoによるサポート(公開用)
Fpgaでの非同期信号の扱い方とvivadoによるサポート(公開用)
 
StackExchangeで見たシステムプログラミング案件
StackExchangeで見たシステムプログラミング案件StackExchangeで見たシステムプログラミング案件
StackExchangeで見たシステムプログラミング案件
 
Trema day 1
Trema day 1Trema day 1
Trema day 1
 
20分でわかった事にするパワーマネジメント
20分でわかった事にするパワーマネジメント20分でわかった事にするパワーマネジメント
20分でわかった事にするパワーマネジメント
 
Interrupt Affinityについて
Interrupt AffinityについてInterrupt Affinityについて
Interrupt Affinityについて
 
Japan Robot Week 2016 RTM講習会 第2部
Japan Robot Week 2016 RTM講習会 第2部Japan Robot Week 2016 RTM講習会 第2部
Japan Robot Week 2016 RTM講習会 第2部
 
181106 03
181106 03181106 03
181106 03
 
ULVOの等価回路モデル
ULVOの等価回路モデルULVOの等価回路モデル
ULVOの等価回路モデル
 
ラズパイでデバイスドライバを作ってみた。
ラズパイでデバイスドライバを作ってみた。ラズパイでデバイスドライバを作ってみた。
ラズパイでデバイスドライバを作ってみた。
 

Andere mochten auch

Open the door of embedded systems to IoT! mruby on LEGO Mindstorms (R)
Open the door of embedded systems to IoT! mruby on LEGO Mindstorms (R)Open the door of embedded systems to IoT! mruby on LEGO Mindstorms (R)
Open the door of embedded systems to IoT! mruby on LEGO Mindstorms (R)Takehiko YOSHIDA
 
SPQUE Hoverboard
SPQUE Hoverboard SPQUE Hoverboard
SPQUE Hoverboard Jaey Chai
 
Digital Innovation in Vietnam: is it possible?
Digital Innovation in Vietnam: is it possible?Digital Innovation in Vietnam: is it possible?
Digital Innovation in Vietnam: is it possible?Anh VU
 
Mathworks case example
Mathworks case exampleMathworks case example
Mathworks case exampleMassTLC
 
"Tomorrow ASEAN Project" Information Booklet (Season 1) - AIESEC in Ho Chi Mi...
"Tomorrow ASEAN Project" Information Booklet (Season 1) - AIESEC in Ho Chi Mi..."Tomorrow ASEAN Project" Information Booklet (Season 1) - AIESEC in Ho Chi Mi...
"Tomorrow ASEAN Project" Information Booklet (Season 1) - AIESEC in Ho Chi Mi...Toan Nguyen
 
2017 TeenLife Guide to Overnight Summer Programs
2017 TeenLife Guide to Overnight Summer Programs2017 TeenLife Guide to Overnight Summer Programs
2017 TeenLife Guide to Overnight Summer ProgramsMarie Schwartz
 
Noise detection from the signal matlab code, Signal Diagnosis
Noise detection from the signal matlab code, Signal Diagnosis Noise detection from the signal matlab code, Signal Diagnosis
Noise detection from the signal matlab code, Signal Diagnosis Bharti Airtel Ltd.
 
2017 Project Management Workshop Schedule - Project Management Training - Dco...
2017 Project Management Workshop Schedule - Project Management Training - Dco...2017 Project Management Workshop Schedule - Project Management Training - Dco...
2017 Project Management Workshop Schedule - Project Management Training - Dco...Dcolearning
 
TEEN Online Best Practices 2017
TEEN Online Best Practices 2017TEEN Online Best Practices 2017
TEEN Online Best Practices 2017Glenn Wiebe
 
Dsp lab report- Analysis and classification of EMG signal using MATLAB.
Dsp lab report- Analysis and classification of EMG signal using MATLAB.Dsp lab report- Analysis and classification of EMG signal using MATLAB.
Dsp lab report- Analysis and classification of EMG signal using MATLAB.Nurhasanah Shafei
 
A2 Exam Project, 2017 Homework B
A2 Exam Project, 2017 Homework BA2 Exam Project, 2017 Homework B
A2 Exam Project, 2017 Homework BMelanie_Powell
 
Implementation of Wireless Channel Model in MATLAB: Simplified
Implementation of Wireless Channel Model in MATLAB: SimplifiedImplementation of Wireless Channel Model in MATLAB: Simplified
Implementation of Wireless Channel Model in MATLAB: SimplifiedRosdiadee Nordin
 
GCSE FIne Art, Exam project 2017, Beginning and/or end, Lessons
GCSE FIne Art, Exam project 2017, Beginning and/or end, LessonsGCSE FIne Art, Exam project 2017, Beginning and/or end, Lessons
GCSE FIne Art, Exam project 2017, Beginning and/or end, LessonsMelanie Powell
 
Simulation of A Communications System Using Matlab
Simulation of A Communications System Using MatlabSimulation of A Communications System Using Matlab
Simulation of A Communications System Using MatlabPolytechnique Montreal
 
MATLAB and Simulink for Communications System Design (Design Conference 2013)
MATLAB and Simulink for Communications System Design (Design Conference 2013)MATLAB and Simulink for Communications System Design (Design Conference 2013)
MATLAB and Simulink for Communications System Design (Design Conference 2013)Analog Devices, Inc.
 
Simulating communication systems with MATLAB: An introduction
Simulating communication systems with MATLAB: An introductionSimulating communication systems with MATLAB: An introduction
Simulating communication systems with MATLAB: An introductionAniruddha Chandra
 

Andere mochten auch (20)

Open the door of embedded systems to IoT! mruby on LEGO Mindstorms (R)
Open the door of embedded systems to IoT! mruby on LEGO Mindstorms (R)Open the door of embedded systems to IoT! mruby on LEGO Mindstorms (R)
Open the door of embedded systems to IoT! mruby on LEGO Mindstorms (R)
 
SPQUE Hoverboard
SPQUE Hoverboard SPQUE Hoverboard
SPQUE Hoverboard
 
Summer Camp brochure 2017
Summer Camp brochure 2017Summer Camp brochure 2017
Summer Camp brochure 2017
 
Digital Innovation in Vietnam: is it possible?
Digital Innovation in Vietnam: is it possible?Digital Innovation in Vietnam: is it possible?
Digital Innovation in Vietnam: is it possible?
 
Mathworks case example
Mathworks case exampleMathworks case example
Mathworks case example
 
"Tomorrow ASEAN Project" Information Booklet (Season 1) - AIESEC in Ho Chi Mi...
"Tomorrow ASEAN Project" Information Booklet (Season 1) - AIESEC in Ho Chi Mi..."Tomorrow ASEAN Project" Information Booklet (Season 1) - AIESEC in Ho Chi Mi...
"Tomorrow ASEAN Project" Information Booklet (Season 1) - AIESEC in Ho Chi Mi...
 
2017 TeenLife Guide to Overnight Summer Programs
2017 TeenLife Guide to Overnight Summer Programs2017 TeenLife Guide to Overnight Summer Programs
2017 TeenLife Guide to Overnight Summer Programs
 
Industrial projects 2017 by tciap
Industrial projects 2017 by tciap Industrial projects 2017 by tciap
Industrial projects 2017 by tciap
 
Noise detection from the signal matlab code, Signal Diagnosis
Noise detection from the signal matlab code, Signal Diagnosis Noise detection from the signal matlab code, Signal Diagnosis
Noise detection from the signal matlab code, Signal Diagnosis
 
Implementing HDF5 in MATLAB
Implementing HDF5 in MATLABImplementing HDF5 in MATLAB
Implementing HDF5 in MATLAB
 
2017 Project Management Workshop Schedule - Project Management Training - Dco...
2017 Project Management Workshop Schedule - Project Management Training - Dco...2017 Project Management Workshop Schedule - Project Management Training - Dco...
2017 Project Management Workshop Schedule - Project Management Training - Dco...
 
TEEN Online Best Practices 2017
TEEN Online Best Practices 2017TEEN Online Best Practices 2017
TEEN Online Best Practices 2017
 
Dsp lab report- Analysis and classification of EMG signal using MATLAB.
Dsp lab report- Analysis and classification of EMG signal using MATLAB.Dsp lab report- Analysis and classification of EMG signal using MATLAB.
Dsp lab report- Analysis and classification of EMG signal using MATLAB.
 
A2 Exam Project, 2017 Homework B
A2 Exam Project, 2017 Homework BA2 Exam Project, 2017 Homework B
A2 Exam Project, 2017 Homework B
 
Implementation of Wireless Channel Model in MATLAB: Simplified
Implementation of Wireless Channel Model in MATLAB: SimplifiedImplementation of Wireless Channel Model in MATLAB: Simplified
Implementation of Wireless Channel Model in MATLAB: Simplified
 
GCSE FIne Art, Exam project 2017, Beginning and/or end, Lessons
GCSE FIne Art, Exam project 2017, Beginning and/or end, LessonsGCSE FIne Art, Exam project 2017, Beginning and/or end, Lessons
GCSE FIne Art, Exam project 2017, Beginning and/or end, Lessons
 
Hovercraft seminar report
Hovercraft seminar report Hovercraft seminar report
Hovercraft seminar report
 
Simulation of A Communications System Using Matlab
Simulation of A Communications System Using MatlabSimulation of A Communications System Using Matlab
Simulation of A Communications System Using Matlab
 
MATLAB and Simulink for Communications System Design (Design Conference 2013)
MATLAB and Simulink for Communications System Design (Design Conference 2013)MATLAB and Simulink for Communications System Design (Design Conference 2013)
MATLAB and Simulink for Communications System Design (Design Conference 2013)
 
Simulating communication systems with MATLAB: An introduction
Simulating communication systems with MATLAB: An introductionSimulating communication systems with MATLAB: An introduction
Simulating communication systems with MATLAB: An introduction
 

Ähnlich wie マイコンロボット実習

Android デバッグ小ネタ
Android デバッグ小ネタAndroid デバッグ小ネタ
Android デバッグ小ネタl_b__
 
リアルタイムOsのカスタマイズ
リアルタイムOsのカスタマイズリアルタイムOsのカスタマイズ
リアルタイムOsのカスタマイズKazuhiro Takahashi
 
UVLOの等価回路モデル作成方法
UVLOの等価回路モデル作成方法UVLOの等価回路モデル作成方法
UVLOの等価回路モデル作成方法Tsuyoshi Horigome
 
Androidとfpgaを高速fifo通信させちゃう
Androidとfpgaを高速fifo通信させちゃうAndroidとfpgaを高速fifo通信させちゃう
Androidとfpgaを高速fifo通信させちゃうksk sue
 
Python physicalcomputing
Python physicalcomputingPython physicalcomputing
Python physicalcomputingNoboru Irieda
 
katagaitaictf7_hw_ysk
katagaitaictf7_hw_yskkatagaitaictf7_hw_ysk
katagaitaictf7_hw_yskysk256
 
高位合成友の会@ドワンゴ,2015年12月8日
高位合成友の会@ドワンゴ,2015年12月8日高位合成友の会@ドワンゴ,2015年12月8日
高位合成友の会@ドワンゴ,2015年12月8日貴大 山下
 
Lucas apa pacsec_slides_jp-final
Lucas apa pacsec_slides_jp-finalLucas apa pacsec_slides_jp-final
Lucas apa pacsec_slides_jp-finalPacSecJP
 
平成26年度熊本高専Arduino講座 第3週 DCモータの制御
平成26年度熊本高専Arduino講座 第3週 DCモータの制御平成26年度熊本高専Arduino講座 第3週 DCモータの制御
平成26年度熊本高専Arduino講座 第3週 DCモータの制御Katsuhiro Morishita
 
VHDL-2008が好きなんです
VHDL-2008が好きなんですVHDL-2008が好きなんです
VHDL-2008が好きなんですwindy12806
 
C# 7.2 with .NET Core 2.1
C# 7.2 with .NET Core 2.1C# 7.2 with .NET Core 2.1
C# 7.2 with .NET Core 2.1信之 岩永
 
PBL1-v1-006j.pptx
PBL1-v1-006j.pptxPBL1-v1-006j.pptx
PBL1-v1-006j.pptxNAIST
 
FPGA workshop (2012f): Network Tester
FPGA workshop (2012f): Network TesterFPGA workshop (2012f): Network Tester
FPGA workshop (2012f): Network Testerykuga
 
Boost.Coroutine
Boost.CoroutineBoost.Coroutine
Boost.Coroutinemelpon
 
自作コンピューターでなんかする - 第八回 カーネル/VM探検隊&懇親会
自作コンピューターでなんかする - 第八回 カーネル/VM探検隊&懇親会自作コンピューターでなんかする - 第八回 カーネル/VM探検隊&懇親会
自作コンピューターでなんかする - 第八回 カーネル/VM探検隊&懇親会Hirotaka Kawata
 
発表資料 Fortranを用いた高位合成技術FortRockの開発
発表資料 Fortranを用いた高位合成技術FortRockの開発発表資料 Fortranを用いた高位合成技術FortRockの開発
発表資料 Fortranを用いた高位合成技術FortRockの開発貴大 山下
 
LLVMで遊ぶ(整数圧縮とか、x86向けの自動ベクトル化とか)
LLVMで遊ぶ(整数圧縮とか、x86向けの自動ベクトル化とか)LLVMで遊ぶ(整数圧縮とか、x86向けの自動ベクトル化とか)
LLVMで遊ぶ(整数圧縮とか、x86向けの自動ベクトル化とか)Takeshi Yamamuro
 
そうだったのか! よくわかる process.nextTick() node.jsのイベントループを理解する
そうだったのか! よくわかる process.nextTick() node.jsのイベントループを理解するそうだったのか! よくわかる process.nextTick() node.jsのイベントループを理解する
そうだったのか! よくわかる process.nextTick() node.jsのイベントループを理解するshigeki_ohtsu
 
あんなテスト、こんなテスト(this and that about testing)
あんなテスト、こんなテスト(this and that about testing)あんなテスト、こんなテスト(this and that about testing)
あんなテスト、こんなテスト(this and that about testing)Takuya Tsuchida
 

Ähnlich wie マイコンロボット実習 (20)

Android デバッグ小ネタ
Android デバッグ小ネタAndroid デバッグ小ネタ
Android デバッグ小ネタ
 
リアルタイムOsのカスタマイズ
リアルタイムOsのカスタマイズリアルタイムOsのカスタマイズ
リアルタイムOsのカスタマイズ
 
UVLOの等価回路モデル作成方法
UVLOの等価回路モデル作成方法UVLOの等価回路モデル作成方法
UVLOの等価回路モデル作成方法
 
Androidとfpgaを高速fifo通信させちゃう
Androidとfpgaを高速fifo通信させちゃうAndroidとfpgaを高速fifo通信させちゃう
Androidとfpgaを高速fifo通信させちゃう
 
Python physicalcomputing
Python physicalcomputingPython physicalcomputing
Python physicalcomputing
 
katagaitaictf7_hw_ysk
katagaitaictf7_hw_yskkatagaitaictf7_hw_ysk
katagaitaictf7_hw_ysk
 
高位合成友の会@ドワンゴ,2015年12月8日
高位合成友の会@ドワンゴ,2015年12月8日高位合成友の会@ドワンゴ,2015年12月8日
高位合成友の会@ドワンゴ,2015年12月8日
 
Lucas apa pacsec_slides_jp-final
Lucas apa pacsec_slides_jp-finalLucas apa pacsec_slides_jp-final
Lucas apa pacsec_slides_jp-final
 
平成26年度熊本高専Arduino講座 第3週 DCモータの制御
平成26年度熊本高専Arduino講座 第3週 DCモータの制御平成26年度熊本高専Arduino講座 第3週 DCモータの制御
平成26年度熊本高専Arduino講座 第3週 DCモータの制御
 
VHDL-2008が好きなんです
VHDL-2008が好きなんですVHDL-2008が好きなんです
VHDL-2008が好きなんです
 
C# 7.2 with .NET Core 2.1
C# 7.2 with .NET Core 2.1C# 7.2 with .NET Core 2.1
C# 7.2 with .NET Core 2.1
 
PBL1-v1-006j.pptx
PBL1-v1-006j.pptxPBL1-v1-006j.pptx
PBL1-v1-006j.pptx
 
FPGA workshop (2012f): Network Tester
FPGA workshop (2012f): Network TesterFPGA workshop (2012f): Network Tester
FPGA workshop (2012f): Network Tester
 
Multi Chassis LAG for Cloud builders
Multi Chassis LAG for Cloud buildersMulti Chassis LAG for Cloud builders
Multi Chassis LAG for Cloud builders
 
Boost.Coroutine
Boost.CoroutineBoost.Coroutine
Boost.Coroutine
 
自作コンピューターでなんかする - 第八回 カーネル/VM探検隊&懇親会
自作コンピューターでなんかする - 第八回 カーネル/VM探検隊&懇親会自作コンピューターでなんかする - 第八回 カーネル/VM探検隊&懇親会
自作コンピューターでなんかする - 第八回 カーネル/VM探検隊&懇親会
 
発表資料 Fortranを用いた高位合成技術FortRockの開発
発表資料 Fortranを用いた高位合成技術FortRockの開発発表資料 Fortranを用いた高位合成技術FortRockの開発
発表資料 Fortranを用いた高位合成技術FortRockの開発
 
LLVMで遊ぶ(整数圧縮とか、x86向けの自動ベクトル化とか)
LLVMで遊ぶ(整数圧縮とか、x86向けの自動ベクトル化とか)LLVMで遊ぶ(整数圧縮とか、x86向けの自動ベクトル化とか)
LLVMで遊ぶ(整数圧縮とか、x86向けの自動ベクトル化とか)
 
そうだったのか! よくわかる process.nextTick() node.jsのイベントループを理解する
そうだったのか! よくわかる process.nextTick() node.jsのイベントループを理解するそうだったのか! よくわかる process.nextTick() node.jsのイベントループを理解する
そうだったのか! よくわかる process.nextTick() node.jsのイベントループを理解する
 
あんなテスト、こんなテスト(this and that about testing)
あんなテスト、こんなテスト(this and that about testing)あんなテスト、こんなテスト(this and that about testing)
あんなテスト、こんなテスト(this and that about testing)
 

Mehr von Takehiko YOSHIDA

かるがもヘルメット/スキースクールIoTシステム
かるがもヘルメット/スキースクールIoTシステムかるがもヘルメット/スキースクールIoTシステム
かるがもヘルメット/スキースクールIoTシステムTakehiko YOSHIDA
 
RICOH THETAの全天球画像でペーパークラフト作成
RICOH THETAの全天球画像でペーパークラフト作成RICOH THETAの全天球画像でペーパークラフト作成
RICOH THETAの全天球画像でペーパークラフト作成Takehiko YOSHIDA
 
RICOH THETAの全天球画像でペーパークラフト
RICOH THETAの全天球画像でペーパークラフトRICOH THETAの全天球画像でペーパークラフト
RICOH THETAの全天球画像でペーパークラフトTakehiko YOSHIDA
 
Mindstorms EV3におけるソフトウェア開発環境 2014年 師走版
Mindstorms EV3におけるソフトウェア開発環境 2014年 師走版Mindstorms EV3におけるソフトウェア開発環境 2014年 師走版
Mindstorms EV3におけるソフトウェア開発環境 2014年 師走版Takehiko YOSHIDA
 
組込みシステムでIoTへの扉を開こう! mruby on LEGO Mindstorms EV3 (R)
組込みシステムでIoTへの扉を開こう! mruby on LEGO Mindstorms EV3 (R)組込みシステムでIoTへの扉を開こう! mruby on LEGO Mindstorms EV3 (R)
組込みシステムでIoTへの扉を開こう! mruby on LEGO Mindstorms EV3 (R)Takehiko YOSHIDA
 
恋するクラウド ~ AWSへ個人ブログをお引っ越し ~
恋するクラウド ~ AWSへ個人ブログをお引っ越し ~恋するクラウド ~ AWSへ個人ブログをお引っ越し ~
恋するクラウド ~ AWSへ個人ブログをお引っ越し ~Takehiko YOSHIDA
 
ロボット組み立てのヒント ハイライト
ロボット組み立てのヒント ハイライトロボット組み立てのヒント ハイライト
ロボット組み立てのヒント ハイライトTakehiko YOSHIDA
 

Mehr von Takehiko YOSHIDA (7)

かるがもヘルメット/スキースクールIoTシステム
かるがもヘルメット/スキースクールIoTシステムかるがもヘルメット/スキースクールIoTシステム
かるがもヘルメット/スキースクールIoTシステム
 
RICOH THETAの全天球画像でペーパークラフト作成
RICOH THETAの全天球画像でペーパークラフト作成RICOH THETAの全天球画像でペーパークラフト作成
RICOH THETAの全天球画像でペーパークラフト作成
 
RICOH THETAの全天球画像でペーパークラフト
RICOH THETAの全天球画像でペーパークラフトRICOH THETAの全天球画像でペーパークラフト
RICOH THETAの全天球画像でペーパークラフト
 
Mindstorms EV3におけるソフトウェア開発環境 2014年 師走版
Mindstorms EV3におけるソフトウェア開発環境 2014年 師走版Mindstorms EV3におけるソフトウェア開発環境 2014年 師走版
Mindstorms EV3におけるソフトウェア開発環境 2014年 師走版
 
組込みシステムでIoTへの扉を開こう! mruby on LEGO Mindstorms EV3 (R)
組込みシステムでIoTへの扉を開こう! mruby on LEGO Mindstorms EV3 (R)組込みシステムでIoTへの扉を開こう! mruby on LEGO Mindstorms EV3 (R)
組込みシステムでIoTへの扉を開こう! mruby on LEGO Mindstorms EV3 (R)
 
恋するクラウド ~ AWSへ個人ブログをお引っ越し ~
恋するクラウド ~ AWSへ個人ブログをお引っ越し ~恋するクラウド ~ AWSへ個人ブログをお引っ越し ~
恋するクラウド ~ AWSへ個人ブログをお引っ越し ~
 
ロボット組み立てのヒント ハイライト
ロボット組み立てのヒント ハイライトロボット組み立てのヒント ハイライト
ロボット組み立てのヒント ハイライト
 

マイコンロボット実習