본문 바로가기

[AVR]/Mega16

[ATMega16-SM EVM] ADC 테스트 - TFT LCD 그래프 표시

[ATMega16-SM EVM] ADC 테스트 - TFT LCD 그래프 표시

 

 

 

 

ATMega16-SM EVM 보드에서 ADC포트는 PORTA PA7~PA0(ADC7~ADC0)에 연결되어 있고 가변저항으로 ADC값을 확인할 수 있다.

 

 

 

AVR ATMega16 ADC 드라이버 코드

ATMega32 의 경우 ADCSR레지스터가 ADCSRA로 변경되었다.

//------------------------------------------------------------------------------
// Function Routine
//ADC Initialize
void AdcInit(void)
{
 ADMUX = 0;
    ADCSR = ADC_ENABLE | ADC_PRESCALE_DIV32;
}

//Read ADC Value
unsigned int AdcRead(unsigned char port)
{
 unsigned int value = 0;

 ADMUX = port&7;
 ADCSR |= ADC_START_CONVERSION;

 while(!(ADCSR & ADC_COMPLETE));

 value = ADCL;
 value = (ADCH<<8) | value;

 return value;
}
//------------------------------------------------------------------------------

 

 

 

 

AVR ATMega16 ADC 테스트 예제코드

 

int main(void)
{
 char c;
 unsigned int adc;
 unsigned char buf[8];
 
 SystemInit();
 
 Led1Init();
 Led1On();

 //UART Init
 DebugInit(BAUD_115200);
 DebugPrint("ADC Test Program\r\n");
 
 AdcInit();

 while(1)
 {

  adc =  AdcRead(7);

  buf[0] = (adc>>8);
  buf[1] = (adc&0xFF);

  adc =  AdcRead(6);

 

  buf[2] = (adc>>8);
  buf[3] = (adc&0xFF);

  SendPacket(SRL_CMD_PLOTY, buf, 4);

 

  Delay(20);
 }
}

 

 

 

AtMega32 ADC 테스트 동영상 - TFT LCD그래프 표시

 

반응형