[MSP430F5510 EVM] ADC 테스트
MSP430F55x 으로 오면서 몇가지 페리들이 변경되었는데.. ADC도 약간의 레지스터 및 기능상 변화가 있었다.
MSP430F55xx ADC구조
MSP430F5510 ADC 초기화 코드
MSP430F5510 ADC Read함수
MSP430F5510 ADC테스트 예제 소스코드
[EXP_DSP EVM] 확장 보드에 연결되어 있는 VR을 이용하여 MSP430의 10bit ADC출력 값을 시리얼 포트로 출력 하는 예제이다.
MSP430F55x 으로 오면서 몇가지 페리들이 변경되었는데.. ADC도 약간의 레지스터 및 기능상 변화가 있었다.
MSP430F55xx ADC구조
MSP430F5510 ADC 초기화 코드
//ADC Initialize
void AdcInit(void)
{
// Configure ADC10 - Pulse sample mode; ADC10SC trigger
ADC10CTL0 = ADC10SHT_2 + ADC10ON; // 16 ADC10CLKs; ADC ON
ADC10CTL1 = ADC10SHP + ADC10CONSEQ_0; // s/w trig, single ch/conv
ADC10CTL2 = ADC10RES; // 10-bit conversion results
ADC10MCTL0 = ADC10SREF_1 + ADC10INCH_0; // AVcc/2
// Configure internal reference
while(REFCTL0 & REFGENBUSY); // If ref generator busy, WAIT
REFCTL0 |= REFVSEL_0+REFON; // Select internal ref = 1.5V
}
void AdcInit(void)
{
// Configure ADC10 - Pulse sample mode; ADC10SC trigger
ADC10CTL0 = ADC10SHT_2 + ADC10ON; // 16 ADC10CLKs; ADC ON
ADC10CTL1 = ADC10SHP + ADC10CONSEQ_0; // s/w trig, single ch/conv
ADC10CTL2 = ADC10RES; // 10-bit conversion results
ADC10MCTL0 = ADC10SREF_1 + ADC10INCH_0; // AVcc/2
// Configure internal reference
while(REFCTL0 & REFGENBUSY); // If ref generator busy, WAIT
REFCTL0 |= REFVSEL_0+REFON; // Select internal ref = 1.5V
}
MSP430F5510 ADC Read함수
//Read ADC Value
unsigned int AdcRead(unsigned char port)
{
unsigned int value = 0;
ADC10MCTL0 = ADC10SREF_1 + (ADC10INCH_0 + port); // AVcc/2
ADC10CTL0 |= ADC10ENC + ADC10SC; // Sampling and conversion start
while (ADC10CTL1 & ADC10BUSY);
value = ADC10MEM0;
return value;
}
unsigned int AdcRead(unsigned char port)
{
unsigned int value = 0;
ADC10MCTL0 = ADC10SREF_1 + (ADC10INCH_0 + port); // AVcc/2
ADC10CTL0 |= ADC10ENC + ADC10SC; // Sampling and conversion start
while (ADC10CTL1 & ADC10BUSY);
value = ADC10MEM0;
return value;
}
MSP430F5510 ADC테스트 예제 소스코드
[EXP_DSP EVM] 확장 보드에 연결되어 있는 VR을 이용하여 MSP430의 10bit ADC출력 값을 시리얼 포트로 출력 하는 예제이다.
void main(void)
{
unsigned int adc = 0;
SystemInit();
Led1Init();
Led1On();
//Serial Init
DebugInit(BAUD_115200);
DebugPrint("Serial Test Program.\r\n");
//Init ADC
AdcInit();
while(1)
{
adc = AdcRead(0);
DebugPrint("adc=%d\r\n", adc);
Led1Toggle();
Delay(300);
}
}
{
unsigned int adc = 0;
SystemInit();
Led1Init();
Led1On();
//Serial Init
DebugInit(BAUD_115200);
DebugPrint("Serial Test Program.\r\n");
//Init ADC
AdcInit();
while(1)
{
adc = AdcRead(0);
DebugPrint("adc=%d\r\n", adc);
Led1Toggle();
Delay(300);
}
}
반응형