상승에지 걸렸을때만 인터럽트를 발생하려고 했는데요, 상승, 하강 둘다 인트럽트가 발생하네요. 무엇이 문제가요?

falhed의 이미지

at91_sys_write(AT91_PIOA + PIO_PER, AT91_PIN_PA19);
at91_sys_write(AT91_PIOA + PIO_ODR, AT91_PIN_PA19);
at91_sys_write(AT91_PIOA + PIO_IER, AT91_PIN_PA19);

printk("Request SRAM mem region............\n");

irq = request_irq(AT91_PIN_PA19, &busy_interrupt, 0, "ram", NULL);
if(irq < 0)
{
printk("interrupt error\n");
return;
}

set_irq_type(AT91_PIN_PA19, IRQT_RISING);
enable_irq(AT91_PIN_PA19);

인터럽트를 함수를 등록하였고 상승에지만 인터럽트 발생하도록 set_irq_type 사용하여 등록하였습니다.

이렇게 insmod ram.ko하여 보드로 적재하니

enable_irq(51) unbalanced from bf00208c 메세지가 출력이 되더라구요...

버튼을 누르면 인터럽트 함수가 실행되는데 눌렀을 때, 버튼을 땠을때 두번연속으로 인터럽트 함수가 실행됩니다.

여기서 상승에지만 인트럽트 함수를 실행시키려면 어떻게 해야 하나요?

Hyun의 이미지

인터럽트 핀에 스위치를 연결해 두고 테스트를 하고 있으면, 스위치를 누르거나 뗄때 하드웨어적으로 신호가 심하게 흔들리는 현상이 발생합니다. 이때 신호가 심하게 흔들리면서 프로세서쪽에서 상승, 하강신호를 여러번 입력받게 되는데, 이것때문에 그런거 같습니다.
스위치랑 인터럽트 핀 사이에 슈미트 트리거가 달린 버터나 적당한 C 랑 R, 다이오드 등으로 신호가 흔들리는걸 막을 수 있습니다. 관련회로는... 같은 팀에 하드웨어 하시는 분께 물어보시면 알껍니다.

하드웨어적으로 스위치 동작시 신호가 떨리는걸 잡는다 해도 먼지가 쌓이거나 회로가 노화되면 떨림이 또 생길 수 있는데, 이런 경우는 소프트웨어적으로 처리를 해 주어야 합니다. 스위치는 사람이 제어 하므로, 이벤트 사이의 시간이 너무 짧은 이벤트(예를들어 대략 100ms 이내의 이벤트)를 무시하는 방법으로 소프트웨어에서 처리해 줄 수 있습니다.


댓글 달기

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 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <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].
  • 사용할 수 있는 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>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <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].
  • You can use Textile markup to format text.
  • 사용할 수 있는 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>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <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].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 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>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.