⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 irda.c

📁 powerpc下irda驱动,支持tornado2.2
💻 C
字号:
/****************************************************************************
    Shanghai Pallas Digital Tech. Ltd,  (C) 2002 , All rights are reserved

    File : IrDA.c

    实现了实时时钟功能

****************************************************************************/

#include <vxworks.h>
#include <ioLib.h>
#include "base.h"

#if ( HARDWARE_VERSION == 2 )
#include "ads852.h"
#include "m852reg.h"
#include "m852mask.h"
#else
#include "ads8260.h"
#include "m8260reg.h"
#include "m8260mask.h"
#endif


#include "IrDA.h"

//#define OLD_IRDA

/********************************************************************
*    init irda 
*/
void  init_irda( void )
{
#if ( HARDWARE_VERSION == 2 )
#else
    U32 base = vxImmrGet();    
    U32 data , tep  ;
    
#ifdef OLD_IRDA        
    int fd   ;        
    
    
    //old type irda config   
    base = vxImmrGet();  
    
    //config clk pin
    *M8260_PDODR( base ) &= ~( PD17 ) ;
    *M8260_PDPAR( base ) |= PD17      ;   
    *M8260_PDDIR( base ) |= PD17      ;    
    *M8260_PDSO( base )  &= ~PD17     ;    
    
    fd  =   open( "/tyCo/1" , O_RDONLY   , 0   ) ;
    ioctl (fd , FIOBAUDRATE  , 588 ) ;
    close( fd ) ;           
#else    
    
    //config clk pin
    *M8260_PDODR( base ) &= ~IRDA_CLK_PIN   ;
    *M8260_PDPAR( base ) |= IRDA_CLK_PIN    ;   
    *M8260_PDDIR( base ) |= IRDA_CLK_PIN    ;    
    *M8260_PDSO ( base ) |= IRDA_CLK_PIN    ;    
    
    //config the BRG5 CLK frequency
    data = 4118400 / IRDA_BAUD_RATE + 1 ;
    if( IRDA_BAUD_RATE <= 600 )
    {
        data = data / 16 ;
        tep  = 0x00010001 | ( data << 1 ) ;
    }else{
        tep  = 0x00010000 | ( data << 1 ) ;
    }    
    *M8260_BRGC5( base )  =  tep  ;
#endif
#endif    
}

/*********************************************************************
*   scan remoter input 
*/
int scan_remoter_key( void )
{
    U8  key ;

    key  =  *IRDA_INPUT_DATA ;
    
    /*check whether new irda data available*/
    if( key & IRDA_READY )
    {
        *IRDA_INPUT_DATA   =  0 ;
        key  =  key & 0x3F      ;   /*get low 6 bit data*/
        if( key == 0x3F )           /*filter the bad data*/ 
            return -1 ;
        return key    ;
    }
    
    return -1 ;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -