亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? m41t11rtc.c

?? INTEL IXP425的VXWORKS BSP
?? C
?? 第 1 頁 / 共 2 頁
字號:
/* m41t11RTC.c - RTC m41t11 real time clock driver */

/* Copyright 2003-2004, Flexcomm Technology (Shenzhen) Limited.*/
/* Copyright 1984-1994, Wind River Systems, Inc. */

/*
modification history
--------------------
040316 james create ,referenced to driver/rtc/n8571RTC.c
*/

/*
DESCRIPTION
This is the driver for the on board real time clock.

USER CALLABLE ROUTINES
Most of the routines in this driver are accessible only through the I/O
system. Two routines, however, must be called directly, rtcDrv to
initialize the driver, and rtcDevCreate to create the device.

INSTALLING THE DRIVER
Before using the driver, it must be initialized by calling the routine:

.CS
rtcDrv ()
.CE

This routine should be called exactly once, before any ioctls or
DevCreates. Normally, it is called from usrRoot.

CREATING YOUR DEVICE
Before the real time clock device can be used, it has to be created.
This is done with the rtcDevCreate call:

.CS
STATUS rtcDevCreate ()
.CE

The default name for this device is "/rtc".

RTC DATE AND TIME
This driver maintains the date and time in an internal structure.
There are two routines provided to set the date and the time:

.CS
rtcDateSet (1992, 1, 13, 1);  set date to Jan-13-1992, Mon
.CS
.CE
rtcTimeSet (14, 30, 22);      set time to 14:30:22
.CE

To set the time, 24 hour notation is required.

To read the date and the time the following two routines
have to be called:

.CS
rtcDateGet ();                print current date
.CS
.Ce
rtcTimeGet ();                print current time
.CE

RTC 12/24 HOUR MODE
To toggle between the 12 and 24 hour mode, an additional call is
installed:

.CS
rtcModeSet (mode);            set the mode
.CE

where mode has to be 12 or 24.

DOS DATE AND TIME
To support date and time of local DOS files, a date/time hook
routine is provided. After installing the RTC driver and
creating the RTC device with the calls described above, this routine
has to be installed with the call:

.CS
dosFsDateTimeInstall (rtcHook);
.CE
*/
 
/* includes */

#include "vxWorks.h"
#include "stdio.h"
#include "types.h"
#include "iosLib.h"
#include "errnoLib.h"
#include "dosFsLib.h"
#include "time.h"
#include "ctype.h"

/*###########################################*/
/*###########################################*/
/*I2C driver*/
/*#define I2C_STATUS_ADR 0x38420000
#define I2C_SDA_ADR    0x38428000
#define I2C_SCL_ADR    0x38430000
 

#define I2C_SDA_OUTPUT  { *(unsigned char*) I2C_STATUS_ADR=3;}
#define I2C_SDA_INPUT   { *(unsigned char*) I2C_STATUS_ADR=2;}
 
#define I2C_SCL_POLLDOWN { *(unsigned char*) I2C_SCL_ADR=0;}
#define I2C_SCL_POLLUP   { *(unsigned char*) I2C_SCL_ADR=1;}
 
#define I2C_SDA_POLLDOWN { *(unsigned char* )I2C_SDA_ADR=0;}
#define I2C_SDA_POLLUP   { *(unsigned char* )I2C_SDA_ADR=1;}
 
#define DP8571_ADRS 0x10000000*/

#define GPIO_OUTPUT_ENABLE_REGISTER 	0xc8004004
#define GPIO_OUTPUT_DATA_REGISTER      	0xc8004000
#define GPIO_INPUT_STATUS_REGISTER    	0xc8004008 

#define I2C_SDA  7
#define I2C_SCL   6

#define I2C_SDA_OUTPUT                          	*(unsigned int *)GPIO_OUTPUT_ENABLE_REGISTER &= ~(1<<I2C_SDA)
#define I2C_SDA_INPUT                               	*(unsigned int *)GPIO_OUTPUT_ENABLE_REGISTER |= (1<<I2C_SDA)

#define I2C_SDA_POLLUP                             	*(unsigned int *)GPIO_OUTPUT_DATA_REGISTER |= (1<<I2C_SDA)
#define I2C_SDA_POLLDOWN                       	*(unsigned int *)GPIO_OUTPUT_DATA_REGISTER &= ~(1<<I2C_SDA)
#define I2C_SCL_OUTPUT                             	*(unsigned int *)GPIO_OUTPUT_ENABLE_REGISTER &= ~(1<<I2C_SCL)
#define I2C_SCL_POLLUP                              	*(unsigned int *)GPIO_OUTPUT_DATA_REGISTER |= (1<<I2C_SCL)
#define I2C_SCL_POLLDOWN                       	*(unsigned int *)GPIO_OUTPUT_DATA_REGISTER &= ~(1<<I2C_SCL)
int iixx,iiixxx;
#define RTC_Delay(t)                                    { for(iixx = 0;  \
											iixx < t;   \
											iixx ++)   \
											iiixxx = iixx*iixx;\
                                                                      }              
