• slider image 442
  • slider image 483
  • slider image 484
  • slider image 485
  • slider image 486
  • slider image 487
:::


Browsing this Thread:   1 Anonymous Users






Re: IR remote control confused.....
#10
版主
版主


查看用戶資訊
IR的接收最後會變成一個Hi-Lo凖位的變化,你要看你的發射是用那一種方式編碼,針對不同的編碼方式有不同的偵測IR訊號方式。

發表於: 2007/3/9 17:21
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Re: IR remote control confused.....
#9
中級會員
中級會員


查看用戶資訊
感謝各位大大的幫忙
我已經大致將這一個CODE寫出來了,只是還沒有考慮REPEAT的問題,我在其他論壇有看到可以利用輪詢的方式去讀取IR的資料,但是我所配合的電路他的IR電壓是1.3~-4.7V 所以似乎是沒有辦法讀取到正確的資料,我還是利用中斷的方式在配合上計時器,來判斷所收的資料是0或1。不知道這樣的做法對不對。


發表於: 2007/3/9 10:52
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Re: IR remote control confused.....
#8
新會員
新會員


查看用戶資訊
我自己也寫了一個解HT-12E 的程式,不過我是用組合語言寫的
,雖然IC DATA 手冊寫的不錯,不過我是用示波器測量後再動手,
沒用TIME0計時,而是另外寫一個計時LOOP 來算每一個波型時間,為了要抓住第一個波型,一開始做了很多確認,當確認是第一個以後就只要CALL LOOP 判段是0或1算是古板的寫法,能用就好!
給你加加油.

發表於: 2007/2/3 23:14
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Re: IR remote control confused.....
#7
中級會員
中級會員


查看用戶資訊
這個是我在測試跑一次TIMER0需要多少時間的東西
if(INTCONbits.TMR0IF==1)
{
INTCONbits.TMR0IF=1;
}

我再真正測試程式時已經把TIMER0中斷關掉了
所以沒有跑那一個 = ="
抱歉沒有說清楚
我把他拿掉免得造成大大的困惑。
還有我發現我上面那一段程式的問題了,這樣的語法判斷太多。
而且會造成少判斷一個PULSE,這也是我資料不正確的原因。
正在改變寫法中....


發表於: 2007/2/2 17:31
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Re: IR remote control confused.....
#6
資深會員
資深會員


查看用戶資訊
if(INTCONbits.TMR0IF==1)
{
INTCONbits.TMR0IF=1;
}
============================

上面那段就已經怪怪的說
重整一下在重po一次吧

不然程式一直跑timer0中斷, 主程式大概就沒辦法動了吧

發表於: 2007/2/2 13:35
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Re: IR remote control confused.....
#5
中級會員
中級會員


查看用戶資訊
我所取IR資料的中斷如下
我利用TIMER0來讀取兩個PULSE的時間,現在的問題是最高位元讀取怪怪的,我不曉得是哪邊的錯誤,還有CODE的值會是對的但是ADDRESS的卻沒有反向,這讓我覺得很奇怪
不曉得是哪邊沒有考慮到,可以請有經驗的大大幫忙看一下嗎?
所使用的MCU 為18F452 16MHZ 利用 PORTB1來接收資料


