Download 実験テキスト - 秋田工業高等専門学校

Transcript
20
(
)
Experiments in Electric Engineering
—
—
i
307
1
1
1
2
1
3
1
4
2
4.1
4.2
4.2.1
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2
3
3
4.2.2
4.2.3
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5
5
5.1
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
6
6
5.2
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
H8
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
7
7
8
5
5.2.1
5.2.2
5.3
5.4
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
5.4.1
5.4.2
5.5
5.6
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
5.6.1
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
5.6.2
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
5.7
6
16
7
16
7.1
7.2
7.3
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
A
A.1 H8
20
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
A.2
A.3 DC
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
PWM
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
A.3.1 DC
A.3.2 DC
A.4
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
PWM
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
A.5
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
ii
B
26
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
B.1
B.2
B.2.1
B.2.2
B.3 H8
B.4
B.5
C H8
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
3664
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
33
iii
1.
• PC
•
PC
2.
• A4
•
3.
• 2
•
AM8:45
•
1
•
•
•
4.
•
•
1
5.
•
6.
•
•
(
)
1
307
1
H8
2
1
1:
3
150
4
1
:
PC
)
:
1
2
/
3
/
/
3
1
/
(
(
2F)
1F)
3
:
(
2
4.
H8
PWM
1
1
ON/OFF
PID
PID
減速
センサー
まっすぐ進む
減速
左へ曲がる
右へ曲がる
1:
4
4.1
2
(
)
Linux
H8
1 Pulse
Width Modulation;
ON
3F
OFF
DC
4.2.
3
2:
/
H8
1
1
1
AKI-H8/3664N
SAD-01
1.2 [V] 2300 [mA]
9V
(006P)
4(
2
9 [V]
1
2SC1815
4
4
2
GP2S05
74HC04AP
15 [kΩ]
5
1
5
5.1 [kΩ]
3.3 [kΩ]
2
4
10 [Ω]
1
1
3
LED
SHARP
(NOT
)
D-SUB
1
1
420G-N
1
No.96
(2
)
No.97
No.157
1
1
2
1
M2.6×10
M2.6
M2.6
2
2
4
M3×30
M3×40
4
1
M3
M3
15
14
4.2
4.2.1
)
4
4.
•
• LED
H8
• LED
2
•
5
3
6
•
上から
E
C
B
C
C1815
B
E
A
K
C:コレクター
B:ベース
E:エミッター
E C B
-
下から
E
K:カソード
+
C
B
A:アノード
3:
2: LED
A:アノード
(2SC1815)
2
4
1
3
K:カソード
A:アノード
K:カソード
カソード側に線がある
4:
Vcc
1
GND
(TOP VIEW)
5:
74HC04AP
1
Cathode
2
Anode
3
Emitter
4
Collector
2
4
3
6:
4
4.2.
5
4.2.2
(
)
!
•
!
•
!
•
!
4.2.3
7
1/10
IC(Integrated Circuit)
(
IC
IC
)
7
(
•
•
•
•
)
6
5.
内部で接続
AB CD E F
GH I J K L
AB CD E F
GH I J K L
1
1
5
5
10
10
15
15
20
20
25
25
28
28
内部で接続
通常はグランドライン
内部で接続
通常は電源ライン
内部で接続
通常は電源ライン
内部で接続
1
5
10
15
20
25
30
a
b
c
d
e
f
a
b
c
d
e
f
内部で接続
通常はグランドライン
7:
5
pp.20–33
5.1
2
8
(
)
2
’C’
•
•
’A’
5.2.
7
•
2
8
(
)
9V電池
ユニバーサルプレート
M3×40
M3×30
赤外線センサーユニット
ギアボックス
Vcc
GND
M2.6×10
H8マイコン
赤外線センサー
M3×10
キャスター
8:
5.2
5.2.1
H8
8
9
JP1
H8
JP1
9 [V]
9
H8
H8
H8
2
M2.6 × 10
2.6 [mm]
10 [mm]
8
5.
CN1ピン番号
1
3
5
ジャンパーピン
JP2 JP3
26
24
2
4
25
23
21
CN2
CN1
64F3664FP
H8/3664
AG05878
0033 JAPAN
21
23
25
CN2ピン番号
24
26
5
3
1
4
2
JP1
ジャンパーピン
JP1の取り外し禁止
9:
H8
5.2.2
11
(LED)
H8
H8
H8
p.20
H8
A.1
H8
3
—0
2.4 [V]
—
H8
AD
p.20
A.2
Pulse Width Modulation(PWM)
DC
30.5 [Hz] —
ON/OFF
PWM
ON
(74HC04AP)
AD
PWM
—
OFF
p.21
A.3 DC
PWM
4
100
200
DC
p.23
3
4
H8
200 [mA]
A.4
200
NOT
2
1 [mA]
5.2.
9
PWM
OFF
p.24
A.5
(
11)
p.7
8
H8
LED
1.
2.
3.
(
)
•
•
4.
5.
(
10
)
6.
指数部
誤差
仮数部
A
B C
D
抵抗 R=(10A+B)×10C ±D
(例) 緑茶赤金
R=(50+1)×102±5%
精度5%の5.1[k ]の抵抗
10:
黒
茶
赤
橙
黄
緑
青
紫
灰
白
金
銀
A
0
1
2
3
4
5
6
7
8
9
B
0
1
2
3
4
5
6
7
8
9
C
0
1
2
3
4
5
6
7
8
9
-1
-2
D
5%
10%
10
5.
4
2.4V
インバーター
74HC04AP
2.4V
2.4V
2
1
10
15k
3
センサーユニット
フォトリフレクター
D-subコネクター
523
9V
CN1
AKI-H8/3664N
タイニーマイコン
CN2
2.4V
26(GND)
25(TXD)
24(RXD)
2SC1815
5.1k
7(AN3)
8(AN2)
9(AN1)
10(AN0)
11(FTIOB)
M
DCモーター(右)
13(FTIOD)
M
DCモーター(左)
14(P50)
15(P51)
16(P52)
17(P53)
64F3664FP
H8/3664
AG05878
0033 JAPAN
12(RES)
5
6
7
8
フライホイール
ダイオード
1
2
3
4
24(PS-IN)
25(GND)
2.4V
LED
3.3k
センサー状態表示ダイオード
5
6
7
8
11:
5.3
•
5.4.
11
•
3 5 [mm]
4 [mm]
•
•
?—
11
–
–
(0 [V] )
– H8
–
–
– LED
–
–
– H8
–
–
—
9V
JP1
0 [V]
—
—
(p.9
10)
5.4
5.4.1
Linux
gcc
gcc
5
pp.26–33
B
[1]
(
B)
5.4.2
(
)
• H8
•
[Ctrl]
5
6 http://akita-nct.jp/saka/lecturenote/3e/3e.html
[c]
WEB
6
12
5.
Linux
H8
1. D-SUB
(2.4 [V]
2.
ON
9 [V] )
OFF
Linux
3.
4.
WEB
7
H8
Makefile
3664.h
h8c.c
h8c.h
h8 start.s
h8 link.x
Makefile
5.
1
—.htm
.html—
H8
•
experiment.c
•
•
6.
make
7. make
H8
(a) H8
(b)
JP2
9 [V]
(c)
JP3
9 [V]
make write
ready!
(d)
H8/3664F is
2001/2/1 Yukio Mituiwa.
20
1:
1
2
3
4
5
6
JP1
#include ” 3 6 6 4 . h”
#include ” h8c . h”
i n t main ( )
{
init led ();
7 http://akita-nct.jp/saka/lecturenote/3e/3e.html
[Ctrl]
EEPROM Writing is successed.
[c]
5.5.
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
13
init pwm ( ) ;
init ADC ( ) ;
duty pwm ( 0 , 0 ) ;
start pwm ( ) ;
// PWM
// PWM
while ( 1 ) {
ADC( ) ;
// AD
// ---- LED
----PDR5=((0 x01 ∗ ch1+0x02 ∗ ch2+0x04 ∗ ch3+0x08 ∗ ch4 ) & 0 x 3 f ) | (PDR5 & 0 xc0 ) ;
// ---- DC
----i f ( ch2==1 && ch3==0) duty pwm ( 0 , 1 0 0 ) ;
i f ( ch2==1 && ch3==1) duty pwm ( 1 0 0 , 1 0 0 ) ;
i f ( ch2==0 && ch3==1) duty pwm ( 1 0 0 , 0 ) ;
}
}
5.5
1.
9 [V]
2. H8
JP2
OFF
9 [V]
JP3
JP1
3.
2
4.
9 [V]
ON
9 [V]
5.
6.
RES
5.6
5.6.1
2
2
2.4 [V]
14
5.
2
4
5
H8
8
4
(p12
1)
5
4
2
5.6.2
DC
LED
ch1 ch4
H8
ch1 ch4
AN0 AN3
0
1
AD
ADC()
LED
ch1 ch4
PDR5
PDR5=((0x01*ch1+0x02*ch2+0x04*ch3+0x08*ch4) & 0x3f) | (PDR5 & 0xc0);
LED
(p.12
1)
4
p.27
void init led(void)
LED
LED
LED
4
PDR5
void init pwm(void)
PWM
1
PWM
1
void duty pwm(unsigned int b, unsigned int d)
H8
b FTIOB
d
PWM
FTIOD
0 100
[%]
0 [%]
0
100
init pwm()
start pwd()
PWM
PWM
void start pwm(void)
PWM
8 H8
8
dugy pwm()
4
5.7.
15
void init ADC(void)
H8
AD
1
void ADC(void)
ch1 ch4
5.7
12
23 [mm]
960mm
2400mm
12:
•
•
•
•
•
23 [mm]
16
7.
6
[
1]
•
•
•
(NOT)
• H8
[
2] PWM
[
3]
[
4]
DC
Cathode
Anode
Emitter
Collector Base
WEB
WEB
(
)
7
7.1
—
—
?
?—
→
→
→
[2]
(sentence)
•
•
7.2.
17
(paragraph)
•
(
)
•
•
(section)
(chapter)
→
→
(1
7.2
—
9
1
?—
2
•
3
9
—
→
)
→ ···
18
7.
•
?
•
?
•
?
?
•
4
?—
1
5
•
•
•
6
•
?
•
•
7
1
(sentence)
WEB
(
8
–
(
)
7.3
4
3
(150
×4)
2
)
7.3.
19
3:
2
3
4
1
1.
2.
3.
7.
4.
5.
6.
8.
20
A.
A
A.1
H8
H8/3664N
A/D
LED
PWM
ON/OFF
DC
H8
CPU
(
AKI-3664N)
4
4:
AKI-3664N
3664N
CN1
CN2
7
AN3
A/D
3
8
9
AN2
AN1
A/D
A/D
2
1
10
12
14
AN0
RES
P50
A/D
0
15
16
P51
P52
PDR5
PDR5
17
24
25
P53
PS-IN
GND
PDR5
11
13
FTIOB
FTIOD
PWM
PWM
24
25
26
RXD
TXD
GND
PC
PC
PC
PDR5
(0:0 [V]
1:5 [V] )
2
3
JP1
4
:5 [V] JP1
7–12 [V]
A.2
/
LED
LED
13
(
(
13
13
)
)
0 [V]
A.3. DC
PWM
21
2.4 [V]
2.4 [V]
2.4 [V]
0 [V]
電流
2.4 [V]
電流
電流
赤外線
赤外線
白
黒
センサーが白を検知
センサーが黒を検知
13:
14
ON/OFF
→
ON/OFF
→
/
H8
/
A/D
ON/OFF
;
NOT
A/D
2.4 [V]
電流
2.4 [V]
2.4 [V]
0 [V]
赤外線
スイッチ
OFF
スイッチ ON
赤外線が反射された場合
赤外線が反射されない場合
14:
A.3
DC
A.3.1
DC
PWM
2
/
DC
DC
2π/3 [rad]
15
22
A.
2π/3 [rad]
永久磁石
コイル
整流子
S
ブラシ
S
N
N
N
15: DC
/
2π/3 [rad]
2π/3 [rad]
DC
•
–
–
–
–
–
•
–
–
A.3.2
DC
PWM
DC
Pulse Width Modulation(PWM)
PWM
16
H
DC
L
A.4.
23
H
10
PWM
L
ON/OFF
DC
ON
Tp
TON
TOFF
DCモーターの
コイルに電流
が流れる
電流が
流れない
ON
コイルに電流
が流れる
電流が
流れない
コイルに電流
が流れる
電流が
流れない
OFF
16: DC
PWM
DC
ON/OFF
Tp
TON
H8
CPU
PWM
CN2 11
p.10
13
11
PWM
DC
PWM
p.27 B.2.2
32.76 [msec]
4
A.4
17
17
1 [mA]
100 [mA]
10
ON
ON
24
A.
C
B
大きい電流
E
小さな電流
17:
ON/OFF
/
18
H8
ON/OFF
H8
1 [mA]
H8
[mA]
H8
H8
ON/OFF
小さな電流が流れないとき
スイッチはOFF
小さな電流が流れると
スイッチはON
負荷
モーター
負荷
モーター
M
18:
H8
ON/OFF
A.5
19
—
DC
20
• (A)
M
(
)
A.5.
25
順方向:電流が流れる
逆方向:電流が流れない
電流のパス
19:
•
OFF
(B)
•
20
DC
(C)
OFF
OFF
—
20
—
(B)
ON/OFF
1
30
PWM
ON/OFF
ON
DC
OFFの直後
PWM
OFFの後しばらくすると
M
回転
(A)
電流のパス
電流のパス
M
M
回転
停止
(C)
(B)
20:
ON
OFF
26
B.
B
B.1
make
C
2
make
H8
Makefile
make
Makefile
5: Makefile
mot
make
make clean
make write
exe mot
mot
H8
2:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
Makefile(Makefile)
TARGET
=
h8exp . mot
CFLAGS
TOOL PREFIX
CC
=
=
=
−O −mh −g −mrelax −mint32 −DH8 3664
h8300−hms−
$ (TOOL PREFIX) g c c
LDSCRIPT
CRT0
SRCS
FUNC
=
=
=
=
h8 link . x
h8 start . s
experiment . c
h8c . c
all
: $ (TARGET)
$ (TARGET) : $ (TARGET : . mot=. e x e )
$ (TOOL PREFIX) o b j c o p y −O s r e c $ (TARGET : . mot=. e x e ) $@
$ (TARGET : . mot=. e x e ) : M a k e f i l e $ (LDSCRIPT) $ (SRCS : . c =. o ) $ (FUNC : . c =. o ) \
$ (CRT0) $ ( LIBS )
$ (CC) $ (CFLAGS) −T $ (LDSCRIPT) −n o s t d l i b $ (CRT0) \
$ (SRCS : . c =. o ) $ (FUNC : . c =. o ) −o $@ $ ( LIBS ) − l c −l g c c
write :
h 8 w r i t e −3664 $ (TARGET) / dev / t t y S 0
clean :
rm
rm
rm
rm
−f
−f
−f
−f
$ (TARGET)
$ (TARGET : . mot=. e x e )
$ (SRCS : . c =. o )
$ (FUNC : . c =. o )
B.2.
27
B.2
p.12
1
H8
1
B.2.1
6
4
3
3:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
(h8c.h)
#i f n d e f H8C H
#define H8C H
#define
void
void
void
void
void
void
nop ( ) asm v o l a t i l e ( ” nop ” ) ;
i n i t l e d ( void ) ;
init pwm ( void ) ;
start pwm ( void ) ;
duty pwm ( unsigned i n t b , unsigned i n t d ) ;
ADC init ( void ) ;
ADC( void ) ;
typedef union{
unsigned char BYTE;
struct {
unsigned char ADF: 1 ;
unsigned char ADIE : 1 ;
unsigned char ADST : 1 ;
unsigned char SCAN : 1 ;
unsigned char CKS : 1 ;
unsigned char CH2 : 1 ;
unsigned char CH1 : 1 ;
unsigned char CH0 : 1 ;
}BIT ;
} set ADC ;
i n t ch1 , ch2 , ch3 , ch4 ;
#endif
B.2.2
3
4
4:
1
2
3
4
5
6
7
8
9
#include ” 3 6 6 4 . h”
#include ” h8c . h”
// = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =
// LED
//
Port 5
1
//
PDR 5
LED
// = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =
(h8c.c)
28
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
B.
void i n i t l e d ( void ) {
PMR5 &= 0 xc0 ;
PCR5 |= 0 x 3 f ;
PDR5 &= 0 xc0 ;
// Port Mode Register 5
//
0 :
1 :
// Port Control Register 5
//
0 :
1 :
*/
// Port Data Register
}
// = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =
// PWM
//
PWM
1
// = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =
void init pwm ( void ) {
TMRW |= 0 x05 ;
/* FTIOB
FTIOD
PWM
*/
TCRW |= 0 x80 ;
TCRW |= 0 x30 ;
TCRW |= 0 x0a ;
/*
/*
/*
TCNT = 0 x0000 ;
/*
A
*/
phi /8 (=2 MHz ) */
1 */
16 */
GRA = 0 x f f f f ;
}
// = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =
// PWM
Duty
//
: FTIOB
: FTIOD
// = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =
void duty pwm ( unsigned i n t b , unsigned i n t d ) {
// pwm
GRB = ( unsigned i n t ) 6 5 5 ∗ b ;
GRD = ( unsigned i n t ) 6 5 5 ∗ d ;
}
// = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =
// PWM
// = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =
void start pwm ( void ) {
TMRW |= 0 x80 ;
//
}
// = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =
// AD
// = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =
void init ADC ( void )
{
set ADC ∗ s e t ;
s e t =(set ADC ∗)&ADCSR;
s e t −>BIT .ADF=0;
s e t −>BIT . ADIE=0;
s e t −>BIT .ADST=0;
s e t −>BIT .SCAN=1;
s e t −>BIT . CKS=0;
s e t −>BIT . CH2=0;
s e t −>BIT . CH1=1;
s e t −>BIT . CH0=1;
}
// = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =
// AD
//
ch1 : AN0
0 :
1 :
[%]
B.3. H8
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
3664
29
//
ch2 : AN1
0 :
1 :
//
ch3 : AN2
0 :
1 :
//
ch4 : AN3
0 :
1 :
// = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =
void ADC( void )
{
ADCSR &=0x 7 f ;
ADCSR |= 0 x20 ;
// ADF =0
// ADST =1
AD
ADC
while ( ! ( ADCSR & 0 x80 ) ) ;
ADCSR &= 0 x d f ;
// AD
// ADST =0
ADC stop
ch1=(unsigned
ch2=(unsigned
ch3=(unsigned
ch4=(unsigned
>>
>>
>>
>>
i n t ) (ADDRA
i n t ) (ADDRB
i n t ) (ADDRC
i n t ) (ADDRD
6) <200
6) <200
6) <200
6) <200
?
?
?
?
1:0;
1:0;
1:0;
1:0;
}
B.3
H8
3664
5
(3664.h)
3–5
14–96
—
H8
—
16
gcc
16
H8/3664
[3]
5: H8/3664N
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
#i f n d e f
#define
#define
#define
#define
H8 3664
H8 3664
STI ( )
CLI ( )
SLEEP ( )
(h8 3664.h)
H
H
asm v o l a t i l e ( ” andc . b #0x7f , c c r ” )
asm v o l a t i l e ( ” o r c . b #0x80 , c c r ” )
asm v o l a t i l e ( ” s l e e p ” )
#define VOLATILE BYTE( addr )
#define VOLATILE WORD( addr )
( ∗ ( v o l a t i l e unsigned char ∗ ) ( addr ) )
( ∗ ( v o l a t i l e unsigned short ∗ ) ( addr ) )
// = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =
//
Definitions of H8 /3664 Internal Registers
//
DO NOT EDIT !
// = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =
#define TMRW
VOLATILE BYTE( 0 x f f 8 0 )
#define TCRW
VOLATILE BYTE( 0 x f f 8 1 )
#define TIERW
VOLATILE BYTE( 0 x f f 8 2 )
#define TSRW
VOLATILE BYTE( 0 x f f 8 3 )
#define TIOR0
VOLATILE BYTE( 0 x f f 8 4 )
#define TIOR1
VOLATILE BYTE( 0 x f f 8 5 )
#define
#define
#define
#define
#define
TCNT
GRA
GRB
GRC
GRD
VOLATILE WORD( 0 x f f 8 6 )
VOLATILE WORD( 0 x f f 8 8 )
VOLATILE WORD( 0 x f f 8 a )
VOLATILE WORD( 0 x f f 8 c )
VOLATILE WORD( 0 x f f 8 e )
(
)
30
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
B.
FLMCR1
FLMCR2
FLPWCR
EBR1
FENR
TCRV0
TCSRV
TCORA
TCORB
TCNTV
TCRV1
TMA
TCA
SMR
BRR
SCR3
TDR
VOLATILE BYTE( 0 x f f 9 0 )
VOLATILE BYTE( 0 x f f 9 1 )
VOLATILE BYTE( 0 x f f 9 2 )
VOLATILE BYTE( 0 x f f 9 3 )
VOLATILE BYTE( 0 x f f 9 b )
VOLATILE BYTE( 0 x f f a 0 )
VOLATILE BYTE( 0 x f f a 1 )
VOLATILE BYTE( 0 x f f a 2 )
VOLATILE BYTE( 0 x f f a 3 )
VOLATILE BYTE( 0 x f f a 4 )
VOLATILE BYTE( 0 x f f a 5 )
VOLATILE BYTE( 0 x f f a 6 )
VOLATILE BYTE( 0 x f f a 7 )
VOLATILE BYTE( 0 x f f a 8 )
VOLATILE BYTE( 0 x f f a 9 )
VOLATILE BYTE( 0 x f f a a )
VOLATILE BYTE( 0 x f f a b )
#define SSR
#define RDR
VOLATILE BYTE( 0 x f f a c )
VOLATILE BYTE( 0 x f f a d )
#define
#define
#define
#define
#define
#define
ADDRA
ADDRB
ADDRC
ADDRD
ADCSR
ADCR
VOLATILE WORD( 0 x f f b 0 )
VOLATILE WORD( 0 x f f b 2 )
VOLATILE WORD( 0 x f f b 4 )
VOLATILE WORD( 0 x f f b 6 )
VOLATILE BYTE( 0 x f f b 8 )
VOLATILE BYTE( 0 x f f b 9 )
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
TCSRWD
TCWD
TMWD
ICCR
ICSR
ICDR
SARX
ICMR
SAR
ABRKCR
ABRKSR
BARH
BARL
BDRH
BDRL
PUCR1
PUCR5
PDR1
PDR2
PDR5
PDR7
PDR8
PDRB
VOLATILE BYTE( 0 x f f c 0 )
VOLATILE BYTE( 0 x f f c 1 )
VOLATILE BYTE( 0 x f f c 2 )
VOLATILE BYTE( 0 x f f c 4 )
VOLATILE BYTE( 0 x f f c 5 )
VOLATILE BYTE( 0 x f f c 6 )
VOLATILE BYTE( 0 x f f c 6 )
VOLATILE BYTE( 0 x f f c 7 )
VOLATILE BYTE( 0 x f f c 7 )
VOLATILE BYTE( 0 x f f c 8 )
VOLATILE BYTE( 0 x f f c 9 )
VOLATILE BYTE( 0 x f f c a )
VOLATILE BYTE( 0 x f f c b )
VOLATILE BYTE( 0 x f f c c )
VOLATILE BYTE( 0 x f f c d )
VOLATILE BYTE( 0 x f f d 0 )
VOLATILE BYTE( 0 x f f d 1 )
VOLATILE BYTE( 0 x f f d 4 )
VOLATILE BYTE( 0 x f f d 5 )
VOLATILE BYTE( 0 x f f d 8 )
VOLATILE BYTE( 0 x f f d a )
VOLATILE BYTE( 0 x f f d b )
VOLATILE BYTE( 0 x f f d d )
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
PMR1
PMR5
PCR1
PCR2
PCR5
PCR7
PCR8
SYSCR1
SYSCR2
IEGR1
IEGR2
IENR1
IRR1
IWPR
MSTCR1
TSCR
VOLATILE BYTE( 0 x f f e 0 )
VOLATILE BYTE( 0 x f f e 1 )
VOLATILE BYTE( 0 x f f e 4 )
VOLATILE BYTE( 0 x f f e 5 )
VOLATILE BYTE( 0 x f f e 8 )
VOLATILE BYTE( 0 x f f e a )
VOLATILE BYTE( 0 x f f e b )
VOLATILE BYTE( 0 x f f f 0 )
VOLATILE BYTE( 0 x f f f 1 )
VOLATILE BYTE( 0 x f f f 2 )
VOLATILE BYTE( 0 x f f f 3 )
VOLATILE BYTE( 0 x f f f 4 )
VOLATILE BYTE( 0 x f f f 6 )
VOLATILE BYTE( 0 x f f f 8 )
VOLATILE BYTE( 0 x f f f 9 )
VOLATILE BYTE( 0 x f f f c )
#define EKR
VOLATILE BYTE( 0 x f f 1 0 )
B.4.
98
31
#endif
B.4
H8
6
( stack)
(sp)
ROM
RAM
1
main
jsr
main
main
6:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
(h8 start.s)
; ; H8/3664 S t a r t u p r o u t i n e
. h8300h
. section . text
. global
start
start :
mov . l # s t a c k , sp ; ;
; ; ROM
RAM
mov . l #
dtors end , er0 ; ; . dtors
mov . l #
d a t a , e r 1 ; ; . data
mov . l # e d a t a , e r 2 ; ; . data
ram data :
mov . w @er0 , r 3
mov . w r3 , @er1
adds #2, e r 0
adds #2, e r 1
cmp . l er2 , e r 1
b l o ram data
; ; main
j s r @ main
sleep :
sleep
bra s l e e p
. end
B.5
7:
1
2
3
4
5
6
7
8
9
10
OUTPUT FORMAT( ” c o f f −h8300 ” )
OUTPUT ARCH( h8300h )
ENTRY( ” s t a r t ” )
MEMORY
{
v e c t o r s : o = 0 x0000
rom
: o = 0 x0034
ram
: o = 0 xf780
stack
: o = 0 xff80
}
,
,
,
,
l
l
l
l
=
=
=
=
0 x0034
0 x7fcc
0 x0400
0 x0000
(h8 link.x)
32
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
B.
SECTIONS
{
. vectors : {
SHORT(ABSOLUTE( s t a r t ) )
SHORT(ABSOLUTE( s t a r t ) )
SHORT(ABSOLUTE( s t a r t ) )
SHORT(ABSOLUTE( s t a r t ) )
SHORT(ABSOLUTE( s t a r t ) )
SHORT(ABSOLUTE( s t a r t ) )
SHORT(ABSOLUTE( s t a r t ) )
SHORT(DEFINED( i n t n m i ) ?ABSOLUTE( i n t n m i ) :ABSOLUTE( s t a r t ) )
SHORT(DEFINED( i n t t r a p 0 ) ?ABSOLUTE( i n t t r a p 0 ) :ABSOLUTE( s t a r t ) )
SHORT(DEFINED( i n t t r a p 1 ) ?ABSOLUTE( i n t t r a p 1 ) :ABSOLUTE( s t a r t ) )
SHORT(DEFINED( i n t t r a p 2 ) ?ABSOLUTE( i n t t r a p 2 ) :ABSOLUTE( s t a r t ) )
SHORT(DEFINED( i n t t r a p 3 ) ?ABSOLUTE( i n t t r a p 3 ) :ABSOLUTE( s t a r t ) )
SHORT(DEFINED( i n t b r e a k ) ?ABSOLUTE( i n t b r e a k ) :ABSOLUTE( s t a r t ) )
SHORT(DEFINED( i n t s l e e p ) ?ABSOLUTE( i n t s l e e p ) :ABSOLUTE( s t a r t ) )
SHORT(DEFINED( i n t i r q 0 ) ?ABSOLUTE( i n t i r q 0 ) :ABSOLUTE( s t a r t ) )
SHORT(DEFINED( i n t i r q 1 ) ?ABSOLUTE( i n t i r q 1 ) :ABSOLUTE( s t a r t ) )
SHORT(DEFINED( i n t i r q 2 ) ?ABSOLUTE( i n t i r q 2 ) :ABSOLUTE( s t a r t ) )
SHORT(DEFINED( i n t i r q 3 ) ?ABSOLUTE( i n t i r q 3 ) :ABSOLUTE( s t a r t ) )
SHORT(DEFINED( i n t w k p ) ?ABSOLUTE( i n t w k p ) :ABSOLUTE( s t a r t ) )
SHORT(DEFINED( i n t t i m e r a ) ?ABSOLUTE( i n t t i m e r a ) :ABSOLUTE( s t a r t ) )
SHORT(ABSOLUTE( s t a r t ) )
SHORT(DEFINED( i n t t i m e r w ) ?ABSOLUTE( i n t t i m e r w ) :ABSOLUTE( s t a r t ) )
SHORT(DEFINED( i n t t i m e r v ) ?ABSOLUTE( i n t t i m e r v ) :ABSOLUTE( s t a r t ) )
SHORT(DEFINED( i n t s c i 3 ) ?ABSOLUTE( i n t s c i 3 ) :ABSOLUTE( s t a r t ) )
SHORT(DEFINED( i n t i i c ) ?ABSOLUTE( i n t i i c ) :ABSOLUTE( s t a r t ) )
SHORT(DEFINED( i n t a d i ) ?ABSOLUTE( i n t a d i ) :ABSOLUTE( s t a r t ) )
} > vectors
. t e x t 0 x0034 : {
∗(. text )
∗(. strings )
∗ ( . rodata )
etext = . ;
} > rom
. tors : {
ctors = .
∗(. ctors )
ctors end
dtors = .
∗(. dtors )
dtors end
} > rom
;
= . ;
;
= . ;
. data : AT ( ADDR( . t o r s ) + SIZEOF ( . t o r s ) ) {
data = . ;
∗ ( . data )
∗(. tiny )
edata = . ;
} > rom
. b s s : AT ( LOADADDR( . data ) + SIZEOF ( . data ) ) {
bss start = . ;
∗ ( . bss )
∗ (COMMON)
end = . ;
} >ram
. stack : {
stack = . ;
∗(. stack )
} > stack
. s t a b 0 (NOLOAD) : {
[ . stab ]
}
33
82
83
84
85
. s t a b s t r 0 (NOLOAD) : {
[ . stabstr ]
}
}
C
H8
H8
6
9V
H8
5V
2
H8
(
)
6:
H8
AKI-H8/366N
(
IC
HD64N3664FP
)40P(1×40)
(
40P)
C-167
P-1591
6604S-40
JP1
H8
7–12 V
3
5V
JP1
• JP1
OFF(
) CN1
23
5 V 25
26
(0
7–12 V 25
26
(0
V)
• JP1
V)
CN1
[1]
[2]
[3] H8/3664
ON(
CN2
C
(
) CN1
)
24
IC
H8
2005.
1994
rjj09b0149-066