XMC4300 의 ADC를 동작해본다.
지난 번 LED 동작 설정을 그대로 사용하고 추가적으로 ADC를 설정한다.
---------------------------------------------------------------------------------------------------------------------------------
(지난번...)
(DAVE 프로그램 상단에 [Add New APP] 을 선택하면 아래 오른쪽과 같은 창이 뜬다.
Search filter에 DIGITAL을 검색하고 DIGITAL_IO를 Add하는데, 보드에 있는 LED 2개를 모두 사용할 예정이므로 add를 두번 한다....)
---------------------------------------------------------------------------------------------------------------------------------
APP Dependency에 있는 ADC_MEASUREMENT를 우클릭하여 Configure APP Instance 선택.
다른 것은 건들지 말고 Interrupt Settings 탭에 있는 Enable end of measurement interrupt를 선택한다.
우리는 이제 Interrupt handler name에 있는 이름을 복사하여 main.c 에서 사용한다.
APP 설정이 끝났으니 Generate Code를 눌러서 코드화 한다.
XMC4300에 있는 ADC는 12bit 해상도(0~4095)를 가졌다.
ADC 동작을 확인하기 위해 일정 전압 이상 범위에서 LED1과 LED2를 ON/OFF 하도록 하였다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
|
/*
* main.c
*
* Created on: 2021 Aug 09 18:42:58
* Author: JANG
*/
#include <DAVE.h> //Declarations from DAVE Code Generation (includes SFR declaration)
/**
* @brief main() - Application entry point
*
* <b>Details of function</b><br>
* This routine is the application entry point. It is invoked by the device startup code. It is responsible for
* invoking the APP initialization dispatcher routine - DAVE_Init() and hosting the place-holder for user application
* code.
*/
uint16_t ADCresult;
int main(void)
{
DAVE_STATUS_t status;
status = DAVE_Init(); /* Initialization of DAVE APPs */
if(status != DAVE_STATUS_SUCCESS)
{
/* Placeholder for error handler code. The while loop below can be replaced with an user error handler. */
XMC_DEBUG("DAVE APPs initialization failed\n");
while(1U)
{
}
}
/* Placeholder for user application code. The while loop below can be replaced with user application code. */
while(1U)
{
}
}
void Adc_Measurement_Handler()
{
ADCresult = ADC_MEASUREMENT_GetResult(&ADC_MEASUREMENT_Channel_A);
if(ADCresult > 1024)
{
DIGITAL_IO_SetOutputHigh(&LED1);
}
else
{
DIGITAL_IO_SetOutputLow(&LED1);
}
if(ADCresult > 2048)
{
DIGITAL_IO_SetOutputHigh(&LED2);
}
else
{
DIGITAL_IO_SetOutputLow(&LED2);
}
ADC_MEASUREMENT_StartConversion(&ADC_MEASUREMENT_0);
}
|
cs |
해당 코드를 컴파일하고 프로젝트 폴더를 보면 Debug폴더 안에 ...elf파일이 있다.
Micrium uC/Probe 는 이 파일을 열어서 UI처럼 디버깅 모드를 동작시킬 수 있다.
먼저 Micrium uC/Probe 을 열면 화면 하단에 Symbol Browser 밑에 ELF 선택 버튼이 있다.
이 버튼을 눌러 프로젝트의 elf파일(ADC_Measurement.elf)을 선택한다.
그리고 좌측 하단에 있는 Toobox에서 원하는 인디케이터 등을 선택해서 DataScreen으로 드래그한다.
아래의 경우, 숫자 인디케이터와 그래프를 선택했다.
그리고 이 UI들에게 데이터를 연결해주면 되는데, 아래 main.c에 ADCresult를 선택 후 드래그하여 각각 숫자 인디케이터와 그래프에 연결하면 된다.
Voltage 그래프 X, Y 범위를 조절해주고 스케일 팩터를 지정하면 3.3V 를 그릴 수 있다.
동작하려면 RUN 버튼을 누르면 된다.
'Infineon' 카테고리의 다른 글
XMC4300 | Blinking LED (1) | 2021.05.19 |
---|---|
Infineon 개발 환경 구축 (0) | 2021.05.17 |