ÀÖ³°ÀþÁ÷¼õ¿®¥×¥í¥°¥é¥à

HOME¡¡COMPUTER

狼¤Î¤ªÌò¤ËΩ¤Æ¤ì¤Ð¹¬¤¤¤Ç¤¹


²¿Ç¯¤«Á°¤«¤é¹âÀì¥í¥Ü¥³¥ó¤âÁà½ÄÊý¼°¤Î̵Àþ²½¤¬µÁ̳¤Å¤±¤é¤ì¤Þ¤·¤¿¡£
¤·¤«¤·¤Ê¤¬¤éÅÅÇÈ̵Àþ¤Ç¤Î±ó³ÖÁàºî¤Ï¤Ê¤¼¤«¶Ø»ß¤Ê¤Î¤Ç
»È¤¨¤ëÊý¼°¤ÏÀÖ³°Àþ¡¢²Ä»ë¸÷Àþ¡¢²»ÇȷϤȤʤäƤ¤¤Þ¤¹¡£
¤·¤«¤·²Ä»ë¸÷Àþ¡¢¤Ï¶¯ÎϤʥ¹¥Ý¥Ã¥È¥é¥¤¥È¤ò»È¤ï¤ì¤ë²ñ¾ì¤Ç¤ÏÀäÂÐ̵Íý¡£
²»ÇȤÏĶ²»ÇȤò»È¤¦¥Á¡¼¥à¤¬¤´¤¯¾¯¿ô¤¢¤ê¤Þ¤¹¤¬°ÂÄêÅÙ¤«¤é¸À¤Ã¤ÆÈò¤±¤ë¤Ù¤­¤À¤È»×¤¤¤Þ¤¹¡£
¤Ä¤Þ¤ê¤Û¤È¤ó¤É¤ÏÀÖ³°Àþ¤Î¤ß¤Î¾õÂ֤Ǥ¹¡£

ÀÖ³°ÀþÄÌ¿®¤Ï´ðËÜŪ¤Ë¤Ï¥Ó¥Ã¥ÈžÁ÷¤Ë¤è¤ë¥Ç¥¸¥¿¥ëÄÌ¿®¤Ç¤¹¡£
ÊÑÄ´¼þÇÈ¿ô¤Ï38kHz¤¬Â¿¿ô¡¢º®¿®¤ò·ù¤¤455£ëH£ú¤ò»È¤¦¾ì¹ç¤â¤¢¤ê¤Þ¤¹¡£

¼õ¿®¤ÏIC¥Ñ¥Ã¥±¡¼¥¸²½¤µ¤ì¤¿ÀÖ³°Àþ¼õ¿®¥â¥¸¥å¡¼¥ë¤ò»È¤¦¤Î¤¬´Êñ¤Ç¤¹¡£

Éä¹æ²½¤ÏPPM(Pulse Position Modulation)¤È¸Æ¤Ð¤ì¤ë¤â¤Î¤¬°ìÈÌŪ¤Ç¤¹¡£
¿®¹æ´Ö¤Î̵¿®¹æ»þ´Ö¤Ë¤è¤Ã¤Æ¥Ó¥Ã¥È¤òɽ¸½¤·¤Þ¤¹¡£Ä¹¤¤¤ÈH¡¢Ã»¤¤¤ÈL¤Ç¤¹¡£
¼õ¿®¥¢¥ë¥´¥ê¥º¥à¤ÏºÇ½é¤Î¥ê¡¼¥À¡¼Éô¤Ç¤Î¤ßƱ´ü¤ò¼è¤ê¡¢°ìÄê»þ´Ö¤Ç¥µ¥ó¥×¥ê¥ó¥°
¤¹¤ë¤È¤¤¤¦¤Î¤â¹Í¤¨¤é¤ì¤Þ¤¹¤¬¥×¥í¥°¥é¥à¤ÎÃÙ±ä¤ò¹Íθ¤·¤Ê¤¤¤È¤¹¤°¤Ë¥¨¥é¡¼¤Ç¼õ¿®¤Ç¤­¤Ê¤¯¤Ê¤ê¤Þ¤¹¡£
½¾¤Ã¤Æ¥¢¥ë¥´¥ê¥º¥à¤Ï¥Ó¥Ã¥È¤´¤È¤Ë̵¿®¹æ¾õÂ֤λþ´Ö¤ò¬Äꤹ¤ë¤È¤¤¤¦Êª¤Ç¤¹¡£
¤½¤Î¤è¤¦¤Ë¤¹¤ì¤Ð¿®¹æ¤Î¥¨¥Ã¥¸¤´¤È¤ËƱ´ü¤ò¼è¤ì¤Þ¤¹¤Î¤Ç°Â¿´¤Ç¤¹¡£
¡ÊºÇ½é¤ËTTL¤Ç¤ÎÉä¹æ²½¤ò»î¤ß¤Þ¤·¤¿¤¬Á´¤¯Æ±´ü¤¬¼è¤ì¤º¤Û¤È¤ó¤É»È¤¤Êª¤Ë¤Ê¤ê¤Þ¤»¤ó¤Ç¤·¤¿¡£
Æä˼õ¿®¤Î»ÅÊý¤¬Æñ¤·¤¯¤Æ¤¢¤­¤é¤á¤Þ¤·¤¿¡£¥¢¥ë¥´¥ê¥º¥à¤Ï´Êñ¤Ç¤¹¤¬Â¿¤¯¤Î¥Ó¥Ã¥È¤òÁ÷¤í¤¦¤È¤·¤¿¾ì¹ç¤Ï
ÀäÂФˤª´«¤á¤·¤Þ¤»¤ó¡£¡Ë

