O slideshow foi denunciado.
Utilizamos seu perfil e dados de atividades no LinkedIn para personalizar e exibir anúncios mais relevantes. Altere suas preferências de anúncios quando desejar.

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

7.461 visualizações

Publicada em

マイコンについて

Publicada em: Tecnologia
  • Seja o primeiro a comentar

ロボットシステム学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

×