BASIC4MCU | 질문게시판 | atmega128 adc 사용하기
페이지 정보
작성자 Halo 작성일2020-03-07 00:31 조회16,678회 댓글4건본문
아날로그 ADC3번하고 ADC5번을 입력으로해서 1초마다 주기적으로 변수 adc_buffer 에 넣는 코드를 짜봤는데요.
제가 ADC를 처음 써보는 것이라서 이렇게 쓰는게 맞는지 모르겠네요.
이런식으로 동시에 ADMUX 두 개를 쓸 수 있는지 의문이라서 좀 도와주셨으면 합니다..
#define F_CPU 16000000UL
#include <avr/io.h>
#include <util/delay.h>
#include <avr/interrupt.h>
void adc_buffer() {
ADCSRA=0xe7;
ADMUX=0x43; //0100 0011 (ADC3)
ADMUX=0x45; //0100 0101 (ADC5)
}
int main(){
while(1)
{
adc_buffer();
_delay_ms(1000);
}
}
댓글 4
조회수 16,678master님의 댓글
master 작성일
_delay_ms(1); ADMUX=0x43; //0100 0011 (ADC3)
_delay_ms(1); ADMUX=0x45; //0100 0101 (ADC5)
딜레이만 추가해주면 됩니다.
Halo님의 댓글
Halo
답변 감사드립니다.
1초라고 하면 _delay_ms(1000)이 맞지 않나요? 그리고 1초 동안 주기적으로 값을 넣으려면 while문에 들어가야 하지않나 생각이듭니다.
제가 잘못 생각하고있다면 답변 부탁드립니다.
#define F_CPU 16000000UL
#include <avr/io.h>
#include <util/delay.h>
void adc_buffer() {
ADCSRA=0xe7;
_delay_ms(1);
ADMUX=0x43; //0100 0011 (ADC3)
_delay_ms(1);
ADMUX=0x45; //0100 0101 (ADC5)
}
int main(){
while(1)
{
}
}
master님의 댓글
master 작성일
최소 시간은 250us 이상이면 됩니다.
1초마다 2채널을 읽으려면 500ms 딜레이를 주면 되겠죠
Halo님의 댓글
Halo
2채널을 읽어야해서 절반인 500ms 이군요. 감사합니다.