こんにちは。昔のソースにこんなのがありました。
static int ReadCds( char Channel )//Channeは 0,1
{
int Value ;
for(;;){
//ADリソースが空くのを待つ
if( AdResourceInUse == 0 ) {
AdResourceInUse = 1 ;
break ;
}
SwitchTask() ;
}
ADCSR = Channel ;
BitSet( ADCSR, 5 ) ;
while( BitTst( ADCSR, 7 ) == 0 ) {
SwitchTask() ;
}
if( Channel == 0 ) {
Value = ADDRA ;
}
else {
Value = ADDRB ;
}
BitClr( ADCSR, 7 )
Value >>= 6 ;
Value &= 0x3ff ;
AdResourceInUse = 0 ; //リソースの開放
return( Value ) ;
}
PS トラ技に、A/D の精度を上げるための裏技(?)が載っていました。
CPU を sleep したり、クロックを落としたりして、デジタルノイズの
影響を最小限にするそうです(^^;)
"takeaki HAYASHI" <hayashi@xxxxxxxxxxxxxxxx>さん:
> オペアンプの出力電圧をしらべた所常温でも約2V程度の出力を確認で
> きました。
> ところが、このまま実際にAN2に接続してみてA/D変換値が出力されませ
> ん。00Hが出
> 力されてしまいます。
> (出力データはシリアル通信にて確認)
> そこでポートを変えたりしてみましたが、いずれも結果は同じでした。
>
--
--------- Computer Artisan ---------------------------
シーエー 寺脇 勝彦
E-mail wakky@xxxxxxxxxxxxxxxxxxx HGB01644@xxxxxxxxx
My page http://www.computerartisan.com/