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