理工学部都市システム工学科2回生のバイト戦士です。昨年はGitの勉強した話を書いたと思います。
-
序章
1回生までハードウェアとは縁もゆかりもありませんでした。2回生になってシステム管理局に配属され周りの自作勢や電子工作勢の話に全く入っていけないのは酷なので、勉強をしはじめました。そして、夏からまともに触り始め、進捗の秋を過ぎ、4か月程度が経ちました。
現在に至るまで様々なマイコンやマイコンボードを使ってきたのですが、中でも”このマイコン”について理解を深めたいなと思ったので、そんなにすごい話ではないですが、クリスマスなんでこの機会にお話したいと思います。
-
ATMega328Pとは
写真の中央にあるマイコンです。このマイコンは秋月電子にて230円程度で売られてます。ピンは28本ついており、そのそれぞれに電源回路やGND、シリアル回路、リセット回路などの役割を各々で持ちます。一般的にこのマイコンは「AVR」と呼ばれています。「AVR」とは米国Atmel社製のマイクロコンピュータの事を指します。対して「ARM」や「PIC」など他にもいくつかの種類が存在しますが、ほとんどが触れたことがないため今回は割愛させていただきます。
-
ATMega328Pにブートローダを書き込む
一般的に「Arduino Uno」というマイコンボードが普及し始めてから、初心者が一番初めに触るようになったマイコンがATMega328Pだと思います。以前まではプログラムを書き込む専用のライタとかもあったそうですが、今は自分でプログラムを書き込む回路を作成して「Arduino Uno」と統合開発環境「Arduino IDE」を用いて行えます。
マイコンにはプログラムを書き込む必要があり、その際に「ブートローダー」といったプログラムを書き込む必要があります。「ブートローダー」の役割として、「マイコン起動時に作成したプログラムをメモリに読み込んでくれる」役割を持ちます。このマイコンに内蔵されているメモリはフラッシュメモリ、RAMやEEPROMがあるそうですが、ここで重要になってくるのはフラッシュメモリです。フラッシュメモリにプログラムを書き込まないと実行しない仕組みになっているそうなので、上記のメモリが「ATMega328P」だとフラッシュメモリに値するというわけです。左の画像はブートローダを書き込む回路です。
22pFのコンデンサと10kΩの抵抗、16MHzの水晶発振子を使用しています。
あと「ブートローダ」のプログラムは、自分で書かないといけないか?という質問に対しては「NO!」です。「Arduino IDE」にて「Arduino ISP」というプログラムのサンプルがあり、これを用いることで「ブートローダ」を書き込むことができます。以下がそのプログラムです。「ツール」→「マイコンボード」で「Arduino/Genuino Uno」を指定し、「ツール」→「書き込み装置」にて「Arduino as ISP」と指定するとあとは「ブートローダを書き込む」を選択すると恐らく書き込みを実行してくれると思います。
新たなプログラムはPCからUSBポートを介して「Arduino Uno」に送られてきますが、内部でシリアル-USB変換回路ICが内蔵されてるらしく、「Arduino」の変換回路により、シリアル通信でマイコンと接続しており、マイコン内のシリアルインターフェースにてPCからのプログラムを受信すると、そのまま以前に書き込まれたブートローダがフラシュメモリに読み込ませ、ようやくプログラムが実行されるとのことです。これでようやくマイコン単体と様々な回路をつなぎ合わせて制御できるようになります。
-
おわりに
現在ではブートローダが書き込まれてる状態のマイコンも市販で売られており、統合開発環境も整い、どんどん一般層に対しての閾が低くなってきていると思います。ちなみに私は今後、もう少しこの「ATMega328P」にある程度勉強して触れた後、他の「ATtiny」やPICマイコン各類に触っていけたらなあと思います。