gpio 와 irq 관련 질문입니다.

jhugestar의 이미지

PXA255 프로세서 기반의 보드에서 keypad로 입력받는 실습을 하고 있습니다.

gpio19 에 key pad의 irq가 입력된다고 했는데요

여기서 gpio라는 놈과 인터럽트가 어떤 메커니즘으로 동작하게 되는지 잘 모르겠습니다

대충 이해한바로는
미리 request_irq 함수로 인터럽트 루틴을 등록을 해두고 keypad가 인터럽트를 걸게되면 연결되있는 gpio19의 bit가 변해서 인터럽트가 걸린것을 알게 되고 등록해둔 함수루틴을 실행시키는 형태?? 라고 이해했는데요. 맞는지 모르겠군요

또한가지 궁금한게
set_GPIO_IRQ_edge 함수에서 GPIO_FALLING_EDGE 와 같은 인수를 보내게 되는데 여기서 FALLING 과 RISING 에지중 어느것으로 인수를 보내는것은 어떻게 정하는건가요

찾아보니 GRER,GFER 과 같은 레지스터가 있는데 이것과 관련이 있는건가요???

질문이 많습니다만 답변 부탁드립니다.

익명 사용자의 이미지

제가 아는 한도 내에서만 적어보겠습니다.

일단 mcu들은 대부분의 핀들을 여러가지 용도로 쓸수 있게 디자인이 됩니다.
뭐 특정 핀들은 전용으로 사용되지만 대체적으로 그렇습니다.

그리고 이를 제어하는 레지스터가 있는데 여기에 핀의 용도를 세팅을 하면 이 핀으로 들어오거나 나가는 신호를 그 용도에 맞게 사용하게 되는것입니다.

gpio19번을 인터럽트로 사용하겠다고 레지스터(GRER, GFER이 관련 있는 레지스터인듯) 에 설정해두면 (request_irq와는 다릅니다) 이 핀으로 들어오는 신호가 있으면 인터럽트 관련 루틴이 돌도록 되어있는겁니다.

request_irq 함수는 특정 인터럽트가 발생했을 때 수행할 함수를 등록하는 루틴입니다. 하지만 레지스터의 설정이 없다면 무용지물이겠죠.
즉 특정 핀으로 들어오는 신호가 인터럽트라고 하드웨어적인 인식이 있어야 소프트웨어적으로(request_irq와 같은) 동작이 가능합니다.

falling / rising edge의 경우는 어떤 디바이스가 붙느냐 혹은 하드웨어를 어떻게 설계했냐와 관련이 있는데 이 부분의 설명은 제 실력으로는 역부족이네요..

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.