ADコンバーター / 変換完了をポーリングで確認する / Cで記述する
p.437
前回と同じことを今度はCで記述してみる。
#include <avr/io.h> int main(){ DDRB = 0xFF; DDRD = 0xFF; ADMUX |= (1 << REFS0); // 基準電圧はAVCC ADCSRA |= (1 << ADPS2) | (1 << ADPS1) | (1 << ADPS0) | (1 << ADEN); // 128分周。ADCペリフェラルをオン。 while(1){ ADCSRA |= (1 << ADSC); // 変換を開始して、 loop_until_bit_is_set(ADCSRA, ADIF); // 変換完了割り込みフラグがセットされるのを待って、 ADCSRA |= (1 << ADIF); // 変換完了割り込みフラグをクリアして、 //loop_until_bit_is_clear(ADCSRA, ADSC); // 変換開始ビットがクリアされるのを待って、 PORTD = ADCL; // 変換結果を読み出す。 PORTB = ADCH; /* uint16_t sute = ADC; // 10ビットを一度に読み出す。 PORTB = (0xFF00 & sute) >> 8; PORTD = 0x00FF & sute; */ } return 0; }