A/D変換メモ。
だいぶ前の話になるけど、この前のA/D変換は、オーバーフローのせいだったっぽい。
A/D変換は10bitやけど、それを8bitにしたら出来たっぽい。
プログラムは次。(ちなみに、8bitどころか6bitにしてる)
/* Name: main.c
* Author: <insert your name here>
* Copyright: <insert your copyright message here>
* License: <insert your license reference here>
*/
#include <avr/io.h>
void init_PORT(){
DDRB = 0xff;
DDRC = 0x00;
}
void init_AD(){
//外部基準電圧AREF, 入力チャネルADC1
ADMUX = 0x01;
ADCSRA = 0x80;
}
int main(void)
{
int x;
init_PORT();
init_AD();
/* insert your hardware initialization here */
for(;;){
ADCSRA |= 0x40;
while(ADCSRA & 0x40);
x = ADC;
//PORTB = (x >> 2);
/* insert your main loop code here */
x = x/16;
PORTB = x;
}
return 0; /* never reached */
}
いろんな人のサイトを参考にしたけど、忘れた。
ちなみに成功したのはちょっと前の話。
0 件のコメント:
コメントを投稿