리모콘(irda)을 이용하여 mds(rebis, s3c2440) 제어 가능한지....??

hwangjiyeon의 이미지

제 환경은 pc는 fedora7이고 board는 rebis s3c2440입니다

리모콘을 이용하여 mds보드를 제어할려고합니다.
보니깐 irda가 rebis 보드의 uart2에 연결되어있길레 셋팅을 했는데 도무지 되질 않습니다 ㅠㅠ
왜 안되는지도 잘 모르겠고... 어떻게 해야 될런지...
소스 올립니다.
왜 안되는지 아시는분 쫌 말씀해주세요...
참고로 보드는 s3c2440을 사용하는 rebis보드입니다.
리모콘은 삼성 tv 리모콘이고요...
어떤 방향으로 잡아야할지도 막막하고 ㅠㅠ
난감합니다. 아시는분이나 도와주실분, 조금이라도 가르쳐주실분 꼭 메일 주세요..
부탁드립니다.
hwangjiyeon@naver.com

/////////////////////////////////////

rGPBDAT |=(1<<1);
rGPBCON &=0x3ffff3;
rGPBCON |=(1<<2); // Output(nIrDATXDEN)
rGPBUP |=(1<<1); //Uart port pull-up disable
rGPHCON &=0x3c0fff;
rGPHCON |=0x2a000; // TXD2,RXD2
rGPHUP |=0x1c0; //Uart port pull-up disable

rUBRDIV2=( (int)(PCLK/16/115200) -1 );
rUFCON2=(1<<6)|(0<<4)|(1<<2)|(1<<1)|(1);
//Tx and Rx FIFO Trigger Level:4byte,Tx and Rx Reset,FIFO En
rUCON2=(0<<10)|(1<<9)|(1<<8)|(0<<7)|(1<<6)|(0<<5)|(0<<4)|(0<<2)|(0); // From H/W
rULCON2|=(1<<6)|(0<<3)|(0<<2)|(3); // IrDA,No parity,One stop bit, 8bit
rUCON2 |= 1; // Rx enable
rINTMSK=~(BIT_UART2|BIT_UART1|BIT_UART0);
rINTSUBMSK=~(BIT_SUB_RXD2|BIT_SUB_ERR2|BIT_SUB_RXD0|BIT_SUB_RXD1);

printk("rUBRDIV2=%d\n", rUBRDIV2);
printk("[UART IrDA Rx Test]\n");
printk("This test should be configured two boards.\n");
printk("Press any key to start Rx and then Start Tx....\n");
printk("Now... Rx with IrDA\n");

rINTSUBMSK|=(BIT_SUB_RXD2|BIT_SUB_TXD2|BIT_SUB_ERR2);
rUFCON2=(3<<6)|(2<<4)|(1<<2)|(1<<1)|(0);

//////////////////////////////////////////////////


댓글도 환영입니다. 꼭 좀 부탁드리겠습니다.

일단 되는지 안되는지 아시는분만이라도 부탁드립니다.

File attachments: 
첨부파일 크기
Image icon irda.JPG16.1 KB
poplinux의 이미지

삼성 tv 리모컨으로 보내는 신호는 우리가 흔히 보는 파형 비슷한 걸로 나옵니다.

이 파형은 uart로 바로 받을 수 있는 건 아니고 마이컴 같은 걸 써서 시리얼 통신이 가능한 형태로 바꿔 uart로 전송해야 합니다.

리모컨 -> irda(or 마이컴 등등) -> uart

irda 나 uart(시리얼 통신) 등에 대해 기본 개념을 먼저 잡고 시작하시는게 도움이 될 것 같습니다.

========================
조직 : E.L.D(Embedded Linux Developer/Designer)
블로그 : poplinux@tistory.com
카페 : cafe.naver.com/poplinux

임베디드 리눅스 관련 프리렌서 지향

bushi의 이미지

uart 로 받는 것은 오히려 쉽습니다.
LIRC 프로젝트의 커널 드라이버 중 lirc_sir 이 이 목적으로 사용되는 놈이고,
실제로 intel PXA 시리즈처럼 16550 compatible 한 uart 컨트롤러를 가진 놈들은 거저먹기 입니다.
(5~6년전 StrongARM 시절에도 잘 썼고, 1~2년 전 PXA27x 에서도 잘 돌아갔습니다.)

IrDA 는 CIR 의 sub.spec. 입니다. CIR 이 좀 더 포괄적이죠.
국내 대부분의 리모컨CIR 은 54KHz (였던가?) 의 반송파를 가집니다.
아시다시피 IrDA SIR 은 이보다 주파수를 높일 수 있습니다.
다시말해 적당히 만지작거리면 IrDA 로 CIR 를 샘플링하는 것이 가능하다는 얘깁니다.

