見出し画像

ATMEGAで学習しよう(マイコン編)


マイコンの選択

マイコンを選ぶ基準にビット数というものがあります。
簡単に言うと、ビット数が大きいほど一度に処理できるデータが増える=処理速度が上がる ということが言えます。
趣味の電子工作用としては、8、16、32ビットマイコンが主流です。
あとは、マイコンの入手性と価格(手に入れやすく安い)、理解が容易かどうか、開発環境が容易に手に入るかなどになるかと思います。
私的意見としては、入門用としては32ビットは画像処理など大量データの高速処理向きで理解のハードルが高い、16ビットは入手性に問題あり?となり、8ビットマイコンが最適と考えます。
8ビットマイコンは色々とあるので何を選ぶかですが、マイコンの入手性・価格、開発環境の入手性、ネット情報の多さなどから、マイクロチップ・テクノロジー(Microchip)というメーカーのマイコンが良いと考えます。
MicrochipのマイコンとしてはPICマイコンが昔から有名ですが、2016年にAVRマイコンで有名なアトメル社(Atmel)を買収し、ラインナップに加えました。
個人的には、AVRマイコンのほうがPICマイコンよりプログラムが作りやすいと感じており、入手性も悪くないことから私はもっぱらAVRマイコンを使っています。
次にマイコンのピン数ですが、8ピン、16ピン、28ピン、40ピンあたりが主流ですが、それ以外のピン数も存在します。
ピン数が少ないと接続できる周辺部品が限られ、かといって多すぎてもマイコンを搭載する基板の面積が大きくなってしまうため、適当なところで28ピンを愛用しています。
使うのはDIP品とよばれるもので、基板に半田付けしたICソケットに挿して使います。というのも、万が一マイコンを壊しても容易に交換できるように考えてです。(表面実装タイプだと交換が大変なので)

今回トレーニングで使用するのはMicrochip社のATMEGA88という8ビットマイコン(DIPタイプ)です。
ただし、アーキテクチャはATMEGA系で共通です。
AVRマイコンのラインナップには、ATmega系、ATtiny系、ATXmega系、AVR-Dx系があります。(他に製造中止品のAT90S系があります)


ピン配列

まず、マイコンの各ピン配置と機能割当を見ていきます。

今どきのマイコンは、一つのピンが複数の機能をもっており、これをマルチファンクションと呼んでいます。
Atmega88 は図のようにピンと機能が割り当てられており、例えばピン1は、PC6 の他に()内のPCINT14 とRESET の機能を持っています。
分かりづらいので、ポート別の表にしてみました。

黄色の行は0~14 番ピン、緑色の行は15~28 番ピンです。
表の機能は、私の主観で分類したものです。各機能についてはレッスンの中で説明します。
部品引当は、基板の部品とマイコンのピン対応を示しています。
「ATMEGAで学習しよう(基板編)」の回路図を参照ください。
表でDDR、PORT と書いた部分の0 と1 については後で説明します。

<ポートについて>
例えば、このマイコンではポートPBn、PCn、PDn(n は0~7)の3 つのポートを持っていますが、これはハード的にポート(のピン)を呼ぶ際の名称だと思って下さい。
また、n が7 まで無いポートがあります(例えばPC はPC0~PC6 まで)。
プログラムでは、各ポートに対しDDR*、PORT*、PIN*の3 つの設定領域(8 ビットレジスタ)を持っています。(*はポートによって決定します。例えばPB ならDDRB、PORTB、PINB となります)
・DDRはポート方向レジスタと呼び、ビット値が0 は入力、1 は出力になります。
・PORTの値は、DDRの対応するピンを出力に設定した場合、1 はHigh、0 はLow を出力します。入力に設定した場合は、1 はプルアップあり、0 はプルアップなしになります。 (プルアップありは、マイコン内の抵抗経由でピンが電源に接続されます)
・PINはそのときのピンの状態(High かLow か)を読み出します。

<部品引当とDDR、PORT 設定について>
PB0,PB1,PD5(LED1~LED3)は電源ON したときは消灯させるので、High を出力します。(回路上、Low 出力で点灯するようにしているため)
なので、ピンの方向レジスタビット(DDR*)は1 に設定し、ポートレジスタビット(PORT*)は1 に設定します。
PC0(VR1)はレッスン10「AD 変換」で使用しますが、電圧値をプルアップ無しで入力するので、ピンの方向レジスタビット(DDR*)は0 に設定し、ポートレジスタビット(PORT*)は0 に設定します。
文中、0 出力とはLow 出力すなわちGND と接続、1 出力とはHigh 出力すなわち5V と接続されることを意味します。
PC4(U3-SDA)とPC5(U3-SCL)はレッスン13「I2C 通信」で使用しますが、0 出力として下さい。
レッスン8「通信(USART)」で使用しますが、PD0(RXD(U1-TX))は受信なのでプルアップ入力、PD1(TXD(U1-RX))は送信なので、0 出力として下さい。
PD2~PD4(SW1、SW2、SW3)は押しボタンスイッチなので入力で、押されたときマイコンのピンがGND につながり、スイッチが押されるまではHigh が入力される状態にしたいので、プルアップ入力にします。

<それ以外のピン設定について>
PC6(RESET)は、プルアップ入力に設定します。
PB4(MISO)は書き込み器J1、または温度センサU4-SDO からの信号を入力するのでプルアップ入力に設定します。
PB3(MOSI)は書き込み器J1、または温度センサU4-SDI へ信号を出力するので0 出力に設定します。
PB2(SS(U4-CS))はレッスン14 「SPI」のところで説明しますが、初期値として1 出力に設定します。
使っていないピンは0 出力に設定します。

ここから先は

0字
単体で有料公開している記事を集めていますので、まとめてご覧いただくとおトクです。

AVRマイコンプログラミング入門用として、レッスン形式にまとめました。 マイコンの機能の理解にも役立ちます。 対象とするマイコンはATme…

期間限定 PayPay支払いすると抽選でお得に!

この記事が気に入ったらサポートをしてみませんか?