gpio 와 irq 관련 질문입니다.
글쓴이: jhugestar / 작성시간: 수, 2005/10/12 - 1:08오전
PXA255 프로세서 기반의 보드에서 keypad로 입력받는 실습을 하고 있습니다.
gpio19 에 key pad의 irq가 입력된다고 했는데요
여기서 gpio라는 놈과 인터럽트가 어떤 메커니즘으로 동작하게 되는지 잘 모르겠습니다
대충 이해한바로는
미리 request_irq 함수로 인터럽트 루틴을 등록을 해두고 keypad가 인터럽트를 걸게되면 연결되있는 gpio19의 bit가 변해서 인터럽트가 걸린것을 알게 되고 등록해둔 함수루틴을 실행시키는 형태?? 라고 이해했는데요. 맞는지 모르겠군요
또한가지 궁금한게
set_GPIO_IRQ_edge 함수에서 GPIO_FALLING_EDGE 와 같은 인수를 보내게 되는데 여기서 FALLING 과 RISING 에지중 어느것으로 인수를 보내는것은 어떻게 정하는건가요
찾아보니 GRER,GFER 과 같은 레지스터가 있는데 이것과 관련이 있는건가요???
질문이 많습니다만 답변 부탁드립니다.
Forums:
제가 아는 한도 내에서만 적어보겠습니다.일단 mcu들은 대부분의
제가 아는 한도 내에서만 적어보겠습니다.
일단 mcu들은 대부분의 핀들을 여러가지 용도로 쓸수 있게 디자인이 됩니다.
뭐 특정 핀들은 전용으로 사용되지만 대체적으로 그렇습니다.
그리고 이를 제어하는 레지스터가 있는데 여기에 핀의 용도를 세팅을 하면 이 핀으로 들어오거나 나가는 신호를 그 용도에 맞게 사용하게 되는것입니다.
gpio19번을 인터럽트로 사용하겠다고 레지스터(GRER, GFER이 관련 있는 레지스터인듯) 에 설정해두면 (request_irq와는 다릅니다) 이 핀으로 들어오는 신호가 있으면 인터럽트 관련 루틴이 돌도록 되어있는겁니다.
request_irq 함수는 특정 인터럽트가 발생했을 때 수행할 함수를 등록하는 루틴입니다. 하지만 레지스터의 설정이 없다면 무용지물이겠죠.
즉 특정 핀으로 들어오는 신호가 인터럽트라고 하드웨어적인 인식이 있어야 소프트웨어적으로(request_irq와 같은) 동작이 가능합니다.
falling / rising edge의 경우는 어떤 디바이스가 붙느냐 혹은 하드웨어를 어떻게 설계했냐와 관련이 있는데 이 부분의 설명은 제 실력으로는 역부족이네요..
댓글 달기