물론 UART 데이타레지스터에 리모컨이 보낸 데이타가 담겨있다는 것이 아닙니다.
event(interrupt) 타이밍을 재서 그 타이밍 정보를 바탕으로 CIR 신호를 해석하는 겁니다.

노트북에 들어가는 좀 유명한 IrDA(SIR) 컨트롤러나,
PC 용의 IrDA(SIR) uart dongle 들은 이미 LIRC 에 커널드라이버가 있습니다.
S3C24xx 도 찾아보면 있을지도...

OTL

poplinux의 이미지

그리고 s3c2440 일 경우, 이솝 사이트에 질문 올리는 것이 가장 확실할 겁니다.

저도 이솝에서 많은 도움을 받았었습니다.

고도리님 감사합니다. 움하하ㅎ하하

========================
조직 : E.L.D(Embedded Linux Developer/Designer)
블로그 : poplinux@tistory.com
카페 : cafe.naver.com/poplinux

임베디드 리눅스 관련 프리렌서 지향

mechatec의 이미지

###GPIO설정 시작###
rGPBDAT |=(1<<1);
rGPBCON &=0x3ffff3;
rGPBCON |=(1<<2); // Output(nIrDATXDEN)
rGPBUP |=(1<<1); //Uart port pull-up disable
rGPHCON &=0x3c0fff;
rGPHCON |=0x2a000; // TXD2,RXD2
rGPHUP |=0x1c0; //Uart port pull-up disable
###GPIO설정 종료###

###UART설정 시작###
rUBRDIV2=( (int)(PCLK/16/115200) -1 );
rUFCON2=(1<<6)|(0<<4)|(1<<2)|(1<<1)|(1);
//Tx and Rx FIFO Trigger Level:4byte,Tx and Rx Reset,FIFO En
rUCON2=(0<<10)|(1<<9)|(1<<8)|(0<<7)|(1<<6)|(0<<5)|(0<<4)|(0<<2)|(0); // From H/W
rULCON2|=(1<<6)|(0<<3)|(0<<2)|(3); // IrDA,No parity,One stop bit, 8bit
rUCON2 |= 1; // Rx enable
rINTMSK=~(BIT_UART2|BIT_UART1|BIT_UART0);
rINTSUBMSK=~(BIT_SUB_RXD2|BIT_SUB_ERR2|BIT_SUB_RXD0|BIT_SUB_RXD1);
###UART설정 종료###

###UART 시스템 메세지###
printk("rUBRDIV2=%d\n", rUBRDIV2);
printk("[UART IrDA Rx Test]\n");
printk("This test should be configured two boards.\n");
printk("Press any key to start Rx and then Start Tx....\n");
printk("Now... Rx with IrDA\n");

###인터럽트 설정(마스크 및 상태)####
rINTSUBMSK|=(BIT_SUB_RXD2|BIT_SUB_TXD2|BIT_SUB_ERR2);
rUFCON2=(3<<6)|(2<<4)|(1<<2)|(1<<1)|(0);

위의 소스는 어떻게 사용한 소스 인가요? 디바이스드라이버의 소스라면
인터럽트등록을 해주시고 irq_reqeust() 사용하시면 될듯합니다만..
사용하는 BSP는 무엇인지요?
그냥 펌웨어로 사용하신다 하더라도 인터럽트 서비스 루틴이 빠져 있기
때문에 인터럽트가 걸려도 그에 해당하는 서비스등록이 안되어(이벤트 핸들링)
아무런 실행을 할수 없는 코드로되어 있습니다.
그리고 질문을 하실때 도움이 되실 몇 가지를 조언해드리자면..

임베디드 장비의 경우 아래의 사이트에서 질문하시는 것이 더욱 효율적이며..
http://www.aesop-embedded.org
http://www.kelp.or.kr
http://www.korone.net
그리고 질문을 하실 때
사용하는 BSP와 그리고 자신이 사용(테스트)하고 있는 부분을
좀더 구체적으로 기입을 하셔야 정확한 도움을 받으실 수 있으실 겁니다.
지금 같은 경우 임베디드 리눅스를 사용하셔서 하시는 것이라면 커널 버전도
함께 올리시면 더욱 좋을 것입니다.
더블어...회로 구성도 설명 혹은 이미지를 올려주시면 더욱 좋습니다. ^-^

==================================
나 자신의 위치와
나 자신의 가치는
내가 스스로 만들어 가는 것이다.
help~me~!

==================================================================================
나 자신의 위치와
나 자신의 가치는
내가 스스로 만들어 가는 것이다.
help~me~!

댓글 달기

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
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.