メディア

マイコンはどうやって動くのか? 〜LEDを光らせてみる〜魔法の部品“マイコン“を使いこなそう!(3)

今回はCPUがどのように周辺機能を動かしているのかを説明します。さらに、Spansion(スパンション)製のARMマイコン「FMファミリ/MB9BF568R」を例に、LEDを光らせる方法を説明します。

» 2014年04月23日 10時00分 公開
[PR/EE Times]
PR

 前回はマイコンで何ができるかを知るために、その中身を少し詳しく見てみました。さらに、ARM(アーム)と呼ばれるマイコンの種類について説明しました。

 今回はCPUがどのように周辺機能を動かしているのかを説明します。後半では、Spansion(スパンション)製のARMマイコン「FMファミリ/MB9BF568R」を例に、LEDを光らせる方法を説明していきます。


マイコンへの命令書が「プログラム」

 マイコンが、CPUと周辺機能からなる電子部品であることは、前回説明しました。では、実際にCPUはどのように周辺機能を動かしているのでしょうか? いくら有能な計算機でも、何を計算させたいかを入力しなければ動きませんよね。

 この「マイコンに何をさせたいか」を表す命令が書かれているのが「プログラム」です。

 そして、マイコンの中でこのプログラムを格納する場所を「メモリ」といいます。メモリは、ある一定の大きさの箱の集まりからできていて、各箱にその位置を示す「アドレス」が割り振られています。

 一般的に、プログラムを格納するメモリには、電源を切ってもデータが消えない、不揮発性メモリが使われています(逆に、電源を供給しなければデータを保持できないメモリを揮発性メモリといいます)。

 Spansion製FMファミリでは、プログラムを格納するメモリとして「フラッシュメモリ」を搭載しています。フラッシュメモリは、電源を切ってもデータが消えず、データの書き換えが可能なため、万が一プログラムに間違いがあった場合でもプログラムを修正して再び書き込むことができます。

 さて、ここまでマイコンを動作させるために「プログラム」が必要であること、そのプログラムを格納する「メモリ」がマイコンに搭載されていることを説明してきました。ここからは、CPUがフラッシュメモリに保存されたプログラムを使って、どのように周辺機能を動かしたり、計算をしたりしているかを見ていきましょう。

1.フラッシュメモリにプログラムを書き込む

 まず、マイコンを動かす準備として、作成したプログラムをマイコンに搭載されているフラッシュメモリに書き込みます。書き込み方法は、実際にマイコンに積まれている周辺機能によって変わってきますが、USBを使用する方法や、マイコンの周辺機能のシリアル通信機能を使用する方法などがあります。いずれの方法でも、マイコンの端子を通して書き込みを行います。

2.CPUがフラッシュメモリからプログラムを読み込む(命令フェッチ)

 電源を入れると、CPUはフラッシュメモリのプログラムを取りに行きます。この動作を「命令フェッチ」といいます。CPUは、プログラムを正しい順番で取りに行くために、次のプログラムが置かれているフラッシュメモリのアドレスを自分の中に持っています。CPUは、このアドレスを見て、フラッシュメモリにプログラムを取りに行きます。取り出したプログラムはCPUに保存されます。

3.CPUがフラッシュメモリから取ってきたプログラムを解析する(命令デコード)

 次に、CPUは「2.」でフラッシュメモリから取ってきて保存したプログラムが、どのような命令なのかを解析します。この動作を「命令デコード」といいます。

4.CPUが解析した命令を実行する

 最後に、CPUは「3.」で解析した命令を「実行」します。周辺機能を動かすために命令を出したり、計算を行ったりします。周辺機能は、CPUからの命令に従って動作を開始します。

【図1】マイコン動作の流れ(左)とCPUの命令処理の流れ (クリックで拡大)

 ここまでの説明を簡単にまとめます。

・マイコンにはプログラムを格納するメモリが搭載されています。

・マイコンを動かすには、あらかじめメモリにプログラムを書き込む必要があります。

・CPUは「命令フェッチ」「命令デコード」「実行」の順番で命令を処理して周辺機能を動かします。

LEDを光らせよう

 現在、身の回りには、LED(発光ダイオード)を使用した製品が数多く存在します。イルミネーションの電飾、信号機やLED電球、電車の行先掲示板なんかにもLEDが使われています。このように、さまざまなところで使用され、今や私たちの生活になくてはならないLEDですが、実はマイコンを使用すれば、簡単に制御することができます。マイコン内部の周辺機能を使用することで、LEDをただ光らせるだけではなく、一定の間隔で点けたり消したり、明るさをゆっくり変えていったりといった、電池を付けるだけでは実現できない少し複雑な動作をさせることができます。この少し複雑な制御については、次回に説明することにします。

 ここからは、Spansion製FMファミリ「MB9BF568R」を例として、LEDを光らせる方法を説明します。

