結局、原因はまた別のところにあった。このピンのピンチェンジ割込み許可が抜けていたのである。Megaや新世代のAVRマイコンは、ピンチェンジ割り込みはピン毎に設定できるが、そのマスク記号の番号はピンの番号と違う。確かめたはずなのだが、動かないピンの設定がされていなかった。動いているように見えたのは、本来マスクされているピンの割り込みでsleepが抜けたことである。ピンチェンジ割り込みはグループ単位で割込みを制御しているので割込み禁止にしていても割り込みが起きているようだ。設定し直して何の問題もなくスイッチは機能し、逆戻り表示が出来た。これで、UART上でLCDで動かす基本部分の開発が終わった。想定どおりの表示がUARTに出る。設計に5日、コーディングに3日かかっている。一段落してこれまで盛大にいれたテストステートメントを削除し、ソースを整理しようとしたときである。今度は突然コンパイルエラーがでた。}(波カッコ)がないというエラーである。}を追加するとエラーがなくなる。このままコンパイルすると、当然のようにプログラムは動かない。ソースはもう600ステップ近くある。ここから探し出すのは大変な作業である。見つける手立てがない。テストステートメントを入れて少しづつ先に進め、コンパイルしては動いているところを探っていく。}が抜けているところを発見した。テストステートメントを消去するときにバックスペースキーが勢い余って上の行にはみ出し、}を消してしまったらしい。ソースの単位を余り大きくしてはいけないという教訓である。次の日、ソースを大幅に組み替え、すべての入力をタクトスイッチで行い、LCD表示の部分だけをUARTに出すソースがほぼ完成した。あとはUARTに出している表示をLCDに移し換えるだけである。残る課題は、電源が入っているときSDカードを交換するとおかしくなる不具合解消と、演奏中のカウント表示や、連続再生機能など付加機能の開発である。Mega328のI/OピンはLCDをつけてほぼ使い果たし、SDカードの抜き差し検知のピンが入るかどうか微妙なところである。そのときはテスト用のUARTのピンを外せばよい。それにしても、次から次にやりたいことが増えていく。老AVR研の電子工作の冒険には終わりがない。「AVR」カテゴリの記事ソフトI2Cはクロックストレッチまで手を出してあえなく沈没(2017.09.02)オシロのテストどころかソフト開発で大はまり(2017.07.26)超音波方式の人感センサーI2C化と新しいオシロ(2017.06.29)motionの動体検知はRaspi3の電源が安定しない(2017.04.16)赤外線学習リモコンはデータ再現で挫折したまま進まず(2016.07.21)コメントコメントを書く名前:メールアドレス:(ウェブ上には掲載しません)アドレス(URL):この情報を登録するコメントは記事投稿者が公開するまで表示されません。ブレッドボード上のLCD版SDカードPCMプレーヤー完成。