ADCペリフェラル / free runningモードを試す / AD変換値をシリアル通信でPCへ送る

https://github.com/ti-nspire/AVR/tree/master/slow_scope (.vi含む)

ADCSRAレジスタADATEビットをセットしてfree runningモードにする。テキストはpyserialでデータを受けているが、ここではLabVIEWを使ってみる。

f:id:ti-nspire:20190617085002p:plain:h250

#include <avr/io.h>
extern "C" { 
    #include <util/delay.h>
    #include "USART.h"
} 

static inline void initFreeRunningADC(){
    ADMUX  |= (1 << REFS0);                // AVCCを基準電圧として使うことにする。
    ADCSRA |= (1 << ADPS2) | (1 << ADPS0); // ADCへ供給するクロックの分周比を決める。32分周。
    ADMUX  |= (1 << ADLAR);                // 10ビット変換値を左詰めにする。ADCHレジスタに上位8ビット値が格納される。
    ADCSRA |= (1 << ADEN);                 // ADCを有効化する。
    ADCSRA |= (1 << ADATE);                // auto-triggerを有効化する。
    ADCSRA |= (1 << ADSC);                 // AD変換を開始する。
}

int main(){
    initUSART();
    initFreeRunningADC();

    while(1){
        transmitByte(ADCH);
        //printByte(ADCH);
        
        _delay_ms(50);
    }
    
    return 0;
}

f:id:ti-nspire:20190617091719p:plain