Upload
yukio-kubo
View
1.126
Download
0
Embed Size (px)
DESCRIPTION
大阪日本橋・でんでんタウン工作教室 発明ロボット塾4月(2014年4月6日) 組み込みマイコン( H8マイコン)のことを勉強しよう トライアングル・エレクトロニクス 久保幸夫 @tentenV3
Citation preview
大阪・日本橋 でんでんタウン 発明ロボット塾 4月
組み込みマイコン( H8マイコン)
のことを勉強しよう
担当 トライアングル・エレクトロニクス 久保幸夫
はじめに
• この講座は、 中学校の技術家庭科で習う、
レベルの知識を小学生(高学年)~中学生を対象に 身に付けることを、目的としています。 同、知識レベルを大きく上回ることや、H8マイコンに特化したプログラム等の解説は割愛しておりますので、ご了承くださいませ。
D 情報に関する技術 (3) プログラムによる計測・制御について,次の事項を指導する。
ア コンピュータを利用した計測・制御の基本的な仕組みを知ること。
イ 情報処理の手順を考え,簡単なプログラムが作成できること
ごちゅうい
• ぶひんのほうこう、つなぎまちがいに ちゅういすること
• ショートさせないこと
• さきのとがったぶひんもあるので、 ちゅういすること
• こまかいぶひんがおおいので、 なくさないこと
• あそばないときは、
かならずACアダプターを抜いておくこと
組み込みマイコンって
• 機械の中に入っている 小さなコンピュータ
• 何をしているの?
機械を動かす
制御(せいぎょ)
クイズ これ!なんだ!
制御(せいぎょ)の例 • 炊飯器(すいはんき)
– ごはんをたくやつ
– おいしいごはんを たくには、火の強さの加減が大切
火のつよさを 調整(ちょうせい)する 火が弱い(よわい)と うまくたけない 火が強いと(つよい)と こげてしまう
温度(おんど)を見て うまく調整(ちょうせい)する
温度(おんど)を見て 調整(ちょうせい)するには
• 温度をしらべる センサー
• マイコンにデータをとりこむ
• 処理(しょり)
•プログラムで制御(せいぎょ)
• ヒーターをつける、けす
入口
出口
処理
計測
制御
クイズ組込みマイコン!
クイズです!
何の機械か あててください
なぞのマイコン基板(おもて)
なぞのマイコン基板(うら)
なぞのマイコン基板は なんでしょうか?
ヒント
おうちにある電気製品です よく使います
この部屋にもあります こわれると、たいへんです
マイコンをつかってます
ねだんは6万円ぐらいでした 2001年製でした
ルネサス 740ファミリマイコン 75311M4搭載
LEDランプがついています
おしボタンスイッチがついています
赤外線(せきがいせん)センサがついています (手元リモコン用)
リレーがついています 電気(AC100V)のオン・オフをします
バッテリーの充電(じゅうでん)回路と モータの回路がついています
バキュームセンサー 空気(くうき)圧をはかります
なぞの機械
•ヒント
•おおきなバッテリーが入ってます。充電できます
•コードレスでつかえます
•500Wの強力 DCモータが付いています
なぞの機械
•ヒント
–おうちにある機械ですが、 コードレスタイプです
–うごかすと、 モータの音がします
•うい~ん
なぞの機械
• ヒント
–機械のおなかが、いっぱいになると、あかいLEDがつきます
–パックをとりかえます
•わかったかな!?
•むずかしい?
•じゃ、大ヒント!
こんな機械です
•わかったかな!?
•こたえは!
コードレス掃除機
コードレス掃除機 赤外線手元スイッチ (リモコン発光側)
オン/オフ・モード切替 (強/弱/おまかせ)
赤外線受信ユニット 手動切替SW
バッテリー残量表示 (4個のLED)
ゴミパック交換常ランプ(LED)
パワーブラシ (モータ)
モータの制御 省エネルギー
(空気圧を検知し、 吸い込み力を制御) バッテリー充電・放電
コードレス掃除機のシステム
入力 出力 処理
(制御・演算・記憶)
マイコン
空気圧 センサ
赤外線 ユニット
モータ ドライブ回路
DC
モータ
回転 センサ スイッチ
安全 スイッチ
手元 スイッチ
LED表示
集塵室 (ごみパック)
空気圧(吸込み圧)を検知
モータの回転を検知
計測
制御
システムって!?
•「複数の機械を組み合わせて、 ぜんたいとして、うまく動かすためのしくみ」
って、いっても・・・ むずかしいよね!
システムには…
• 入口がある
• 処理(しょり)をおこなう
• 出口がある
• システム的に考える 入口、処理、出口を考える
入力 出力 処理 (制御・演算・記憶)
計測 制御
組み込みマイコンはシステムの中心
• 機械のシステムの中心が 組み込みマイコン
• 現在の多くの 電気製品(家電製品、通信・情報機器) ロボット、機械 乗り物(自動車、飛行機、電車…)などは、組み込みマイコンで動いている!
昔の(30年前)組み込みマイコン基板
SRAM ROM Z80CPU パラレルIO×2個
マイコン インタフェース I/O(入口・出口) メモリ
組み込みマイコン基板の構成
• メモリ(記憶) プログラムやデータを覚える
• マイコン プログラムをメモリから読んで動作 –制御
–計算
• インタフェース 外との出入口 –入口 INPUT
–出口 OUTPUT I/O(アイオー)ポート
昔はメモリ、マイコン、I/Oポートがべつべつ
いまのマイコン基板
インタフェース I/Oポートなど (入口・出口)
マイコン
メモリ
ぜんぶ、1個の ICに入って入る
ルネサス H8マイコン H8/3058F 16ビットマイコン
最新のマイコン基板
ARMマイコン STM32ディスカバリ 32ビットマイコン
インタフェース I/Oポートなど (入口・出口)
マイコン
メモリ
さらに高性能! ICが小さくなった! 電気が少なくて良い
今の組み込みマイコン
一つになった、小さくなった
高機能(いろんなことができる)
高性能になった(処理がはやい)
値段が安くなった
やすい
はやい
ちいさい
なんでもできる
どんどんべんりになったけど、 組み込みマイコンをうごかすには プログラムを作ることが必要
組み込みマイコンのプログラム
• C言語(しーげんご)で書く
–コンピュータ専用の言葉
main(){ ・・・・・・・・・・・・ int c=0; //割り込み回数 EI; //割り込み許可 while (1){ sw = ~P2.DR.BYTE; //データ入力、“1”、“0”を反転 cds= ~P6.DR.BYTE; //データ入力、“1”、“0”を反転 if ((sw & 0x01)||(cds & 0x01) ) { if( f_kankan==0){ f_kankan=1; P5.DR.BYTE=0x0A;//LED P51 P53 点灯 1010 chikachika = 0;
・・・・・・・・・・・・
入力
処理
出力
計測
制御
Arduino(アルドゥイーノ)も
• Arduino使ったことある人もいるよね
• ArduinoのプログラムもC言語風
– Arduinoのプログラム(スケッチ)は、 C言語をベースにした言語
Arduino (アルドゥイーノ)
Arduinoのプログラム
Arduino のIDE 開発環境 (かいはつかんきょう)
Arduinoのプログラム開発
• Arduinoのプログラム開発
USBケーブル
プログラム開発はおなじ
• Arduinoのプログラム開発も 組み込みマイコンのプログラム開発も きほんはおなじ
• ただ! – Arduinoは マイコンをつかいやすく、はやくつくれる • こまかいことは、 Arduinoのほうでやってくれる
– 組み込みマイコンのプログラム開発は こまかいことも、ぜんぶプログラムで書く めんどくさいけど、高性能!
41
組み込みマイコン(H8) のプログラム開発
• パソコンで(C言語)でプログラムをつくる、 マイコンのメモリ(フラッシュメモリ)に書き込む
RS-232Cで接続
開発環境 GCC Developer Lite を使用 プログラムを入れる
今日は、H8マイコンを使った工作だ
• 今日は、H8マイコンを使った工作に 挑戦(ちょうせん)します
–さすがに、 H8マイコンのC言語プログラムをぜんぶわかるのは、むずかしい
–かんたんにせつめいします。
// I/Oの設定 P2.DDR = 0; //ポート2入力 P2.PCR.BYTE = 0xff; //プルアップMOS ON P6.DDR = 0; //ポート2入力 P5.DDR =0xff; //ポート5出力 //変数の定義 unsigned char sw; unsigned char cds; int wt; ・・・・・・
なにを作るか?
• なにを作るか?
–なにをうごかすのか?
–なにを検知して、どのように動かすのか? • これを仕様(しよう)といいます
–これをよく考えたあと システムとして考える
–入口は? 処理は? 出口は?
計測 制御
今日、工作するものは?
•なにを つくるの?
今日は・・・
ふみきり
踏切かんかん装置つくります
踏切かんかん装置
今回は プラレールは使いません
光センサーで 電車を検知
カンカンカン
LEDが チカチカ
踏切かんかん装置のシステム
• 入力 –光センサー(CDS)で電車を検知
• 処理 光センサーの状態を見る もし、電車を検知したら、 2個のLEDをチカチカ点灯 カンカン音を鳴らす
• 出力 LEDが2個 交互にチカチカ カンカンの音を出す装置 (音のアンプ、スピーカー)
光センサー(CDS)で電車を検知
光センサーの検知は 明るい
光センサーの検知は 暗い
電車キタッー!!
マイコンで、この光センサーの 明るい、暗い、の二つの状態を検知して、 調べることで、 電車のあり、なしを検知できる
システムが決まったら
• システムを
ハードウェアとソフトウェアに分ける
• ハードウェア(部品)
– 目に見える、さわれる マイコンもハードウェア
• ソフトウェア(プログラム)
– 目に見えない、頭でかんがえる パソコンで、プログラムをつくる
• できた、プログラムは マイコンに入れる
システムのハードウェア(部品)
• 入力 光センサー(CDS)とスイッチ (H8マイコンのI/Oポートにつながる)
• 処理 H8マイコン (アナログ出力から音を出す)
• 出力 LED2個( I/Oポートから出力) 音を出す装置 アンプ、スピーカー
ハードウェアをもっと細かく
• H8マイコンのI/Oポートを決める
• 入力 光センサー(CDS) ポート6の1番( P61)
スイッチ(ディップスイッチ) ポート2の1番( P21)
• 出力 – LED2個
• LED(右) ポート5の2番( P52) • LED(左) ポート5の3番( P53)
– アナログ出力(DA変換出力) DA出力0番(DA0)
システムのソフトウェア ( H8マイコンのプログラム)
• 入力 –光センサー(CDS)とスイッチがつながったI/Oポートから、状態を読み込む
• 処理 – 光センサー(CDS)の状態を判断して、出力を指示する
• 出力 • 2個のLEDを交互(たがいに)点滅させる • カンカンの音を作り、 アナログ出力(DA変換出力)から音を出す
H8マイコンのプログラム フローチャート(流れ図)
決まった時間をつくる
センサーの状態を読み込む
電車あり?
2つのLEDをチカチカ
カンカンの音を出す
スタート
なし
あり
ポート6の1番( P61)を 読み取る
ポート5の2番(P52) ポート5の3番(P53) を交互にオン・オフ出力
DA出力0番(DA0) からカンカンカンの音を出力
読み取った センサの 状態で、 判断する。もし電車があったら…
これは、概念を理解してもらうために、 簡単にした流れ図です 実際には、H8マイコンの タイマと呼ぶ機能を使っており、 少し複雑です
決まった時間をつくる
ちょっとむずかしいので、とばしてもOK Arduinoの場合は delay()を使えますが、H8マイコンの場合は、ありません。自分で作る必要があります。ここでは、H8マイコンのタイマと呼ぶ機能を使って、一定時間を作っています。
むずかしいので、とばしてもOK
H8マイコンのタイマと呼ぶ機能を使っています 一定時間ごとに、「割り込み」という機能で、知らせてくれます タイマの準備 void ituinit(void) //ITUイニシャライズ { ITU0.TCR.BIT.CCLR = 1; //カウンタクリア要因 ITU0.TCR.BIT.TPSC = 0; //25MHz 周期 0.04μs ITU0.GRA =120; //一定時間の値を設定 } タイマのスタート処理(main()の中) ITU0.TIER.BIT.IMIEA = 1; //IMFAフラグによる割り込み許可 ITU.TSTR.BIT.STR0 = 1; //タイマスタート
センサーの状態を読み込む
ポートP20(スイッチ)とポートP60(CDSセンサ)の値を 変数swとcdsに読み取る。
Main(){
・・・・・・・・・・
while (1){ //繰り返し
sw = ~P2.DR.BYTE; //ポートP2からデータ入力、“1”、“0”を反転
cds= ~P6.DR.BYTE; //ポートP6からデータ入力、“1”、“0”を反転
if ((sw & 0x01)||(cds & 0x01) ) {
・・・・・・・・・・
}
}
電車あり?
電車があるのか?無いのかの判断をする
while (1){
//センサーの状態を読み込む
・・・・・・・・・・・・・・・・
if ((sw & 0x01)||(cds & 0x01) ) { //もし、センサーが検知(暗い)かったら
if( f_kankan==0){ //ふみきりカンカン状態にして
f_kankan=1;
P5.DR.BYTE=0x0A;//LED P51 P53 点灯 1010 //LED(左)をつける
chikachika = 0; //チカチカさせるための変数
}
EI; //カンカン音とチカチカをするためにタイマ起動
ITU0.TIER.BIT.IMIEA = 1;//タイマ 割込み有効
ITU.TSTR.BIT.STR0 = 1; //タイマスタート
}
2つのLEDをチカチカ
ふみきりカンカン状態で一定時間ごとに行う処理 if(chikachika == 0) // 変数chikachikaが0だと { P5.DR.BYTE=0x05;//LED P50 P52 点灯 0101 //LED左点灯 chikachika = 1; } else{ P5.DR.BYTE=0x0A;//LED P51 P53 点灯 1010 //LED右点灯 chikachika = 0; }
カンカンの音を出す
//ITUインターバルタイマ割り込み void int_imia0 (void) { ITU0.TSR.BIT.IMFA = 0; //割り込みステータスフラグクリア //波形データ出力 if (sindata[c] >= 128 ) { DA.DADR0 = (sindata[c]-128)/(x/1000) ; } else { DA.DADR0 = (sindata[c])/(x/1000) ;//dataを x/1000 で減衰 } c+=1; if(c==128) c=0; if (x > 2000) { //音の減衰処理 カンカンの音を カンカンらしくする処理 ・・・・
むずかしいので、とばしてもOK DA出力0番(DA0)から 「カンカンカン」の音を出力
カンカンカンの音を生成するために、DA変換を使って、SIN波
のデータをアナログの波形に変換しています。さらに、踏切のカンカンの音らしくするために、音を加工していますが、
複雑なので、ここでは割愛します
踏切カンカンのプログラム
• 踏切カンカンのプログラムは、 すでにH8マイコンに書きこんであります。
• ハードウェア(回路)を工作すると、 踏切カンカン装置を作ることができます。
踏切カンカン装置の工作
• ミドリとオレンジの部分を、工作します
• 細かいことは別の資料で説明します
マイコン
スイッチ
アンプ回路
LED 2個
CDS センサー
スピーカー
TA7368 ミニアンプ部品セット
各自で工夫してみよう
• 今回の工作では、踏切の形まで工作しません。各自、工夫してみてください。
• お手持ちのプラレールや、ブロックなどで作った模型の電車と組み合わせると、 より踏切らしくなります。
参考 さらに自分でプログラムしたい人は
• 参考書(開発環境のCD付)
• C言語による H8マイコン プログラミング入門
• 技術評論社 横山 直隆 (2003/8/30)
• この本と、USB-シリアル変換コネクタがあれば、C言語による開発ができます。
参考
H8マイコンのフラッシュROMの書込み1
• 専用書込みソフト • H8Write Turboを使用する (CD-ROMの中にあり)
• MOT形式のファイルをフラッシュ書込みソフトを使用して、H8マイコンに書込みできる。
• RS232CケーブルでPCとマイコンを接続
• H8マイコンは、書込みモード(マザーボードのS7 SW を書込)、マイコン基板のMD2ピンをショートさせる。
参考
H8マイコンのフラッシュROMの書込み2
• フラッシュROMの書込みは、RS232C経由でPCから書き込む
• H8マイコン側の S7スィッチをRUNの反対側に切り替える
• CPUボードのCN5 MD2にヘッダピンを挿す
• (電源を切って切り替えること)
RUN
write
ご清聴ありがとうございました ご清聴ありがとうございました
お問い合わせ、 講演・執筆・工作教室等の依頼は
Tw:@tentenV3 もしくは、FB または
http://triangle-ele.com/ のフォームから
パッチン電子工作も よろしく!
ただいま 段ボール工作と電子工作の融
合を策略中!
ダンボール くっすん は、東洋紙工株式会社の製品です くっすん は、四條畷市商工会が管理・運営しています
ダンボール くっすん