📄 evm3d.c
字号:
/*------------------------------------------------------------------------------*/
/* */
/* Copyright (C) 1999-2003 by Texas Instruments, Inc. All rights reserved. */
/* Copyright (C) 2001-2003 Telogy Networks. */
/* */
/* IMPORTANT - READ CAREFULLY BEFORE PROCEEDING TO USE SOFTWARE. */
/* */
/* This document is displayed for you to read prior to using the software */
/* and documentation. By using the software and documentation, or opening */
/* the sealed packet containing the software, or proceeding to download the */
/* software from a Bulletin Board System(BBS) or a WEB Server, you agree to */
/* abide by the following Texas Instruments License Agreement. If you choose */
/* not to agree with these provisions, promptly discontinue use of the */
/* software and documentation and return the material to the place you */
/* obtained it. */
/* */
/* *** NOTE *** */
/* */
/* The licensed materials contain MIPS Technologies, Inc. confidential */
/* information which is protected by the appropriate MIPS Technologies, Inc. */
/* license agreement. It is your responsibility to comply with these */
/* licenses. */
/* */
/* Texas Instruments License Agreement */
/* */
/* 1. License - Texas Instruments (hereinafter "TI"), grants you a license */
/* to use the software program and documentation in this package ("Licensed */
/* Materials") for Texas Instruments broadband products. */
/* */
/* 2. Restrictions - You may not reverse-assemble or reverse-compile the */
/* Licensed Materials provided in object code or executable format. You may */
/* not sublicense, transfer, assign, rent, or lease the Licensed Materials */
/* or this Agreement without written permission from TI. */
/* */
/* 3. Copyright - The Licensed Materials are copyrighted. Accordingly, you */
/* may either make one copy of the Licensed Materials for backup and/or */
/* archival purposes or copy the Licensed Materials to another medium and */
/* keep the original Licensed Materials for backup and/or archival purposes. */
/* */
/* 4. Runtime and Applications Software - You may create modified or */
/* derivative programs of software identified as Runtime Libraries or */
/* Applications Software, which, in source code form, remain subject to this */
/* Agreement, but object code versions of such derivative programs are not */
/* subject to this Agreement. */
/* */
/* 5. Warranty - TI warrants the media to be free from defects in material */
/* and workmanship and that the software will substantially conform to the */
/* related documentation for a period of ninety (90) days after the date of */
/* your purchase. TI does not warrant that the Licensed Materials will be */
/* free from error or will meet your specific requirements. */
/* */
/* 6. Remedies - If you find defects in the media or that the software does */
/* not conform to the enclosed documentation, you may return the Licensed */
/* Materials along with the purchase receipt, postage prepaid, to the */
/* following address within the warranty period and receive a refund. */
/* */
/* TEXAS INSTRUMENTS */
/* Application Specific Products, MS 8650 */
/* c/o ADAM2 Application Manager */
/* 12500 TI Boulevard */
/* Dallas, TX 75243 - U.S.A. */
/* */
/* 7. Limitations - TI makes no warranty or condition, either expressed or */
/* implied, including, but not limited to, any implied warranties of */
/* merchantability and fitness for a particular purpose, regarding the */
/* licensed materials. */
/* */
/* Neither TI nor any applicable licensor will be liable for any indirect, */
/* incidental or consequential damages, including but not limited to loss of */
/* profits. */
/* */
/* 8. Term - The license is effective until terminated. You may terminate */
/* it at any other time by destroying the program together with all copies, */
/* modifications and merged portions in any form. It also will terminate if */
/* you fail to comply with any term or condition of this Agreement. */
/* */
/* 9. Export Control - The re-export of United States origin software and */
/* documentation is subject to the U.S. Export Administration Regulations or */
/* your equivalent local regulations. Compliance with such regulations is */
/* your responsibility. */
/* */
/* *** IMPORTANT NOTICE *** */
/* */
/* Texas Instruments (TI) reserves the right to make changes to or to */
/* discontinue any semiconductor product or service identified in this */
/* publication without notice. TI advises its customers to obtain the latest */
/* version of the relevant information to verify, before placing orders, */
/* that the information being relied upon is current. */
/* */
/* TI warrants performance of its semiconductor products and related */
/* software to current specifications in accordance with TI's standard */
/* warranty. Testing and other quality control techniques are utilized to */
/* the extent TI deems necessary to support this warranty. Unless mandated */
/* by government requirements, specific testing of all parameters of each */
/* device is not necessarily performed. */
/* */
/* Please be aware that Texas Instruments products are not intended for use */
/* in life-support appliances, devices, or systems. Use of a TI product in */
/* such applications without the written approval of the appropriate TI */
/* officer is prohibited. Certain applications using semiconductor devices */
/* may involve potential risks of injury, property damage, or loss of life. */
/* In order to minimize these risks, adequate design and operating */
/* safeguards should be provided by the customer to minimize inherent or */
/* procedural hazards. Inclusion of TI products in such applications is */
/* understood to be fully at the risk of the customer using TI devices or */
/* systems. */
/* */
/* TI assumes no liability for TI applications assistance, customer product */
/* design, software performance, or infringement of patents or services */
/* described herein. Nor does TI warrant or represent that license, either */
/* expressed or implied, is granted under any patent right, copyright, mask */
/* work right, or other intellectual property right of TI covering or */
/* relating to any combination, machine, or process in which such */
/* semiconductor products or services might be or are used. */
/* */
/* All company and/or product names are trademarks and/or registered */
/* trademarks of their respective manaufacturers. */
/*------------------------------------------------------------------------------*/
#include "_stdio.h"
#include "env.h"
#include "hw.h"
extern unsigned int _CpuFrequency;
int avalanche_rtc_estimate_cpufreq(unsigned int dtype,unsigned int dev);
bit32u getdtime(unsigned int dtype, unsigned int dev);
unsigned int t_get(void);
void t_clear(void);
unsigned int SetupCpuFrequency(void)
{
return(avalanche_rtc_estimate_cpufreq(13,0));
}
bit32u GetCurrentDateTime()
{
return(getdtime(13,0));
}
int avereadb(unsigned int dtype, unsigned int dev, unsigned int adr, unsigned int *dat)
{
unsigned int tmp;
int i;
dev &=0x7;
dtype &=0xf;
IIC_DATA_HI = IICWRITE|(dtype<<3)|dev;
IIC_DATA_LOW = adr;
for(i=0;(i<1000000)&&((IIC_DATA_READ&0x4000)==0);i++)
{
t_get();
}
IIC_DATA_HI = IICREAD|END_BURST|(dtype<<3)|dev;
IIC_DATA_LOW = adr;
for(i=0;(i<1000000)&&(((tmp=IIC_DATA_READ)&0x4000)==0);i++)
{
t_get();
}
*dat=tmp&0x0ff;
return((tmp&0x8000)==0);
}
void iicwait(unsigned int et)
{
unsigned int ct;
t_clear();
do
{
ct=t_get();
}while(ct<et);
}
int avewriteb(unsigned int dtype, unsigned int dev,
unsigned int adr, unsigned int dat,
unsigned int prescaler)
{
unsigned int tmp;
dev &=0x7;
dtype &=0xf;
IIC_DATA_HI = IICWRITE|(dtype<<3)|dev;
IIC_DATA_LOW = adr;
iicwait(prescaler*4*8);
tmp=IIC_DATA_READ;
IIC_DATA_LOW = dat;
iicwait(prescaler*4*4);
tmp=IIC_DATA_READ;
IIC_DATA_HI = END_BURST;
iicwait(prescaler*4*2);
return((tmp&0x8000)==0);
}
int avalanche_rtc_estimate_cpufreq(unsigned int dtype,unsigned int dev)
{
int i,done;
unsigned int maxfreq,t1,t2,t3,t4,tt,prescaler;
RESET_PRCR &= ~IIC_RESET;
RESET_PRCR &= ~GPIO_RESET;
iicwait(32);
RESET_PRCR |= IIC_RESET;
RESET_PRCR |= GPIO_RESET;
maxfreq=180000000;
prescaler=maxfreq/10000;
iicwait(32);
IIC_CLOCK_DIV = prescaler;
IIC_CONFIG = 1;
avewriteb(dtype,dev,7,0x90,prescaler); /*Enable 1Hz Clock output! */
t2=(maxfreq+50000)/4; /*Cal the longest wait */
t_clear();
do
{
t1=t_get();
done=(GPIO_IN&EINT_1)!=0;
}while((!done)&&(t1<t2));
if (done)
{
t_clear();
do
{
t1=t_get();
done=(GPIO_IN&EINT_1)==0;
}while((!done)&&(t1<t2));
}
if (!done)
{
avewriteb(dtype,dev,7,0x80,prescaler);
return(20000000);
}
t_clear();
t1=t_get();
t1=t_get();
t1=t_get();
t2=t_get();
for(i=0,done=FALSE;(!done)&&(i<125000000);i++)
done=(GPIO_IN&EINT_1)!=0;
t3=t_get();
for(i=0,done=FALSE;(!done)&&(i<125000000);i++)
done=(GPIO_IN&EINT_1)==0;
t4=t_get();
tt=t4-t3-(t2-t1);
tt+=PPM_TOLERANCE;
tt/=PPM_TOLERANCE*2;
tt*=PPM_TOLERANCE*8; /* 2 to restore previous round div, 2 for period, 2 for C0_COUNT to sys freq*/
avewriteb(dtype,dev,7,0x80,prescaler);
return(tt);
}
bit32u getdtime(unsigned int dtype, unsigned int dev)
{
int j;
unsigned int uitmp,dtime,freq,prescaler;
char cdat[7],*cp;
/* Returns Year(Y), Month(M), Day(D), Horr(h), Minute(m), Second(s) */
/* bit32u=YYYYYYYMMMMDDDDDhhhhhmmmmmmsssss */
/* YYYYYYY+1970=Current Year */
/* MMMM+1=Current Month */
/* DDDDD+1=Current Day */
/* hhhhh=Current Hour */
/* mmmmmm=Current Minute */
/* sssss=Current second/2 */
/* If you don't know what time it is, just return 0 */
freq=(cp=sys_getenv("cpufrequency"))?atoui(cp):_CpuFrequency;
prescaler=0xffff;
freq>>=1;
prescaler=freq/10000;
/*Setup prescaler, and config */
RESET_PRCR|=IIC_RESET;
iicwait(10);
IIC_CLOCK_DIV=prescaler;
IIC_CONFIG=1;
iicwait(prescaler*2);
dtime=0;
if (avereadb(dtype,dev,0,&uitmp))
{
for(j=0;j<7;j++)
{
avereadb(dtype,dev,j,&uitmp);
cdat[j]=(char)uitmp;
}
if (dtype==13) /*RTC*/
{
dtime|=(((((cdat[6]>>4)&0x0f)*10)+(cdat[6]&0x0f)+2000)-1970)<<( 9+16);
dtime|=(((((cdat[5]>>4)&0x01)*10)+(cdat[5]&0x0f) )-1 )<<( 5+16);
dtime|=(((((cdat[4]>>4)&0x03)*10)+(cdat[4]&0x0f) )-1 )<<( 0+16);
dtime|=(((((cdat[2]>>4)&0x03)*10)+(cdat[2]&0x0f) ) )<<( 0+11);
dtime|=(((((cdat[1]>>4)&0x07)*10)+(cdat[1]&0x0f) ) )<<( 0+ 5);
dtime|=(((((cdat[0]>>4)&0x07)*10)+(cdat[0]&0x0f) ) )>>( 0+ 1);
}
}
return(dtime);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -