현재 이소스를 사용하여 ADC해서 PWM까지 하고 있는데요.. 여기서 문제가 생겼습니다..
두가지의 문제에 직면했습니다. ㅠㅠ
하드웨어 설계 및 개발에 대하여 개발자들이 자유롭게 토론하는 공간입니다.
- Q&A, 자유주재 토론, 관련 정보 공유
- 분야 : 마이크로프로세서 응용, 전기/전자(아날로그/디지털) 회로 설계, C/C++ 프로그래밍, 펌웨어,
PCB Artwork, 트러블슈팅 등 하드웨어 설계에 관한 전반인 내용
※ 게시글에 맞는 분류를 선택하여 글을 작성해 주시면 쾌적한 사이트 운영에 많은 도움이 됩니다.
※ 하드웨어 인사이트는 회원들간의 거래정보를 게재할 뿐이지, 그 어떤 책임과 의무도 가지지 않습니다.
이렇게 해보심이...
// ------------------------------------------------------------------------------------------- //
unsigned int ADConversion(unsigned char channel)
{
ADMUX = channel | 0xC0;
ADCSRA |= 0x40;
while( !(ADCSRA & 0x10)) Nop(1); return ADC;
} // ------------------------------------------------------------------------------------------- //
void ADAverageResult(unsigned char mode)
{
unsigned char iii; for(iii = 0; iii < TOTALCNT; iii++) // TOTALCNT = 16이면 16번을 더해서 평균 함.
TotalDataBuffer[mode] += ADConversion(mode);
TotalDataBuffer[mode] /= TOTALCNT;
AverageDataBuffer[mode] = TotalDataBuffer[mode];
TotalDataBuffer[mode] = 0x00;
}
출력해주는것입니다. 5V Vref를 10bit분해능이 있는 ADC를 사용한다면...AD레지스터의 1값은 몇 V일까요?
제가 문제를 내버리네요...ㅠㅠ..평균값을 사용함은 ADC의 값이 정확하지 않기에 8번정도의 ADC를 통해 나오는 값을 /8로 평균값을 내는것에 불과합니다.