#define RTC_TIMEOUT                                  	100000
#define RTC_DELAY_CNT                                400
#define I2C_SDA_GET                                    (((* (unsigned int *)GPIO_INPUT_STATUS_REGISTER)>>I2C_SDA) & 1)

STATUS I2C_Start()
{
	I2C_SCL_OUTPUT;
 	I2C_SDA_OUTPUT;
 	
 	I2C_SCL_POLLUP; 
	RTC_Delay(RTC_DELAY_CNT);
	
 	I2C_SDA_POLLDOWN;
	RTC_Delay(RTC_DELAY_CNT);

	I2C_SCL_POLLDOWN;
	RTC_Delay(RTC_DELAY_CNT);
	
	return OK;
}

STATUS I2C_Stop()
{

       I2C_SDA_POLLDOWN;
	I2C_SDA_OUTPUT;

  	I2C_SCL_POLLUP;
	RTC_Delay(RTC_DELAY_CNT);
	
 	I2C_SDA_POLLUP;
	RTC_Delay(RTC_DELAY_CNT);

 	return OK;
}
 


STATUS I2C_ACK_check()
{
 	int i=0;

	I2C_SDA_INPUT ;
  	I2C_SCL_POLLUP;
	RTC_Delay(RTC_DELAY_CNT);
	
  	while(I2C_SDA_GET != 0)
 	{
  		i ++ ;
    		if(i > RTC_TIMEOUT )
  		{
   			printf("\r\nACK check ERROR,%d\n",i);
			RTC_Delay(RTC_DELAY_CNT);
   			return ERROR;
  		}
 	}
	RTC_Delay(RTC_DELAY_CNT); 
	I2C_SCL_POLLDOWN;
	I2C_SDA_POLLUP;
	RTC_Delay(RTC_DELAY_CNT); 
	
 	return OK;
}




STATUS I2C_Write_ACK()
{

 
 	I2C_SCL_POLLDOWN;
	RTC_Delay(RTC_DELAY_CNT);
	
  	I2C_SDA_POLLDOWN ;
	I2C_SDA_OUTPUT ;
	RTC_Delay(RTC_DELAY_CNT);	
	
     	I2C_SCL_POLLUP;
	RTC_Delay(RTC_DELAY_CNT);

	I2C_SCL_POLLDOWN;
	RTC_Delay(RTC_DELAY_CNT);
		
     	return OK;
 }



STATUS I2C_Write(unsigned char data)
{
 	int i;
 	unsigned char tmpp;
 
 	I2C_SDA_OUTPUT;
 	for(i=0;i<8;i++)
 	{ 
  		tmpp = data << i ;
   		if(tmpp&0x80)
  		{
   			I2C_SDA_POLLUP;
  		}
  		else
  		{
   			I2C_SDA_POLLDOWN;
				
  		}
  		RTC_Delay(RTC_DELAY_CNT);
 
    		I2C_SCL_POLLUP;
		RTC_Delay(RTC_DELAY_CNT);

		I2C_SCL_POLLDOWN;
              RTC_Delay(RTC_DELAY_CNT);
  
  	 }
 
}


STATUS I2C_Read(unsigned char *data)
{
 	int i;
 	unsigned int tmpp;
 
 	tmpp = 0;
	
	I2C_SDA_INPUT;
	RTC_Delay(RTC_DELAY_CNT);
        
  	for(i=0;i<8;i++)
 	{
   		I2C_SCL_POLLDOWN;
		RTC_Delay(RTC_DELAY_CNT);
  		
     		I2C_SCL_POLLUP;
		tmpp |= (I2C_SDA_GET<<(7-i));
		RTC_Delay(RTC_DELAY_CNT);
   
 	}
	I2C_Write_ACK();
	
	*data = tmpp;
  
}

void I2C_Init()
{
    	I2C_Stop();
}


