기존 이솝 임베디드 포럼의 지식인 서비스가 게시판 형태로 변경되었습니다.

안녕하세요. 이곳에 질문 드리는것은 처음이네요. 잘 부탁드릴께요. 
바로 질문 내용으로 들어가겠습니다.



v210에 NEC format을 이용하는 IR을 포팅중입니다.
gpio를 이용하여 IR 신호를 수신하려고 하는데요.

신호를 받을 gpio 를 인터럽트로 사용하여 신호를 수신하려고 했는데, 
한번의 입력이 80ms 동안에 60번정도의 인터럽트가 발생하여야 하는데, 10번정도 밖에 캐치하지 못하고 있습니다.
인터럽트간의 가장 짧은 간격은 0.56ms입니다. 

인터럽트 타이밍때문에 신호를 다 캐치하지 못하고 있는것같아서 
gpio를 통해 첫 인터럽트를 인식한후에 isr에서 timer 인터럽트를 호출해 5us 간격(인터럽트 간격들의 최대공약수)으로 gpio 값을 읽으려고 하는데요, 다만 이런 방식으로 진행을 하게됬을 때 부하가 걸리거나 오차에의해 오류가 발생하지 않을까하는 걱정이 들어서요.



지금 아래 세가지 방안을 두고 어떤 식으로 진행해야 할지 고민 중입니다.
경험이나 지식이 있으신분의 조언을 듣고 싶습니다.

1. IR 디코딩이 가능한 마이컴을 사용한다.
2. 타이머 인터럽트를 추가해서 하는 방식 외에 더 효율적인 방식으로 수신할 수 있는 방법이 있다.
3. 이대로 진행해도 무관하다.

앞으로의 진행 방향에 대해 조언을 좀 해주시면 감사하겠습니다.


비둘기사냥꾼

2011.09.11 02:18:21
*.205.50.77

안녕하세요

0.56ms 주기의 인터럽트라면 직접 수신하는 것도 가능한듯 생각됩니다. 단지 지금 예상되는 주기의 인터럽트를 받지 못하는 부분은 다른 영향이 있지 않을 까요? 시스템의 부하를 위해서라면 1안을 따르면 간단하지만 비용과 시스템이 커지는 단점이 있습니다. 레벨 인터럽트를 이용하는 2안이 어떨까요? 이때에 이전 인터럽트와의 시간 주기를 고려하여 사용하는 방법이 있을듯 합니다.

 

혜정아빠

2011.09.15 01:52:44
*.126.245.241

예전에 MICOM 및 전용 IP로 동작을 시켜봤지만,

Main CPU의 GPIO로는 해보질 않아 정확한 답변은 못 드릴 것 같습니다.

다만 한번 디코딩시 Time 인터럽트의 Delay 시간이 '80ms / 5us * (GPIO Read Time + Interrupt 처리 시간)'로 생각되는데

오디오나 비디오 처리시 부하가 걸릴 것 같습니다.


Sampling 최소 단위는 0.56ms/N(N은 2 이상)로 N 값이 좀 더 안정적으로 동작하지만 부하가 커져

Sampling Time을 줄여 검토하시면 될 것 같습니다.

N을 8이나 16으로 주고 이후에 발생하는 오차는

소프트웨어적으로 마진을 둬서 처리하면 좀 더 부하를 줄일 수는 있을 것 같습니다만,

소프트웨어 엔지니어이시면 가급적 MICOM을 달자고 하시는 것이 좋을 것 같습니다.

사용자가 Repeat Key를 누를 경우 지속적인 부하는 피할 수 없을 것 같네요 ^^

고등어

2011.09.15 18:17:19
*.111.41.24

Free running timer를 하나 돌리고 GPIO인터럽트를 사용합니다.

GPIO 인터럽트핸들러에서 timer value를 이용해서 code까지 추출하도록 코딩합니다.

code가 추출되면 code를 포함해서 event를 발생시켜주면 됩니다.



List of Articles
번호 제목 글쓴이 날짜 조회 수
4928 SDIO Wifi Suspend/Resume 동작 중 문의 [1] 불쏠 2011-09-09 1443
4927 odroid-7 커널을 T에 밀어 넣어 봤습니다. [1] 나론 2011-09-09 923
4926 odroid-t froyo kernel을 gb kernel에 이식 중입니다. hkdkc110 보... [1] 나론 2011-09-09 927
4925 AMS369FG06 AMOLED 전원 세팅 [1] ziraff 2011-09-08 1145
4924 PVR 에러 [1] 데카 2011-09-08 880
4923 c110에서 sleep 진입 시 gpio conpdn pudpdn 레지스터 관련 질... [1] 비트머슴 2011-09-07 1079
4922 GPS hardware interface 관련 문의 [1] 신기루 2011-09-07 933
4921 진저브레드 포팅 중 안드로이드 중단 문제 [1] 데카 2011-09-06 989
4920 안드로이드 다운로드 메커니즘 [2] 10번 2011-09-06 1023
4919 x11 porting [1] marvin 2011-09-06 941
4918 이솝 S5PC100 보드에서 안드로이드 Gingerbread 구동이 가능할까요... [1] 겟페우스 2011-09-05 1074
» gpio interrupt 타이밍 관련해서 질문 좀 드릴께요 [3] 로커스 2011-09-05 1039
4916 CentOS 5.6 설치 후 무선랜 문제 blue0sky 2011-09-04 662
4915 nor flash 인식을 못합니다. [1] 김명준 2011-09-03 1002
4914 Sleep 상태에서 Key 를 눌러서 Wake-Up 할 때 키 이벤트 받으려면... [1] 레몬 2011-09-02 1154
4913 OneNAND를 kernel에서 erase 하는 방법? [1] 텡구 2011-09-02 1387
4912 apk 가 설치가 될때 Root file system 에 어디에 설치되는지 궁금... [1] 거봉 2011-09-02 1351
4911 shell 관해서 질문이 있습니다. [1] 한승우 2011-09-01 1114
4910 24bit lcd 출력에 관한질문입니다. [2] 서연아빠 2011-09-01 1477
4909 .class 파일이 어떻게 만들어지나요?? [1] 한승우 2011-09-01 897

사용자 로그인