- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:ATmega168でリアルタイムにADC)
ATmega168でリアルタイムにADC
このQ&Aのポイント
- ATmega168でリアルタイムにADCを行う方法を教えてください。
- WinAVRとATmega168を使用してAD変換を行おうとしていますが、リアルタイムに結果が反映されません。
- プログラムを実行しても、最初の一回は変換が成功するが、その後は変換されない問題が発生しています。どのようにすればリアルタイムに変換を行えるのでしょうか?
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
毎回データが欲しいなら、毎回、ADCに「データくれ」って言わなあかんよ。 最初にADCに「データくれ」って言ってるけど、読んでるループでは「データくれ」って言ってないから、何回ポートから読み込んでも、ADCは「一番最初にデータくれって言われた時のデータ」しか渡してくれない。 つまり「最初の初期化時、つまり、最初にデータが欲しいって言った瞬間の値を返し続ける」から、同じ値しか返って来ない。 「ポートを読めば常に最新のデータが返ってくる」と思ってはいけない(ADCをそういうモードに初期化すれば、そういう動作も可能だけど) 「ADCに対する初期化」と「ADCに対するデータ要求」をきちんと理解出来てないと思うので DDRB = 0xff; DDRC = 0x00; ADCSRA = 0b10000000; ADMUX = 0b00000001; の4行が何を意味するのか、何をする物なのか、もう一度調べ直してみよう。 そうすれば「毎回、最新のデータを読む場合には、何をどうすれば良いか?」が理解出来ると思う。
お礼
回答ありがとうございました。できました。