【図2】MB9BF568R(LQFP120)

 MB9BF568Rは、ARM社のCPUを搭載しているARMマイコンです。マイコンに電源を供給するためのピンも含めて120本の端子を持っています。ここでは全てを書きませんが、周辺機能としては、USBと接続するためのUSBインタフェース、アナログ信号をデジタル信号に変換するA/Dコンバータ、逆にデジタル信号をアナログ信号に変換するD/Aコンバータ、時間を計ったり信号の幅を測定したりするのに使用するさまざまなタイマーなどを搭載しています。

 今回は、MB9BF568Rの14ピン(14番目の端子)「P30」にLEDを接続します。また、マイコンに供給する電源の電圧は3.3Vとします。

 「P30」は「汎用I/Oポート」という機能により、端子を入力方向に設定したり、出力方向に設定にしたりすることができます。入力方向にすると、外部からの信号をマイコンに取り込むことができます。出力方向にすると、マイコンから電源電圧と同じくらいの電圧の信号(Hレベル信号)を出したり、出力を0V(Lレベル)に落としたりすることができます。

 プログラムを作成する前に、何をやりたいのかを整理しておきましょう。

 今回やりたいこと(マイコンにさせたいこと)は、P30に接続したLEDを光らせることです。では、どうすればLEDは光るのでしょうか?答えは簡単で、豆電球と同じように電源を使ってLEDに電圧をかけて電流を流せばいいのです(電流の流れすぎで電源やLEDを壊さないように、必ず抵抗を入れましょう)。今回はLEDに電圧をかける役割をMB9BF568Rに担ってもらいます。

 やりたいことが明確になったら、いよいよプログラムを作成します。今回は、P30に接続しているLEDに電圧をかけたいので、まずは、P30を出力方向として使用するようにプログラムします。次に、P30からHレベルを出力させるようにプログラムします。これでプログラムは完成です。作成したプログラムをマイコン内部のフラッシュメモリに書き込みましょう。

 ここまで来たらあとは、簡単です。マイコンに電源を入れるだけで、CPUが、フラッシュメモリからプログラムを読み出し、命令を解析して、汎用I/Oポートに「P30を出力設定して、Hレベルを出力しろ」という命令を出してくれます。汎用I/Oポートは、CPUからの命令通りにP30からHレベル(今回の場合は3.3Vくらい)を出力します。

 これで、LEDに電圧がかかり、LEDを光らせることができます。

【図3】LEDを光らせよう (クリックで拡大)

 今回は、マイコンのCPUがどのように周辺機能を動かしているのかを見ていきました。また、FMファミリMB9BF568Rを使ってLEDを光らせる方法を説明しました。次回は、MB9BF568Rの周辺機能を利用して、もう少し複雑にLEDを光らせる方法を考えてみましょう。また、マイコンがどのようなものに使用されているのか、FMファミリを例に具体的見ていき、私たちの生活にマイコンがどのように関わっているのかを見ていきましょう。


※この記事は電波新聞社発行の電子工作マガジンの2013冬号に掲載されたものです。許可を得て転載しています。



Copyright © ITmedia, Inc. All Rights Reserved.


提供:Spansion Inc.(スパンション)
アイティメディア営業企画/制作:EE Times Japan 編集部/掲載内容有効期限:2014年5月22日

ニュースリリース/トピックス/イベント

大容量かつ機能安全適合が求められる車載環境に特化して設計されたSemper NORフラッシュが、次世代ADASシステムのさらなる進化に向けて東芝の先進運転支援システムViscontiファミリに採用。

12月9日13時(アメリカ東部時間)よりハンズオンワークショップを開催。超低電力かつ柔軟性と安全性を兼ね備えたPSoC 6 MCUの他、Modus 2.0とArm Mbedを用いてクラウド接続のIoTエッジノードの開発方法を解説します!

Modus Toolbox 2.0では、1つのプラットフォームでPSoC MCUとBLE、Wi-Fi、MeshなどCypressソリューションの設計が可能。MbedやFreeRTOSもサポートしており、GitHubでサンプルコードのダウンロードが可能

メインストリームおよびエントリーレベルのノートPC/デスクトップPC向けに、コスト効率に優れたシングルポートUSB-Cコントローラーを発表!従来のUSB Type-AポートからUSB Type-Cポートに移行する必要があるシステムに最適。

多くのHMIが容量センシング技術と誘導センシング技術に移行しています。サイプレスのCapSense容量センシングとMagSense誘導センシングを活用して、HMIアプリケーションの設計方法を解説します。ぜひご参加ください。

無償サンプル/ツール

弊社の販売代理店よりサンプル品をオーダーすることが可能です。上記サイトより、ご希望の代理店を選択してください。

PSoCやCapSence、USBコントローラーなど、Cypress製品を使ったデザイン設計が可能なソフトウェアおよびドライバーを無償でダウンロードいただけます。

Cypress製品のあらゆるドキュメントをダウンロード可能なサイプレス ドキュメント マネージャー (CDM) を提供しています。CDMソフトウェアは上記よりダウンロードが可能です。

販売代理店(順不同)

RSSフィード

公式SNS

All material on this site Copyright © ITmedia, Inc. All Rights Reserved.
This site contains articles under license from AspenCore LLC.