»È¤Ã¤¿¥Þ¥¤¥³¥ó¤Ï¥ë¥Í¥µ¥¹¤Î3048F¤Ç¤¹¡£¡Ê½©·î¤Î¤ä¤Ä¡Ë
³«È¯´Ä¶­¤Ï¥Ù¥¹¥È¥Æ¥¯¥Î¥í¥¸¤ÎGCC Developer Lite ¤Ç¤¹¡£
¥Ø¥Ã¥À¡¼¥Õ¥¡¥¤¥ë¤â¤³¤ì¤ËÆþ¤Ã¤Æ¤Þ¤¹¤Î¤Ç¤³¤ì¤Ç¥³¥ó¥Ñ¥¤¥ë¤¹¤ì¤Ð
¨»È¤¨¤Þ¤¹¡£


Á÷¿®¥×¥í¥°¥é¥à(soshin.c)
¥Ý¡¼¥È5¤Î¥Ó¥Ã¥È0¤ËÀÖ³°ÀþLED¤¬ÉÕ¤¤¤Æ¤¤¤Æ¥Ý¡¼¥È2¤Î¥Ó¥Ã¥È0~5¤¬¥¹¥¤¥Ã¥Á¤Ç¤¹¡£
¥¹¥¤¥Ã¥Á¤ÏL¤ÇON¤Ê¤Î¤ÇPCR¤Ç¥×¥ë¥¢¥Ã¥×¤·¤Æ¤¤¤Þ¤¹¡£
¿®¹æ¤ÏÁ´Éô¤Ç6¥Ó¥Ã¥ÈÁ÷¤Ã¤Æ¤¤¤Þ¤¹¡£
¥Á¥§¥Ã¥¯¥µ¥à¤äȿž¥³¡¼¥É¤Ê¤É¤Ç¥¨¥é¡¼²óÈò¤¹¤Ù¤­¤Ç¤¹¤¬º£²ó¤Ï´Êά²½¤Î¤¿¤á¹Ô¤¤¤Þ¤»¤ó¤Ç¤·¤¿¡£
//***************************************************************
//PPMÀÖ³°Àþ¥ê¥â¥³¥óÁ÷¿®¥×¥í¥°¥é¥à Ver2.2
//2004ǯ07Œ30Æü
//
//4I YAS
//4C¡¡Outrider314
//***************************************************************

#include <3048.h>

#define LED P5.DR.BIT.B0 //½ÐÎϥݡ¼¥È

#define RF P2.DR.BIT.B0
#define RB P2.DR.BIT.B1
#define LF P2.DR.BIT.B2
#define LB P2.DR.BIT.B3

#define UP P2.DR.BIT.B4 //¥ê¥Õ¥È¾º¹ßÍѥܥ¿¥ó
#define DOWN P2.DR.BIT.B5

#define on 1
#define off 0

void wave(unsigned int time,int sw)
{



ITU1.GRA = time; // 1/2—ê“á@ÊÑ¿ôtime¦ÌS¤òÀßÄê

ITU1.TSR.BIT.IMFA=0;
ITU.TSTR.BIT.STR0 = 1; // ¥¿¥¤¥Þ¥¹¥¿¡¼¥È
ITU.TSTR.BIT.STR1 = 1; // ¥¿¥¤¥Þ¥¹¥¿¡¼¥È

while(!ITU1.TSR.BIT.IMFA){
if(sw==on){
while(!ITU0.TSR.BIT.IMFA);
P5.DR.BIT.B0=~P5.DR.BIT.B0;
ITU0.TSR.BIT.IMFA=0;
}
}

LED=1;
}


