ProMicroから脱却したい! #5

Promicroから脱却を目指すシリーズ第5回です.

投稿頻度が週1回になりつつありますが,私は生きています.
直近1週間はいろいろと進捗があったのですが,記事になるのはまた先になりそうです.

※このシリーズは全編に渡ってド素人が書いてお入ります.間違ったことも多々書いていると思うので参考にしないでください.

おさらい

前回はついにユニバーサル基板上でコントローラが動きましたね.回路図を写し間違えるというくだらないミスのせいで動くまでに結構時間がかかってしまいました.

今回は実際にスイッチをつなげてキーボードを動かしてみます.

実験の概要

ATMEGA32U4コントローラを使って何を実験するのか初めに整理しておきましょう.

実験の目的はどのI/Oポートが使えるのかを調べることです.


ProMicroには18個のI/Oポートがありますが,ATMEGA32U4コントローラにはデータシート上25個のI/Oポートがあります.

この25個のI/Oポートが使えるのであれば,一つのコントローラでProMicroよりも多くのキースイッチが制御できることになります.


前回やっと動いたこちらを使って,どのI/Oポートを使うことができるのか検証していきます.

基板上のピンヘッダはこのために用意していました.25個あります.

たまには役に立つ

実験を行うために,過去に作ったキーボードを 引っ張り出してきました.



これはPCBを設計する前に試作したキーボードです.

ユニバーサル基板に余っていたタクタイルスイッチを5行7列で組んでいます.

ProMicroはピンヘッダでの接続だったため,今回の実験で活躍しました.

(過去に作ったこういったものが捨てられないのですが,とっておくと役に立つときもあります) 

まずは頭の整理から

ワーキングメモリの少ない私は並行作業がとっても苦手です.ポンコツです.

先の作業を円滑に進めるために,頭の整理をしておきましょう.

なにがややこしいかというと,ProMicroにかいてあるポート名とファームウェア上でのポート名が異なることです.


度々登場しているこちらの画像ですが,画像を確認するとProMicroの一つのポートに複数の記号が割り振られています.

左上にその内訳(色ごとに)が書いてある通り,扱い方によってそれぞれのポートの”呼び名”が異なっています.

例えば,ProMicroの2番ポートはArduino上ではD2であり,ファームウェア上ではD1ポートです.なぜ違う!と言いたい気持ちはそっと抑えましょう.

ここまでなら2つの対応関係なので比較的単純です.
実際,ProMicroを使ったとしてもファームウェアを書くときにはこの対応関係を考えなくてはいけません.

で,私はATMEGA32U4のI/Oポートが使えるか確認したいので,ATMEGA32U4のI/OポートとProMicroのポートの対応関係についても考える必要があります.

分かりづらいですが,”ATMEGA32U4の○番ポートはProMicroでは△番ポートで,ファームウェア上では□番ポート”というこの3つの対応関係が知りたいわけです.

(このあたりの解釈についてはあまり自信がないのであてにしないでください)

頭がこんがらがってきました.



こちらはProMicroの回路図です.これを見れば欲しい情報が分かります.

画像右がATMEGA32U4で左下がProMicroのポートを示しています.

例えば,ATMEGA32U4の36番ポートはProMicroのA0ポートで,F7ポートであることが分かります.



エクセルでテキトウに対応関係を表にしておきました.

これを手元のiPadで見ながら作業することで先の作業効率が各段に上がります(私の場合).

実験方法と実験計画

ATMEGA32U4の25個のI/Oポートがキースイッチの入力に仕えるのか確認するためには3実験すればいいことになりますね.

First step

実験用に用いたキーボードはProMicroで動作するものですので,まずは前回作ったATMEGA32U4の回路をProMicroの代替として動作を確認します.

上記の対応表を基に,実験用キーボードのProMicroのポート(実際にはProMicroは接続していないので,ProMicroに相当するポート)とATMEGA32を”正しい対応関係で”接続します.

ファームウェアは過去に書いたものをそのまま使うことにします.ファームウェア上でも,対応関係は正しい状態です.

この時の状態として,実験用キーボード上でProMicroのA0に接続されていたところと,ATMEGA32U4の36番ポートに接続します.ファームウェア上ではF7と書きます.

これにより,ATMEGA32U4のI/Oポートのうち12個の動作を確認します.(この行程はI/Oポートの確認というよりも,実際に組んだ回路の確認という意味合いが大きいです)

Second step

次に,前行程で動作を確認することのできなかったI/Oポートのうち,新たに12個のI/Oポートの動作を確認します.

前行程の状態から,ATMEGA32U4につながる配線を入れ替えることで実験します.

使用するI/Oポートが変わるので,ファームウェアは書き直すことになります.

この時の状態として,実験用キーボード上でProMicroのA0に接続されていたところと,ATMEGA32U4の40番ポートに接続します.ファームウェア上ではF1と書きます.

対応関係にズレが生じるので段々と頭がこんがらがってきましたね.

Third step

最後に,ATMEGA32U4のI/Oポートのうち確認できていない最後の1個の動作を確認します.

やり方は前行程と同様です.


それぞれの行程における接続は以下の通り.


実験計画についてはこんなところでしょうか.

おわりに

この実験にはあまり乗り気ではなかったので,実験を始めるまでに無駄に時間がかかってしまっていました.始めてしまえば結果が出るまでやり切ってしまうのですが...

この実験については終始頭がこんがらがってたのでもうやりたくありません.
ポートの名前を決めた人を呪いたい気分ですらあります.


さて,実験の結果については次回へ持ち越しになりましたが,気長にお待ちください.

冒頭でも言いましたが,現在平行して取り組んでいる事もあるので,そちらについても近々記事にしたいと思います.

ではでは~

コメント