Diese Präsentation wurde erfolgreich gemeldet.
Wir verwenden Ihre LinkedIn Profilangaben und Informationen zu Ihren Aktivitäten, um Anzeigen zu personalisieren und Ihnen relevantere Inhalte anzuzeigen. Sie können Ihre Anzeigeneinstellungen jederzeit ändern.

ロボットシステム学2015第2回

7.491 Aufrufe

Veröffentlicht am

マイコンについて

Veröffentlicht in: Technologie
  • Als Erste(r) kommentieren

ロボットシステム学2015第2回

  1. 1. ロボットシステム学 第2回 上田隆一
  2. 2. 連絡事項 • 講義のページを作りました – https://lab.ueda.asia/?page_id=169 • 以下を掲載する予定 – 講義の内容の事前告知 – 事前学習、事後学習 – 講義で使ったスライド、資料等 Oct. 7, 2015 ロボットシステム学 2
  3. 3. 本日の内容 • マイコンの仕組み • 事前通告 – メモリのアドレスが分からないとちょっと 辛いかもしれません Oct. 7, 2015 ロボットシステム学 3
  4. 4. マイコン • この2つのモノの略語 – マイクロコンピュータ • 今で言うPC – マイクロコントローラ • ピンから様々な入出力が できるようになっているIC Oct. 7, 2015 ロボットシステム学 4 マイクロコンピュータ(コモドール64) https://commons.wikimedia.org/wiki/File:Commod ore64.jpg マイクロコントローラ(Atmel AVR ATmega8) https://commons.wikimedia.org/wiki/File:ATmega8_01_Pengo.jpg
  5. 5. マイクロコントローラ • 何のために使うか – デジタル回路に組み込んで使って機器を動かす – いくつかのピンから電気信号を入力 – しかるべき電気信号を出力 Oct. 7, 2015 ロボットシステム学 5 ATmega8 https://commons.wikimedia.org/wiki/ File:ATmega8_01_Pengo.jpg
  6. 6. マイコンが無いと・・・ • 回路の部分が増える • 回路が増えると・・・ – 変更できない – 基板の面積をとる – 故障したら自分で直さなければならない – 電圧・電流の計算面倒くさい – ・・・ • ソフトウェアで入出力の関係を 実装できるのがマイコンの有り難み Oct. 7, 2015 ロボットシステム学 6 CMOS こんなのを 自分で配線 (ただしICは使える)
  7. 7. マイコンの「入出力」 • とりあえず一つ例をみてみましょう。 – ボタンを押したらLEDが光る回路 • Banzi(著), 船田(訳): Arduinoをはじめよう, オライリー, 2012. • やりたいこと Oct. 7, 2015 ロボットシステム学 7 これを押す マイコン 光る
  8. 8. 入力 • マイコンのディジタルIOピンの1つを使用 – 「ディジタル入力」として使う – (マイコンはArduinoに乗っているAVRというものを使用) Oct. 7, 2015 ロボットシステム学 8 7番ピンを使用 (これだけ見ても 分からないけど)
  9. 9. 出力 • マイコンのディジタルIOピンの1つを使用 – 「ディジタル出力」として使用 Oct. 7, 2015 ロボットシステム学 9 13番ピンを使 用 (これも写真を掲載する ほどのものではないが。)
  10. 10. 配線する • 例: Arduinoとブレッドボードで • 入力 – スイッチを押すと20番の5Vが7番に – スイッチを離すとGNDの0Vが7番に • 出力 – LEDを13番とGNDの間に直結 Oct. 7, 2015 ロボットシステム学 10
  11. 11. プログラムを書く • 書くこと – ボタンを押したらLEDが点灯 • 7番ピンにかかっている電圧が5Vか0Vか読む • 7番ピンが5Vなら13番ピンに電圧(3.3V) • あるいはGitHubから 持ってくる – リポジトリ – (後日ライセンス についても取り上げます) Oct. 7, 2015 ロボットシステム学 11
  12. 12. マイコンに転送 • Arduinoでの転送方法については次回 • 動き出す Oct. 7, 2015 ロボットシステム学 12
  13. 13. 回路について • 今日はマイコンの中身の話ですが、 回路についてもちょっとおさらい – プルアップ・プルダウン – LEDに抵抗必要なんじゃないの? Oct. 7, 2015 ロボットシステム学 13
  14. 14. ディジタル入力と抵抗 • 抵抗は何のためにある? – 5V(HIGH)と0V(LOW)を確定させるため – 無いと「ハイインピーダンス状態」になる • HIGHかLOWか不定 • じゃあ何で10kWなんだ? – 下記トレードオフでだいたい10kW • 抵抗値が小さいと無駄な電流 • 抵抗値が大きいと電圧安定せず • 注: FETの回路なので電流は考えなくてよい Oct. 7, 2015 ロボットシステム学 14
  15. 15. プルアップ・プルダウン • 先ほどの例は「プルダウン」 – 抵抗がGND側に → プルダウン(下図左) – 抵抗がHIの電圧側に → プルアップ(下図右) Oct. 7, 2015 ロボットシステム学 15
  16. 16. プルアップ・プルダウンの使い分 け • バイポーラトランジスタ時代はプルアップが有利 – プルダウンだとOFF状態で電力を消費 • 今はFETなのでどっちでも一緒 • ただし・・・ – マイコンがプルアップ抵抗を持っている場合 • Arduinoのマイコンも持っている • 部品の点数が減るので製品を作るときは嬉しい – 異なる電圧レベルのICをつなぐ場合 • プルアップ抵抗の値を変えて合わせやすい Oct. 7, 2015 ロボットシステム学 16
  17. 17. LEDのつなぎ方 • 本当は抵抗が必要 – Arduinoのピンからあまり 電流が出ないので壊れない • 抵抗値の計算 – LEDに流したい電流の量を決める – 流したい電流の時のLED両端の 電圧を調べる – R = (ピンの電圧 – LEDの電圧) / 電流 Oct. 7, 2015 ロボットシステム学 17 例示したLEDの接続 本来
  18. 18. マイコンの中身 • 大雑把に言って以下の3要素で構成される – メモリ – MPU(micro processing unit) – I/O • 3要素がバスでつながっている Oct. 7, 2015 ロボットシステム学 18
  19. 19. メモリ • データやプログラムを置く • 以下の3種 Oct. 7, 2015 ロボットシステム学 19 用途 電源OFF後 のデータ 動作の 速さ フラッシュメモリ プログラム 残る 遅い EEPROM 保存用データ 残る 遅い SRAM 計算中のデータ等 消える 速い
  20. 20. ハーバードアーキテクチャ • プログラムとデータが分離されている – 普通のPCのアーキテクチャであるノイマン型とは 異なる • PICやAVRマイコン等はハーバード型 – 利点 • プログラムをSRAM上に置かなくて良い – 欠点(利点にもなる) • プログラムを動作中に書き換えることができない Oct. 7, 2015 ロボットシステム学 20
  21. 21. MPU(CPU) • 普通のPCのCPUに相当 – ほぼ同じ構造 • 特にARMはOSと共にモバイル機器にも使われる – メモリからプログラムやデータを読み込み メモリに計算結果を戻す – 7番ピンの入力を13ピンと連動させて・・・ というロジックはここで実現 Oct. 7, 2015 ロボットシステム学 21
  22. 22. MPUの構成要素 • 演算装置 – 四則演算 • 汎用レジスタ – 計算に使うデータやアドレスの一時置き場 • プログラムカウンタ – 実行されている命令のアドレスを指す • スタックポインタ – スタック領域のてっぺんを指す • 割り込みからの復帰等に使う • ステータスレジスタ – フラグの集まり(例:オーバーフロー・割り込み禁止・・・) Oct. 7, 2015 ロボットシステム学 22
  23. 23. メモリとMPU • 2つのメモリとそれぞれのバスで接続される – プログラム用メモリ・命令バス – データ用メモリ・データバス Oct. 7, 2015 ロボットシステム学 23
  24. 24. MPUでの演算 • これの繰り返し – 命令を命令用メモリから取得 • 命令: アセンブリ言語の1行に相当 – 命令に従ってレジスタや データ用メモリのデータを操作 • データを読んで演算装置で演算して書き戻す • 参考 – 坂井 弘亮 (著): 熱血!アセンブラ入門,秀和システム, 2014. • 実例豊富。様々なCPU – ヘネシー, パターソン(著), 中條他(監訳, 翻訳): コンピュータアーキテクチャ 定量的アプローチ 第5版, 翔泳社, 2014. Oct. 7, 2015 ロボットシステム学 24
  25. 25. I/OとMPU • どうやっている? – 7番ピンの電圧(HIGH or LOW)を読む – MPUから13ピンがHIGHになるように指令 • 答え – ピンはいくつかのグループに分かれて ポートとつながっている – ポートとMPUはデータバスでつながっている – ポートはピンの電圧を0,1に変換 – MPUはデータバス経由で0,1を読む Oct. 7, 2015 ロボットシステム学 25
  26. 26. ポートからデータを読む方法 • 以下の二種類 – メモリマップドI/O • データ用メモリと同じアドレス空間に ポートのアドレスがマッピングされている • PICやAVRはメモリマップドI/O – 参考: データシートの11ページ – 他、レジスタ等もデータ用メモリのアドレス空間に – ポートマップドI/O(I/OマップドI/O) • 別のアドレス空間が設定されている Oct. 7, 2015 ロボットシステム学 26
  27. 27. 割り込み • 今走っているプログラムを中断して 別のことをやる仕組み • 主にこういう状況で必要となる – 何か時間のかかる処理をしている – 同時に、外部の機器等からの入力を待っている – 時間のかかる処理を中断して入力が届いたか – 確認するコードを書くのは大変面倒 Oct. 7, 2015 ロボットシステム学 27
  28. 28. 内部割り込みと外部割り込み • 内部割り込み – MPU内部で起こる割り込み • ゼロ割り等 • 外部割り込み – 外部機器が要求 – ピンを通じて外部機器がマイコンに要求 – プログラムを書く側からすると、 走っているプログラムが突然中断して、 別のルーチンが実行されるように見える Oct. 7, 2015 ロボットシステム学 28
  29. 29. 次回 • Arduinoを使う – I/Oにどんなピンがあるのかは次回以降に • Arduinoのシミュレータ(ウェブサービス) – https://123d.circuits.io/ • できる人は事前に設定を • 次回時間をとります Oct. 7, 2015 ロボットシステム学 29

×