STATUS m41t11_Read(unsigned char adr,unsigned char *dataOut)
{

  	STATUS sta =ERROR;
 
 	I2C_Start();
 	I2C_Write(0xd0);
	 if( I2C_ACK_check() == ERROR ) goto m41t11_ReadStop;
 	I2C_Write(adr);
 	if( I2C_ACK_check() == ERROR ) goto m41t11_ReadStop;;

 	I2C_Start();
 	I2C_Write(0xd1);
 	if( I2C_ACK_check() == ERROR ) goto m41t11_ReadStop;
 	I2C_Read(dataOut);
 
	sta = OK ;

m41t11_ReadStop:
   
   	I2C_Stop();
   	return sta;
 
}

STATUS m41t11_Write(unsigned char adr,unsigned char data)
{
	STATUS sta =ERROR;

 	I2C_Start();
 	I2C_Write(0xd0);
 
 	if( I2C_ACK_check() == ERROR ) goto m41t11_WriteStop;
 	I2C_Write(adr);
 	if( I2C_ACK_check() == ERROR ) goto m41t11_WriteStop;
 	I2C_Write(data);
 	if( I2C_ACK_check() == ERROR ) goto m41t11_WriteStop;

	sta = OK ;

m41t11_WriteStop:
 	I2C_Stop();
 	return sta;
}


 unsigned char I2C_Read_Test(unsigned char pos)
{
    unsigned char temp;
    m41t11_Read(pos, &temp)	;
    return temp;
}

void I2C_Write_Test(unsigned char  temp)
{
     m41t11_Write(1, temp)	;
 }

I2C_test()
{
	unsigned char adr,data;
	
	/*configure the test output*/
	adr = 7;
	data= 0x40;
	m41t11_Write(adr,data);
	
	adr = 7;
	data= 0x00;
	m41t11_Write(adr,data);
	
}

/*############################################*/
/*############################################*/
/*############################################*/

/* typedefs */

typedef struct              /* RTC_DEV */
    {
    DEV_HDR ioDev;
    BOOL created;
    } RTC_DEV;

typedef struct              /* rtc date and time structure */
    {
    int rtcYear;
    int rtcLeapYearDist;
    int rtcMonth;
    int rtcDayOfYear;
    int rtcDayOfMonth;
    int rtcDayOfWeek;
    int rtcHour;
    int rtcMinute;
    int rtcSecond;
    } RTC_DATE_TIME;

/* defines */

#define RTC_DEVICE "/rtc"

#define SET_DATE    100
#define GET_DATE    101
#define SET_TIME    102
#define GET_TIME    103
#define MODE_12HOUR 104
#define MODE_24HOUR 105
#define I2C_RESET        106

#define CENTURY     1970

#define rtc_Year            		rtcDateTime.rtcYear
#define rtc_LeapYearDist    	rtcDateTime.rtcLeapYearDist
#define rtc_Month           		rtcDateTime.rtcMonth
#define rtc_DayOfYear       	rtcDateTime.rtcDayOfYear
#define rtc_DayOfMonth      	rtcDateTime.rtcDayOfMonth
#define rtc_DayOfWeek       	rtcDateTime.rtcDayOfWeek
#define rtc_Hour            		rtcDateTime.rtcHour
#define rtc_Minute          		rtcDateTime.rtcMinute
#define rtc_Second          		rtcDateTime.rtcSecond

/* locals */

RTC_DEV rtcDv =       /* device descriptor */
    {
    {{NULL}},
    FALSE
    };

char *monthTable [12] =
    {
    "JAN", "FEB", "MAR", "APR", "MAY", "JUN",
    "JUL", "AUG", "SEP", "OCT", "NOV", "DEC"
    };

char *dayTable [7] =
    {
    "Sunday", "Monday", "Tuesday",
    "Wednesday", "Thursday", "Friday", "Saturday"
    };

int rtcDrvNum = 0;        /* driver number assigned to this driver */

int mode = 12;

RTC_DATE_TIME rtcDateTime;



/* forward declarations */

int rtcOpen (RTC_DEV *pRtcDv);
int rtcClose (RTC_DEV *pRtcDv);
STATUS rtcIoctl (RTC_DEV *pRtcDv, int request, BOOL print);
int toBCD (int intValue);
int fromBCD (int bcdValue);
void rtcSpIoctl (int request, BOOL print);
int dayOfYear (int month, int day);

/*******************************************************************************
*
* rtcDrv - adding the driver to the driver system
*
* This routine must be called in supervisor state.
*
* RETURNS: OK or ERROR
*/

STATUS rtcDrv (void)

    {
    if (rtcDrvNum > 0)
        return (OK);

    rtcDrvNum = iosDrvInstall (rtcOpen, (FUNCPTR) NULL, rtcOpen,
                               rtcClose, (FUNCPTR) NULL, (FUNCPTR) NULL,
                               rtcIoctl);

    return (rtcDrvNum == ERROR ? ERROR : OK);
    }

