도와주세요!!
글 수 15,339
2008.03.03 17:19:50 (*.241.245.217)
6573
gpio 헤더 파일에 보면 다음과 같은 소스가 있습니다.
// GPIO 출력 마스크
#define MASK_GPIO_LED_1 ( 1 << GPIO_LED_1 )
#define MASK_GPIO_LED_2 ( 1 << GPIO_LED_2 )
#define MASK_GPIO_LED_3 ( 1 << GPIO_LED_3 )
#define MASK_GPIO_LED_4 ( 1 << GPIO_LED_4 )
그런데 여기서 1<< 을 왜 해주는지 이해가 가지않네요
gpio_led_1 은 2번째 gpio포트라서 실제 값은 2가 정의 되어 있는데 여기서 왼쪽으로 1만큼 쉬프트 하는 이유를 모르겠습니다.
그리고
// 출력 정의
GAFR0_L &= ~( GPIO_OUTPUT_MASK ); // Disable Alternative Function
GRER0 &= ~( GPIO_OUTPUT_MASK ); // Clear Rising edge trigger.
GFER0 &= ~( GPIO_OUTPUT_MASK ); // Set as Falling Edge Detect
라이징 에지를 클리어 하는 부분은 이해가가는데 폴링 엣지를 셋 하는 부분은 이해가 가지 않습니다.
GPIO_OUTPUT_MASK 가 0X3B라고 하셨는데 반전해서 &를 하면 라이징에지에서와 같이 폴링에지 부분도
클리어가 되는게 아닌가요?
DATASHEET랑 같이 보는데도 초보라 아직 잘모르겠군요...^^
조언 부탁드립니다.
// GPIO 출력 마스크
#define MASK_GPIO_LED_1 ( 1 << GPIO_LED_1 )
#define MASK_GPIO_LED_2 ( 1 << GPIO_LED_2 )
#define MASK_GPIO_LED_3 ( 1 << GPIO_LED_3 )
#define MASK_GPIO_LED_4 ( 1 << GPIO_LED_4 )
그런데 여기서 1<< 을 왜 해주는지 이해가 가지않네요
gpio_led_1 은 2번째 gpio포트라서 실제 값은 2가 정의 되어 있는데 여기서 왼쪽으로 1만큼 쉬프트 하는 이유를 모르겠습니다.
그리고
// 출력 정의
GAFR0_L &= ~( GPIO_OUTPUT_MASK ); // Disable Alternative Function
GRER0 &= ~( GPIO_OUTPUT_MASK ); // Clear Rising edge trigger.
GFER0 &= ~( GPIO_OUTPUT_MASK ); // Set as Falling Edge Detect
라이징 에지를 클리어 하는 부분은 이해가가는데 폴링 엣지를 셋 하는 부분은 이해가 가지 않습니다.
GPIO_OUTPUT_MASK 가 0X3B라고 하셨는데 반전해서 &를 하면 라이징에지에서와 같이 폴링에지 부분도
클리어가 되는게 아닌가요?
DATASHEET랑 같이 보는데도 초보라 아직 잘모르겠군요...^^
조언 부탁드립니다.
안녕하세요^^
우선
1. GPIO_LED_1 일 상수가 맞고요. 비트 번호입니다. GPIO_LED_3 같은 경우 1을 3번 시프트 하면 0x08가 되겠죠 그래서 03번째 비트를 셋 시켜주는 겁니다.
2. PXA에는 GRER(RISING EDGE)레즈스터와 GFER(FALLING EDGE)레지스터가 있습니다. 둘 다 설정하면 폴링과 라이징 에지 인터럽트 둘 다 받을 수 있습니다만 위에서 라이징 에지에 대하여 클리어 한것은 폴링 에지 인터럽트만 받으려고 하는것입니다.
도움 되시길 바랍니다.
더 궁금한 사항이 있으시면 다시 글을 올려 주십시오 덧글은 밑으로 내려가 확인이 힘드네요.....