脱公務員電子回路設計エンジニア

LEDルーレットに挑戦

回路図

回路図です。 8番ピンがTxDが共有されていますが、多分通信はできると思うのでこのままでいきます。しかし、のちに判明しましたが、回路図に示している通り、書き込み時はLEDと切り離せるようにしました。これはなぜかというと、どうやらこの通信線の電力からマイコンから動いてしまっていることが判明しました(これは実験を通して気づきました)。なぜか電源スイッチを切ってもマイコンのプログラムが動いていることがLEDの点滅から分かったこと及び、書き込みがやはり安定しませんでした。したがって、上手の通り、書き込時にはLEDなどの負荷と切り離せるようにしました。結果書き込みも安定しました。 真ん中の小さいブレッドボードがルーレット点滅用のLED群一番左の基板はスイッチ単なるスイッチとして使用しております。前回のピン割り込みの回路に追加する形で作成しております。

ハマった

 なぜかPIO0_5だけが、他のI/Oと同様な設定をしているにもかかわらずうんともすんとも言わずハマりました。一度割込み等もなくして、単純にLEDを順番に点滅させるプログラムを作ってみましたがそれでもPIO0_5だけがI/Oとして動作しない。
結局本に付属しているプログラムをコピーして、そこから割込みの設定や変数を削って言って、最終的に単純に順番にLEDが点滅していくプログラムへと変更していって原因を探ろうとしましたが、結局原因分からず。
swm.hの内容も付属CDと何か違うところがあるのではないかと思い確認しましたが、違いがなし。
 多分、こんなところでハマる人はいないと思いますがもし万が一、同様の内容でハマった方はいかに、単純にLEDを順番に点滅させるプログラムを掲載します。 Swich文にて、角LEDのポートの出力ビットを1に設定し、その時ひとつ前のLEDのデータをクリアするという処理にしています。それを適当なwait関数を作って回しています。  もしかしたら、点滅周期が早すぎた可能性があったのかな?