/*******************************************************************************
*
* rtcDevCreate - create a device for the real time clock
*
* RETURN: OK or ERROR, if already created.
*/

STATUS rtcDevCreate (void)

    {
    /* test if driver already installed */

    if (rtcDrvNum <= 0)
        {
        (void) errnoSet (S_ioLib_NO_DRIVER);
        return (ERROR);
        }

    /* if there is a device already created, don't do it */

    if (rtcDv.created)
        return (ERROR);

    /* initialize clock to 24 hour mode */

    mode = 24;

    /*
     * mark the device as having been created
     * and add it to the I/O system
     */

    rtcDv.created = TRUE;

    return (iosDevAdd ((DEV_HDR *) &rtcDv, RTC_DEVICE, rtcDrvNum));
    }

/*******************************************************************************
*
* rtcOpen - open file to RTC
*/

int rtcOpen
    (
    RTC_DEV *pRtcDv
    )

    {
    return ((int) pRtcDv);
    }

/*******************************************************************************
*
* rtcClose - close file to RTC
*/

int rtcClose
    (
    RTC_DEV *pRtcDv
    )

    {
    return (OK);
    }

/*******************************************************************************
*
* rtcHook - date/time hook routine to set DOS file date and time
*
* NOMANUAL
*/

void rtcHook
    (
    DOS_DATE_TIME *pDateTime
    )

    {
    /* update local date and time structure */

    rtcSpIoctl (GET_DATE, FALSE);
    rtcSpIoctl (GET_TIME, FALSE);

    /* pass values to DOS date and time structure */

    pDateTime->dosdt_year = CENTURY + rtc_Year;     /* current year */
    pDateTime->dosdt_month = rtc_Month;             /* current month */
    pDateTime->dosdt_day = rtc_DayOfMonth;          /* current day */
    pDateTime->dosdt_hour = rtc_Hour;               /* current hour */
    pDateTime->dosdt_minute = rtc_Minute;           /* current minute */
    pDateTime->dosdt_second = rtc_Second;           /* current second */
    }

