・オンボードプログラミング用のピンもったいなくない?

私は(今のところ)AVRマイコンを使っています。

AVRマイコンはオンボードプログラミングができるようになっていまして。
基板にピンを生やしておけば、そこにライターを差し込んで
プログラムの書き込みができるのです。
マイコンを外す必要がないから、楽なんですよね。

この書き込み用端子は通常のIO端子と同じように使えますが、つながる回路によっては
プログラムが書き込めないこともあるので、私は可能な限り空けるようにしています。
でも、ただ空けておくのはもったいない!IOが減るので。

ということで、プログラム書き込み用のピンに何かぶら下げて使ってみることにします。


今回は、少ないピンでできるだけの情報量を得るために、
このピンを使ってシリアル通信をします。
使用するマイコンはATmega328Pです。

CIPOやCOPIにシリアル通信機能は割り振られていないので、これはソフトウェアで実装します。
シリアルやI2Cは、ハードウェアが少しわかる人ならAVRのデータシートを見るだけで、
あとは自力ですぐプログラム書けると思います。

というわけで、プログラム書きました。
無意味なデータ送っても面白くないので、ES9018K2M制御用のプログラムに
書き足す形で(関数にしてメインプログラムから読み込む形で)組み込みました。

あとはつなぐ相手側のプログラムも書いて接続。
6ピンのコネクタがなかったので、2ピンの、しかも全然用途の違うピンで無理やりつないでいます。
こんな感じ。

 

…もう何でもありだな......。

今回は、ピンが立っている側(緑色のキャラクタLCD)をシリアルの送信側、
Arduino UNO R3(白抜き文字のキャラクタLCD)を受信側としました。
プログラムはどちらもAVRの書式で書いています。
(Arduino UNO R3はAVRとほぼ同じ書き方で動きます。)

 

基板間の配線はGNDと通信線のみ。右下に見えている、灰色と紫色の線がそれです。
Arduinoボードには5V、送信側ATmega328Pには3.3Vを別々に供給しています。
書き込み用のピンに電源も出ているので、電圧が同じならそこからとっても良いですね。


動作は上の写真を見ての通りなのですが、普通に通信できています。
これで16文字4行になりました。
上側の白抜き文字LCDが追加分で、ここにはボリュームレベル(減衰量)と、
そのときのボリュームレジスタの値を表示しています。
ボリュームを無効にするとこの表示も書き換わるようになっていますが、
ES9018K2Mにボリューム無効モードなんてないので、音量最大の指示になるだけです。

せっかくコネクタで取り外しが楽なので、追加分には普段は使わないデータの表示や、
受信側にしてリモコンからデータを受ける…なんてことをしても楽しいかもしれません。
今回はほとんどバラックですが、受信・LCD制御用のマイコンとLCDを
モジュールにしてしておくと使いやすそうです。
それぞれにID振ってあげれば、同じラインにたくさんぶら下げて
それぞれ違う内容を表示するなんてこともできそうなので、夢が広がりますね。

―――


2023年7月。


トップページへ

© 2022 Nono

inserted by FC2 system