2015年9月6日日曜日

AVRでADCを割り込みで使う

普通のPOTをユニバーサル基板に固定する実験も兼ねてPOT3発の実験基板を作った。


接着には「セメダイン超多用途接着剤 スーパーX HYPER 10ml ワイド AX-175というやつを使ってみた。もともとポリプロピレンの容器(100均で買ったタッパー)にLEDを接着するために買ったものだが6時間経過でまあまあの強度はありそうだ。

いつも使っているケーブル付きのPOTは


簡単な実験ならいいが素子数が増えると端子が抜けたりして結構混乱する。

裏側

買ってから3年以上(?)放置していたサンハヤトの電源ライン・パターン付きのユニバーサル基板を使ってみた。

VCCとGNDのパターンはaitendoで安かったので買っておいたカプトン(ポリイミド)テープで絶縁してまたがした。(普通に買うとめちゃくちゃ高いです)

できたてホヤホヤなのでちゃんと絶縁できてるが、使っているうちに劣化するかな?

ソース・コードはGithubで公開しました。
https://github.com/ryood/ADC_Interrupt_Test

ブレッドボード図

動作としてはPOTで調節した8bitの値をLEDで表示、タクトスイッチでPOT1とPOT2を切り替えて黄色LEDで切り替え状態を表示。ロータリーエンコーダーはつないでいるがまだ入力値を読み取っていない。

細かいこと

タクトスイッチの読み取り(Arduinoで言うDigitalRead())を間違えてPINBではなくてPORTBで読んでいて値が定まらなくて泣きそうになっていた。デバッグはほんとにしんどい(^q^;

ADCの基準値はAVCCにした。AVCCは開放でもいければいいな?と思っていたが、AVCCをVCCにつながないと8bitの精度も出ないようだ。AGNDもGNDに繋がないとだめっぽい。→基板の配線をもう少し考えないとだめそう。

AVRのRESET線は内部でPULL UPされてるみたいなので開放で大丈夫そうだ

<追記> タクトスイッチのチャタリング対策用のウエイト時間を20m秒にした。これは、高橋名人の16連射を考えて
1秒 / 16 = だいたい63m秒
なので20m秒なら高橋名人でもなかなか攻略できない気がするからだ。