/*******************************************************************************
*
* rtcDateSet - set the date
*
* RETURNS: N/A.
*/

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
一区二区三区日韩精品视频| 精品美女在线播放| 亚洲人成网站影音先锋播放| 97se狠狠狠综合亚洲狠狠| 亚洲天堂精品在线观看| 色婷婷av一区二区三区大白胸| 亚洲裸体xxx| 欧美久久婷婷综合色| 久久精品99国产精品日本| 久久影视一区二区| 91麻豆免费视频| 91片黄在线观看| 午夜精品成人在线| 久久久亚洲高清| 成人开心网精品视频| 亚洲一区二区三区视频在线播放 | 国产精品1024| 中文字幕久久午夜不卡| 在线亚洲精品福利网址导航| 日本欧美一区二区| 国产色91在线| 欧美日韩国产一二三| 国内精品在线播放| 玉米视频成人免费看| 精品久久久久久久人人人人传媒| 成人精品国产免费网站| 日韩黄色一级片| 国产精品国产精品国产专区不片| 欧美日韩欧美一区二区| 国产精品888| 午夜精品123| 自拍偷拍亚洲激情| www国产亚洲精品久久麻豆| 91亚洲精品久久久蜜桃| 国内精品伊人久久久久av一坑| 日韩毛片在线免费观看| 欧美成人福利视频| 欧美在线视频不卡| 成年人午夜久久久| 美女视频黄a大片欧美| 亚洲最大的成人av| 国产日韩欧美精品在线| 日韩一区二区三区在线| 在线欧美小视频| 成人丝袜高跟foot| 国产一区二区0| 日韩av一区二| 亚洲一区二区三区四区不卡| 国产精品乱子久久久久| 久久女同性恋中文字幕| 日韩一区二区三区视频在线 | 色综合久久九月婷婷色综合| 久久国产精品色婷婷| 亚洲国产精品欧美一二99| 中文字幕精品三区| 精品久久久久久久久久久久久久久| 色先锋aa成人| 色综合久久88色综合天天免费| 风流少妇一区二区| 国产麻豆成人精品| 九一九一国产精品| 久久丁香综合五月国产三级网站| 丝瓜av网站精品一区二区| 亚洲第一在线综合网站| 洋洋av久久久久久久一区| 伊人婷婷欧美激情| 一区二区三区在线视频观看| 亚洲欧洲日韩av| 国产精品福利av| 亚洲日韩欧美一区二区在线| 国产精品国产三级国产a| 国产精品护士白丝一区av| 国产精品美女久久久久高潮| 国产日产欧产精品推荐色| 2023国产一二三区日本精品2022| 精品日韩一区二区三区免费视频| 91精品国产品国语在线不卡| 欧美一区二区三区在线| 欧美一级日韩免费不卡| 精品国产一区二区三区不卡| 久久―日本道色综合久久| 国产午夜精品美女毛片视频| 国产精品私房写真福利视频| 国产精品理伦片| 亚洲主播在线观看| 秋霞电影一区二区| 久久国产精品免费| 成人免费视频caoporn| 99久久精品免费看国产| 欧美日韩一区二区欧美激情| 91精品国产综合久久精品麻豆| 欧美一级二级在线观看| 国产欧美视频一区二区| 亚洲另类中文字| 日韩av不卡一区二区| 国产精品自产自拍| 色综合天天综合网国产成人综合天| 色播五月激情综合网| 91精品国产色综合久久ai换脸 | 国产福利一区二区三区| 成人h动漫精品一区二区| 欧美亚洲动漫精品| 精品福利在线导航| 亚洲欧美色综合| 日本大胆欧美人术艺术动态| 经典三级视频一区| 91久久香蕉国产日韩欧美9色| 欧美日韩欧美一区二区| 国产日韩欧美不卡在线| 亚洲成人一区二区在线观看| 激情综合色播激情啊| 一本大道久久精品懂色aⅴ| 欧美一区二区三区视频| 亚洲视频电影在线| 黄色资源网久久资源365| 91麻豆国产在线观看| 欧美精品一区二区三区视频| 一区二区三区美女| 国产毛片精品国产一区二区三区| 色婷婷综合久久久中文一区二区| 欧美本精品男人aⅴ天堂| 亚洲人成网站影音先锋播放| 理论电影国产精品| 在线日韩一区二区| 欧美激情在线免费观看| 青青草国产精品97视觉盛宴| 99国产精品国产精品久久| 精品乱人伦小说| 亚洲国产精品久久久男人的天堂| 国产综合色视频| 91精品综合久久久久久| 亚洲欧美自拍偷拍色图| 九色综合狠狠综合久久| 欧美乱妇15p| 一区二区三区四区视频精品免费| 国产综合色产在线精品| 91精品在线免费观看| 亚洲曰韩产成在线| a亚洲天堂av| 国产偷v国产偷v亚洲高清| 日本不卡的三区四区五区| 欧美亚日韩国产aⅴ精品中极品| 中文子幕无线码一区tr| 国产尤物一区二区在线| 337p亚洲精品色噜噜噜| 一区二区成人在线视频| jizzjizzjizz欧美| 国产欧美在线观看一区| 国产精品系列在线播放| 欧美一级理论片| 日本成人在线不卡视频| 欧美日韩一级黄| 一二三区精品视频| 色先锋aa成人| 亚洲综合在线免费观看| 一本在线高清不卡dvd| 日韩美女视频一区| 99精品在线观看视频| 亚洲欧洲精品一区二区三区不卡 | 一区二区三区四区激情| 91视频在线观看| 国产精品系列在线| 成人精品国产免费网站| 中文字幕日韩精品一区| 波多野结衣的一区二区三区| 久久99蜜桃精品| 日韩欧美专区在线| 人人爽香蕉精品| 精品三级在线观看| 国产精品一区二区不卡| 中文字幕中文乱码欧美一区二区 | 亚洲国产精品久久久男人的天堂| 91免费版在线| 亚洲一二三区在线观看| 欧美亚洲高清一区| 日韩成人dvd| 精品福利二区三区| 成人精品一区二区三区四区| 国产精品嫩草影院com| 99re视频精品| 婷婷夜色潮精品综合在线| 日韩你懂的在线观看| 国产福利视频一区二区三区| 国产精品国产精品国产专区不蜜| 色婷婷综合久久久中文一区二区| 午夜日韩在线观看| 久久午夜电影网| 99精品国产一区二区三区不卡| 亚洲夂夂婷婷色拍ww47| 精品日韩99亚洲| 丁香婷婷综合五月| 亚洲成人在线网站| 久久久久青草大香线综合精品| 成人av在线电影| 亚洲h动漫在线| 久久久国产午夜精品| 91捆绑美女网站| 久久电影国产免费久久电影 | 亚洲午夜电影在线观看| 日韩视频一区二区在线观看|