私はAVRチップ上のさまざまな初期化を処理するために独自の「ライブラリ」を作成してきました。しかし、ADCSRAレジスタ(データシートのp.261)のADIEビットの動作に固執しています。データシートは、ADIEがどのように機能するかを実際には説明していません。ただし、ADIEが0に設定されている場合は常に、ADCから読み取り値を取得できませんでした。それはなぜですか。ADCはタイマーのように機能すると思いました。割り込みが有効になっていない場合でも、ADCレジスタを読み取り値で更新します。
これが原因コードです。「割り込み」が1以外に設定されている場合は常に、ADCは機能しません。興味深いことに、他の割り込みとは異なり、ISR(ADC_vect)ルーチン内にコードがない場合、チップはスタックしません。
if(interrupt){ADCSRA|=1<<ADIE;}//enable the ADC conversion complete interrupt
else{ADCSRA&=~1<<ADIE;}