TC275의 외부 인터럽트를 활성화하고 스위치로 입력을 받아 인터럽트로 LED를 켜고 꺼보자.

우리는 스위치와 LED를 사용할 것이다.
스위치는 Easy Module의 D2(Digital pin 2)(SW1), D3(SW2)
LED는 Easy Module의 D12(빨강), D13(파랑)에 연결되어있다.
이 pin들이 TC275의 어디로 mapping 되어있는지는 TC275 ShieldBuddy User Manual 44p에서 확인할 수 있다.
(출처: Infineon)
이들은 TC275에서 각각 P2.0, P2.1, P10.1, P10.2로 mapping 되어 있다.
이제 Register에 직접 값을 써주기 위해 TC275 User Manual을 보고 값을 써줄 레지스터를 찾아야 한다.
Digital pin들은 GPIO로 사용되므로 1066p의 GPIO 항목을 찾아보자.


GPIO는 위와 같이 이루어져 있다고 한다.
Pn_IOCRx Pn_OMSR Pn_OMR Pn_OUT 등의 레지스터가 있고, 필요에 따라 값을 설정해주면 되는 것으로 보인다.


스위치를 사용하기 위해서는 스위치를 어떻게 사용할지 설정해주어야 한다.

Pn_IOCR의 의미는 n번 Port의 Input Output Control Register의 약자이고, 이를 따라가 보면, Pn_IOCR0에서 Pn.[3:0]을 설정할 수 있다고 한다.

Port 02의 Input/Output mode를 P02_IOCR0에서 설정해주면 된다.
그리고 설정 값은 PCx에 설정하며, Table 13-5에서 어떤 값을 써주면 되는지 볼 수 있다.

사용되는 스위치는 Pull-up 회로로 구성되어 있기 때문에, 0XX10으로 설정해주면 된다.

아래 코드를 실행하여 control register를 설정한다.
뒤에 붙는 .B.PC0에 대해서는 다른 글(아직 작성하지 않음)에서 설명하도록 하겠다.
// SW1 (P2.0)
P02_IOCR0.B.PC0 &= ~(0x1F); // Clear Port 2 IOCR0 register PC0
P02_IOCR0.B.PC0 |= 0x02; // Set Port 2 IOCR0 register PC0 0x02(=0b00010)
// SW2 (P2.1)
P02_IOCR0.B.PC1 &= ~(0x1F);
P02_IOCR0.B.PC1 |= 0x02;
LED도 찾아보자.
LED는 P10.1, P10.2에 mapping되어 있다.
스위치와 마찬가지로 P10_IOCR0에서 설정할 수 있다.
다만, Output으로 설정할 것이기 때문에, 설정 값이 다르다.

여러 function을 실행하도록 설정할 수 있는 것 같은데, GPIO로 설정해주자.
// LED_RED
P10_IOCR0.B.PC1 = 0x10; // 편의상 이렇게 한다.
// LED_BLUE
P10_IOCR0.B.PC2 = 0x10;
위 설정을 활용하여 initGPIO()를 만들어두었다.
void initGPIO(void) {
// SW1, SW2
P02_IOCR0.B.PC0 = 0x2;
P02_IOCR0.B.PC1 = 0x2;
// LED Blue, Red
P10_IOCR0.B.PC1 = 0x10;
P10_IOCR0.B.PC2 = 0x10;
}