2014年10月5日日曜日

AVR(ATMega168P) A/D変換成功!

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 件のコメント:

コメントを投稿