見出し画像

マイコンde学習しよう(マイコン編)AVR128DA28


マイコンの選択

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

今回トレーニングで使用するのはMicrochip社のAVR128DA28という8ビットマイコン(DIPタイプ)です。
AVRマイコンのラインナップには、ATmega系、ATtiny系、ATXmega系、AVR-Dx系があります。(他に製造中止品のAT90S系があります)
これらのマイコンはアーキテクチャ(論理構造)がほぼ共通で、このうちAVR-Dx系が最も新しく、2020年に登場しました。
従来のものに比べ機能強化等が図られていますが、最も変わったと感じる点は、書き込み方式がISP方式(ICSP方式ともいう)からUPDI方式というものに変わった点でしょうか。
ISP方式に比べ、書き込みに必要なピン数が6→3ピンになります。
AVR-Dxに関しては、CQ出版社の「トランジスタ技術 2021年4月号」に特集が組まれていますので、興味のある方はバックナンバーを入手してください。
AVR-Dx系マイコンは国内の通販業者から入手可能ですが、型式は限られるようです。(2024年1月現在)
調べたところ、マルツオンラインでDIPタイプ、表面実装タイプの取り扱いがありますがDIPタイプは高いです。
直接Digikeyから購入すると安いですが、海外からの輸入になるので送料が高いです。
秋月電子通商で2023年12月にAVR64DD28-I/SPというDIPタイプの取り扱いが始まりました。価格も330円と比較的安いですが、残念ながらトレーニングに使用するAVR128DA28とはピン配置が(ほんの少し)異なります。
ただ、アーキテクチャ(論理構造)は共通なので、本基板でAVR128DA28のプログラミングを理解すれば、AVR64DD28-I/SPを購入して自分が設計した基板に使用するのは容易なはずです。


今どきのマイコンは、一つのピンが複数の機能をもっており、これをマルチファンクションと呼んでいます。
AVRD128DA28 は図のようにピンと機能が割り当てられており、例えばピン18 は、PF6 の他に()内のRESET の機能を持っています。
機能としてレッスンに関係するもののみ抜粋し、下表にまとめました。
機能が横の並びで、左端がマイコンのピン番号になります。
右端の接続は、トレーニング基板のマイコンから部品への接続先です。

ピン割当て表

ピン名称はポート名とポートのピン番号を示し、例えばPA7はPORTAの7番目のピンという意味です。(マイコンのピン番号と1対1に対応します)
特定はクロック入出力、電源やリセット関係などです。
ADCはAD変換関係で、AINはアナログ信号入力ピン番号を示します。
ACはアナログコンパレータ関係、DACはDAコンバータ関係です。
USART、SPI、TWIは通信関係の機能です。
TCA0はTCAタイマ0の機能です。


<ポートピン構造説明>

PORTxnのxはポート名(本マイコンにおいてはA、C、D、F)を、nはビットI位置(0~7)を示します。
PORTxnを縮めてPxnともいいます。(例えばPORTA3→PA3)

ポートピン構造


図中Aの部分で入出力ピンPxnを入力、出力のどちらにするかがDIRレジスタにより決定します。
出力にした場合は、図中Bの部分で出力を1(High)、0(Low)のどちらにするかがOUTレジスタにより決定します。
入力にした場合は、図中Cの部分でPINnCTRLレジスタのPULLUPENビットが1であればPxnピンはプルアップされます。
また、INレジスタに入力値が格納されますが、図中Dの部分でPINnCTRLレジスタのISC[2:0]ビットの割込み許可条件に一致すれば、INTFLAGSレジスタの該当ビットがセットされます。


<クロック説明>

マイコンはクロックというHigh、Lowの波形変化でタイミングをとって処理を行います。

クロック機構図

本マイコンでは4つのクロック源(OSCHF、OSC32K、XOSC32K、EXTCLK)から選択できます。
このうちOSCHFとOSC32Kはマイコン内部で生成するクロックです。
XOSC32KはXTAL32K1(ピン番号17)とXTAL32K2(ピン番号16)に32.768kHz水晶振動子をつないでクロックを得ます。
EXTCLK(ピン番号22)は外部からクロックを供給します。
どのクロック源を使用するかは、CLKCTRL.MCLKCTRLAレジスタのCLKSEL[3:0]ビットで選択します。
OSCHFは、CLKCTRL.OSCHFCTRLA レジスタのFRQSEL[3:0]ビットにより、1、2、4、8、12、16、20、24(MHz)から一つに決まります。
(レッスン6「クロック変更」のところで解説しています)
CLKCTRL.MCLKCTRLBレジスタのPDIV[3:0]ビットで選択したクロックを分周することができます。
クロックは最終的にCPUに供給するCLK_CPUとマイコン内の周辺機能に供給するCPU_PERになります。
またCLK_PERはCLKOUT(ピン番号1)へ出力可能です。

CLKCTRL.MCLKCTRLAレジスタ、CLKCTRL.MCLKCTRLBは本レッスンでは操作しないので説明を省略します。
興味のある方は、Microchip 社 AVR128DA28 データシートを参照ください。

https://ww1.microchip.com/downloads/en/DeviceDoc/AVR128DA28-32-48-64-DataSheet-DS40002183B.pdf

ここから先は

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

AVRマイコンプログラミング入門用として、レッスン形式にまとめました。 マイコンの機能の理解にも役立ちます。 トレーニング用の基板頒布も行…

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

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