#pragma interrupt isr_high
//#pragma interrupt isr_high nosave=TBLPTR, TABLAT ,section(".tmpdata")
#pragma interrupt isr_high nosave=section(".tmpdata")
void isr_high(void)
{

if(INTCON3bits.INT1IF==1)
{
INTCON3bits.INT1IF=0;
if(Myfg.IR_Data_get)
{
if(Myfg.IR_T_lo)
{
T_lo=ReadTimer0();
WriteTimer0(0);
Myfg.IR_T_hi=1;
Myfg.IR_T_lo=0;
OpenRB1INT( PORTB_CHANGE_INT_ON &
//FALLING_EDGE_INT &
RISING_EDGE_INT &
PORTB_PULLUPS_OFF);
}
else
{
if(Myfg.IR_T_hi)
{
T_hi=ReadTimer0();
WriteTimer0(0);
Myfg.IR_T_hi=0;
Myfg.IR_T_lo=1;
IRTemp.Bits.IRbit7=1;
if((T_lo-T_hi)>=5000)
{
IRTemp.Bits.IRbit7 |= 1;
IRTemp.IRtemp >>= 1;
}
else
{
IRTemp.Bits.IRbit7 &= 0;
IRTemp.IRtemp >>= 1;
}
/*if((T_hi-T_lo)>=4000)
{
IRTemp.Bits.IRbit7 |= 1;
// IRTemp.IRtemp >>= 1;
}
else
{
IRTemp.Bits.IRbit7 &= 0;
// IRTemp.IRtemp >>= 1;
}*/
IRct++;
if(IRct%8 ==0)
{
IRData.IRdata[IRDct] = IRTemp.IRtemp;
IRTemp.IRtemp=0;
IRDct++;
}
if(IRct>=33)
{
IRDct=0;
IRct=0;
IRTemp.IRtemp=0xff;
Myfg.IR_Data_get=0;
}
OpenRB1INT( PORTB_CHANGE_INT_ON &
FALLING_EDGE_INT &
//RISING_EDGE_INT &
PORTB_PULLUPS_OFF);
}
}
}
else
{
//Myfg.IR_Data_get=1;
// if(!Myfg.IR_DeBounce)
// {
if(Myfg.IR_T_lo)
{
T_lo=ReadTimer0();
WriteTimer0(0);
Myfg.IR_T_hi=1;
Myfg.IR_T_lo=0;
//Myfg.IR_DeBounce=1;
OpenRB1INT( PORTB_CHANGE_INT_ON &
//FALLING_EDGE_INT &
RISING_EDGE_INT &
PORTB_PULLUPS_OFF);

}
else
{
if(Myfg.IR_T_hi)
{
T_hi=ReadTimer0();
WriteTimer0(0);
//T_sub=T_hi-T_lo;
if(T_lo>T_hi)
{
Myfg.IR_Data_get=1;
Myfg.IR_DeBounce=0;
}
Myfg.IR_T_hi=0;
Myfg.IR_T_lo=1;

OpenRB1INT( PORTB_CHANGE_INT_ON &
FALLING_EDGE_INT &
//RISING_EDGE_INT &
PORTB_PULLUPS_OFF);

}
}
//}
}
}//if(INTCON3bits.INT1IF==1)

發表於: 2007/2/2 9:54
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Re: IR remote control confused.....
#4
中級會員
中級會員


查看用戶資訊
我是以C來撰寫的,我想這個問題會不會是因為中斷的時候COMPLIER會自己PUSH一些內定的暫存器,造成我IR的資料MISS了。
如果是這樣,我記得有一個命令可以強制要一些暫存器不做處理。
只是奇怪的是,一時熊熊沒找到該命令,等試玩在跟大家分享結果。

發表於: 2007/1/30 11:30
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Re: IR remote control confused.....
#3
高級會員
高級會員


查看用戶資訊
右邊
範例程式
20
利用PIC12C508A 接收NEC Code type的IR遙控器所發射的訊號。

發表於: 2007/1/29 21:20
IWC
IWC
JL
Rolex


PP
有點距離
越來越遠
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Re: IR remote control confused.....
#2
資深會員
資深會員


查看用戶資訊
可以貼code出來看嗎?

發表於: 2007/1/29 18:20
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


IR remote control confused.....
#1
中級會員
中級會員


查看用戶資訊
想請教各位大大
我想要撰寫一個程式來借收NEC IR的訊號。
我看了廠商給我的訊號規格,他是利用LOW訊號的時間來決定來的值是"0"或者"1"。
我有想到的方法是利用讀時間的方式來給定值,但是我遇到一個問題就是當IR中斷產生後,再利用讀計時器的方式來讀時間。
但是這種方法會造成IR訊號來的中斷沒有足夠,理論上會中斷33次,但是我看了我的中斷計數器,只有三次
想請教有經驗的大大我該如何撰寫此程式。
感激不盡

發表於: 2007/1/29 14:52
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部







You can view topic.
不可以 發起新主題
You cannot reply to posts.
You cannot edit your posts.
You cannot delete your posts.
You cannot add new polls.
You cannot vote in polls.
You cannot attach files to posts.
You cannot post without approval.
You cannot use topic type.
You cannot use HTML syntax.
You cannot use signature.
You cannot create PDF files.
You cannot get print page.

[進階搜尋]


:::

Microchip連結

https://www.facebook.com/microchiptechnologytaiwan/
http://www.microchip.com.tw/modules/tad_uploader/index.php?of_cat_sn=13
https://mu.microchip.com/page/tmu
http://elearning.microchip.com.tw/modules/tad_link/index.php?cate_sn=1
https://page.microchip.com/APAC-PrefCenters-TW.html
http://www.microchip.com/
http://www.microchip.com/treelink
http://www.microchipdirect.com/
http://www.microchip.com.cn/newcommunity/index.php?m=Video&a=index&id=103
http://www.microchip.com.tw/modules/tad_uploader/index.php?of_cat_sn=2
http://www.microchip.com.tw/Data_CD/eLearning/index.html
http://www.microchip.com.tw/RTC/RTC_DVD/
https://www.microchip.com/development-tools/
https://www.youtube.com/user/MicrochipTechnology
[ more... ]

教育訓練中心

!開發工具購買
辦法說明 [業界客戶] [教育單位]
----------------------------------
!校園樣品申請
辦法說明 [教師資格] [學生資格]
----------------------------------