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

📄 evm3d.c

📁 ADAM2 sources (modified by Oleg)
💻 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 + -