int main(void)
{
P2.DDR = 0; //¥Ý¡¼¥È2ÆþÎÏ
P2.PCR.BYTE = 0xff; //¥×¥ë¥¢¥Ã¥×MOS¡¡ON

P5.DDR = 0xff; //¥Ý¡¼¥È5½ÐÎÏ

ITU0.TCR.BIT.CCLR = 1;
ITU0.TCR.BIT.TPSC = 3; //¥×¥ê¥¹¥±¡¼¥é1/8ÀßÄê
ITU0.GRA = 25; // 1/2—ê“á@13¦ÌS¤òÀßÄê

ITU1.TCR.BIT.CCLR = 1;
ITU1.TCR.BIT.TPSC = 3; //¥×¥ê¥¹¥±¡¼¥é1/8ÀßÄê

LED=1;
while(1)
{
if(RF==0|RB==0|LF==0|LB==0|UP==0|DOWN==0){

wave(17999,on);//¥ê¡¼¥À¡¼
wave(8999,off);

wave(1099,on);
if(RF==0)wave(3379,off); else wave(1099,off);
wave(1099,on);
if(RB==0)wave(3379,off); else wave(1099,off);
wave(1099,on);
if(LF==0)wave(3379,off); else wave(1099,off);
wave(1099,on);
if(LB==0)wave(3379,off); else wave(1099,off);
wave(1099,on);
if(UP==0)wave(3379,off); else wave(1099,off);
wave(1099,on);
if(DOWN==0)wave(3379,off); else wave(1099,off);
wave(1099,on);

wave(39999,off);//80ms
wave(39999,off);
wave(39999,off);
wave(39999,off);
}
}
}


¼õ¿®¥×¥í¥°¥é¥à¡Êjusin_v3.c¡Ë
//***************************************************************
//PPMÀÖ³°Àþ¥ê¥â¥³¥ó…ðM¥×¥í¥°¥é¥à¡¡Ver1.4
//2004ǯ07Œ30Æü
//4C¡¡Outrider314
//4I YAS
//·§¸¦¥×¥í¥°¥é¥à¤ò²þ½¤
//6bit¤òÁ÷¿®3ùâŽÌ¥â¡¼¥¿¡¼¤ÎÀµÅ¾¡¢µÕžÀÚ¤êÂؤ¨
//***************************************************************

#include <3048.h>

/* IN:P5 BIT0 ir_in */
/* OUT:P2 -> FET */

/* i/o */
#define IR P5.DR.BIT.B0
#define IMFA0 ITU0.TSR.BIT.IMFA
#define out P2.DR.BYTE

/* constant for ir_rcv */
#define Ir_On 0
#define Ir_Off 1
#define Signal_Length 6 //…ðMbit¿ôwÄê
#define Time_Leader_On 180 /* time unit:0.05ms (no use) */
#define Time_Leader_Off 90 /* (no use) */
#define Time_Delimiter 11 /* (no use) */
#define Time_On 52 /* (no use) */
#define Time_Off 16 /* (no use) */
#define Time_Leader 40
#define TimeOut_Leader 2000
#define TimeOut 100
#define Time_Threshold 30

#define ERROR 0x00

void ioinit( void );
void IR_rcv( void );
void datout( void );
unsigned int irwait( unsigned char, unsigned int );

unsigned char rdat; /* must be global value */

/***** main *****/
int main( void )
{
int i, count,no_rcv;

ioinit();

rdat = 0; /* clear */

/* main loop */
while( 1 )
{
/* IR check */
count = 0;
if( IR == Ir_On )
{ /* IR in? */
while( IR == Ir_On )
{
if( IMFA0 )
{
IMFA0 = 0;
count++;
}
if( count >= 2 ) break;
}
if( count >= 2 )
{ /* >=0.1ms */
IR_rcv(); /* recieve */
}
}
datout(); //P2¤Ø¥Ç¡¼¥¿½ÐÎÏ

//°ìÄê»þ´Ö¿®¹æ¤¬Íè¤Ê¤±¤ì¤ÐÄä»ß
if(IMFA0){
IMFA0=0;
no_rcv++;
}
if(no_rcv > 1000){ //0.5s°Ê¾å̵¿®¹æ¤Ê¤éÄä»ß¿®¹æÂåÆþ
no_rcv=0;
out=0x00;
}
}
}

/***** IR recieve function *****/
void IR_rcv( void )
{
unsigned int i, count;

/* sense leader */
while( 1 ){ /* wait leader */
if( IR == Ir_On ){
count = irwait( Ir_On, TimeOut_Leader );
if( count >= Time_Leader ) break; /* >=Time_Leader then leader */
if( count > TimeOut_Leader ){ /* time out */
rdat = ERROR; return; }
}
if( IR == Ir_Off ){ /* no signal? */
count = irwait( Ir_Off, TimeOut_Leader );
if( count > TimeOut_Leader ){ /* time out */
rdat = ERROR; return; }
} }
count = irwait( Ir_Off, TimeOut_Leader ); /* wait delimiter */
if( count > TimeOut_Leader ){ /* time out */
rdat = ERROR; return; }

/* recieve data */
rdat = 0;
for( i=0; i<Signal_Length; i++ ){
count = irwait( Ir_On, TimeOut ); /* delimiter skip */
if( count > TimeOut ){ /* time out */
rdat = ERROR; return; }
count = irwait( Ir_Off, TimeOut ); /* width count */
if( count > TimeOut ){ /* time out */
rdat = ERROR; return; }
if( count > Time_Threshold ) rdat = (rdat <<1) + 1; /* >Time_Threshold then 1 */
else rdat = rdat <<1; /* small then 0 */
}
}

/* wait for IR -----*/
unsigned int irwait( unsigned char on_off, unsigned int timeout )
{
unsigned int count;

count = 0;
while( IR == on_off ){
if( IMFA0 ){
IMFA0 = 0;
count++;
}
if( count > timeout ) return( count ); /* time out */
}
return( count );
}


/* i/o initialize -----*/
void ioinit( void )
{
P2.DDR = 0xff; /* output */
P5.DDR = 0x00; /* input */

ITU0.TCR.BYTE = 0x22; /* on GRA, 1/4 */
ITU0.GRA = 200; /* 20kHz */
ITU.TMDR.BYTE = 0;
ITU.TSTR.BYTE = 0x01; /* ch0 start */
}

/* output to P2 */
void datout( void )
{
switch (rdat)
{
case 1 : {out = 0x20;break;}
case 2 : {out = 0x10;break;}

case 3 : {out = 0x00;break;} //¥¨¥é¡¼Û󎮺î

case 4 : {out = 0x08;break;}
case 5 : {out = 0x28;break;}
case 6 : {out = 0x18;break;}

case 8 : {out = 0x04;break;}
case 9 : {out = 0x24;break;}
case 10: {out = 0x14;break;}

case 12: {out = 0x00;break;} //¥¨¥é¡¼Û󎮺î
case 15: {out = 0x00;break;} //¥¨¥é¡¼Û󎮺î

case 16: {out = 0x02;break;}
case 17: {out = 0x22;break;}
case 18: {out = 0x12;break;}

case 20: {out = 0x0a;break;}
case 21: {out = 0x2a;break;}
case 22: {out = 0x1a;break;}

case 24: {out = 0x06;break;}
case 25: {out = 0x26;break;}
case 26: {out = 0x16;break;}

case 32: {out = 0x01;break;}
case 33: {out = 0x21;break;}
case 34: {out = 0x11;break;}

case 36: {out = 0x09;break;}
case 37: {out = 0x29;break;}
case 38: {out = 0x19;break;}

case 40: {out = 0x05;break;}
case 41: {out = 0x25;break;}
case 42: {out = 0x15;break;}

case 48: {out = 0x00;break;} //¥¨¥é¡¼Û󎮺î
case 51: {out = 0x00;break;} //¥¨¥é¡¼Û󎮺î
case 60: {out = 0x00;break;} //¥¨¥é¡¼Û󎮺î
case 63: {out = 0x00;break;} //¥¨¥é¡¼Û󎮺î

defaule: {out = 0x00;}
}

}



¥À¥¦¥ó¥í¡¼¥É
¥½¥Õ¥È¤¬¤Ê¤¯¤Æ¤â»È¤¨¤ë¤è¤¦¤Ë°ì±þ¡¢µ¡³£¸ì¡Ê¥â¥È¥í¡¼¥é·Á¼°¡Ë¤âÆþ¤ì¤Þ¤·¤¿¡£

--------Ãí°Õ--------
¤½¤Î¤Þ¤ÞÆó¼¡ÇÛÉۤϤä¤á¤Æ¤¯¤À¤µ¤¤¡£
Æ°ºî¤ÏÊݾڤ·¤Þ¤»¤ó¡£¡ÊÆ°ºî³Îǧ¤Ï¤·¤Æ¤Þ¤¹¤¬¡Ë
¥×¥í¥°¥é¥à¤Ë´Ø¤·¤Æºî¼Ô¤Ï°ìÀÚ¤ÎÀÕǤ¤òÉ餤¤Þ¤»¤ó¡£

¥À¥¦¥ó¥í¡¼¥É
Ir_ctrl.lzh
lzh·Á¼°¡¡4,372 ¥Ð¥¤¥È
¥×¥í¥°¥é¥à¤Ë´Ø¤·¤Æ°Õ¸«¤Ê¤É¤¤¤¿¤À¤±¤¿¤é¹¬¤¤¤Ç¤¹¡£


Copyright (C) 2002 YAS All Rights Reserved

inserted by FC2 system