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

📄 bpxzold.c

📁 TI TMS320F206
💻 C
字号:
/****************************************************************/
/*                                                              */
/*  Copyright (c) 2000, TI Technology Inc                       */
/*  Proprietary and Confidential                                */
/*								*/
/*  SCCSID @(#)TMS320F206.c  2.0				*/
/*								*/
/*  Author :             jacky-cheung				*/
/*  Filename :           bpxz.C  				*/
/*  osc      :           16MHz					*/
/*  Release :                            			*/           																
/*  Revision History :   2004-06-04  14:00			*/
/*    								*/
/****************************************************************/
#include <c:\TDS-EMU2XX\c2000\cgtools\include\stdio.h>
#include <c:\TDS-EMU2XX\c2000\cgtools\include\math.h> 
#include <c:\TDS-EMU2XX\c2000\cgtools\include\stdlib.h> 
#include "f206.h"

#define uint unsigned int 
#define uchar unsigned char
#define	   N	64  

/*-------------------------------------------------------------------*/
interrupt void  F_protect();         //失谐保护中断
interrupt void  G_earth();           //接地保护中断
interrupt void 	time_int();          //定时器中断
/*-------------------------------------------------------------------*/

void InitSystem(void);
void Sample(int);
void v_adjust(void);
void f_adjust(void);
void delay(unsigned int t);
void hex_change(unsigned int);
float RMS1();
float RMS2();

unsigned int k,f_buf,ff_buf,run_mode,f_protect;
float	pi[N],pu[N];
int	U11[N+5],U12[N+5];

int	nTbSysTime;

typedef 	volatile unsigned int pointer;
volatile unsigned int *reg_pointer;
	

extern unsigned int sa[5];
const int aa[3]={1,2,3 };
  
/**************************MAIN PROGRAM***************************/
  main()
 {   
       	float  wu=0.0, wi=0.0;
	InitSystem();
	delay(30000);
	Re_sa4828();
     	TbTxInit();
     	
      	while(1)
	{       
		Tbtxup();       /*下位数据上传*/
     	        Tbtxdw();       /*上位数据下传*/
     	        
     	        if((kaiji==0x55)&(zidong==0x55))        /*已开机且为自动*/
     	        {
     	        ztest();                                /*下位状态检测*/
     	        zdong();                                /*自动*/
     	        
     	        
     	        
     	        
     	        }
     	
     	        else if9(kaiji==0x55)&(zidong==0x99))   /*已开机且为手动*/
     	        {
     	        ztest();	
     	        sdong();	                        /*手动*/
     	        	
     	        
     	        
     	        
     	        } 
     	        
     	        else
     	        {;}
     	        
      		Sample(1);
      		wi=RMS1();
		wu=RMS2();

		if(((reg_iosr)&0x000f)==0x0007)  
		{
			f_protect=0x99;               /**********IPM protect*********/
		}
		if(f_protect==0x55)
		{
			v_adjust();
		}
      	        }
     	
 }      	
                    
/******************************************************************/

/*===========================Initialization DSP============================*/
void InitSystem(void)
{
	asm(" setc intm ");
	asm(" clrc CNF");
	reg_wsgr=0xffff;       
        reg_pointer=(pointer *)reg_ifr;
	*reg_pointer=0xffff;  
	reg_pointer=(pointer *)reg_greg;
	*reg_pointer=0x00e0;
	
	TbTxInit();
	reg_tcr=0x0c27; 
    	reg_prd=1999;

        reg_pointer=(pointer *)reg_imr;
	*reg_pointer=0x001f;  /* *reg_pointer=0x0003; */
        reg_icr=0x001d;    
        
        reg_aspcr=0x0002;  
        reg_iosr=0xffff;   
        
        ff_buf=2;
        run_mode=0x55;
        f_protect=0x55;
        sa[1]=0x27; 
      	sa[0]=0x53;
      	sa[2]=51; 
      	
      	nTbSysTime=0x5555;
      	
      	asm(" clrc intm ");
        
}

interrupt void  F_protect()
{
	asm(" setc intm ");
	Re_sa4828();
	f_protect=0xaa; /*FLASH protect*/
	asm(" clrc intm ");
}

interrupt void  G_earth()
{
	asm(" setc intm ");
	reg_pointer=(pointer *)reg_ifr;
        *reg_pointer=0xffff;  
	reg_pointer=(pointer *)reg_imr;
	*reg_pointer=0x001d;  /**reg_pointer=0x0001;*/
	f_protect=0x55; /*EARTH OK*/  
        asm(" clrc intm ");
}

interrupt void time_int()
{
	/*reg_tcr=0x0c27;
	reg_prd=199;*/
/*	adc=0x00;*/
	nTbSysTime++;
}                     

/*=================================================================*/
void Sample(int channel)
{  	
	int i,j;
	max125=channel;
	for(i=0; i<N+5; i++)
       	{   
       		while(((reg_iosr)&0x0004)==0x0004)
       	        {;}
                U11[i]=(max125&0x3fff);    
                U12[i]=(max125&0x3fff);
                
        }
        
   	for(i=0; i<N+5; i++)                  
	{
		U11[i]=(U11[i]<<2);
		U12[i]=(U12[i]<<2);
	}
        for(i=0; i<N; i++)
        {
        	pu[i]=(float)U11[i+2]*5.00/32768.0; 
        	pi[i]=(float)U12[i+2]*5.00/32768.0;
        	 
        }                  
}
 
/*========================================================================*/
float RMS2() 
{ 
	int i,j=0;
  	float c12=0.0;
  	for(i=0;i<N;i++)
	{
	c12=c12+pu[i]*pu[i];
        }
    	c12=sqrt(c12/N);
    	/*c12=sqrt(c12/N)*9.334335655;/*2.832861*3.010526;*/
    	return(c12);  
}

float RMS1() 
{ 
	int i;
  	float c11=0.0;
  	for(i=0;i<N;i++)
	{
	c11=c11+pi[i]*pi[i];
        }
    	c11=sqrt(c11/N)*6.944444;/*6.8055555;*/
    	return(c11);  
}

/*========================================================================*/
void v_adjust(void)
{
	if(run_mode==0xaa)
	{;}
	if(run_mode==0x55)
	{
		if(((reg_iosr)&0x1)==0x0)
		{
			if(sa[2]<=254)
			{
				sa[2]=sa[2]+1;
			}
		}
		asm(" BCND bbc,BIO  ");
		asm(" nop ");
		asm(" b aac ");			
                asm("bbc: ");
		if(sa[2]>=1)
		{
		sa[2]=sa[2]-1;
		}
               asm("aac: ");	
               asm(" nop ");				
	}
	
	Cont_sa4828(sa);	
	
}

/*========================================================================*/
void f_adjust(void)
{
	unsigned int j;
	
	k=sa[1];
	k=k*0x100;
	k=k+sa[0];
	
	if(run_mode==0xaa)
	{
		{k=k+20;}
	}
		
	if(run_mode==0x55)
	{
		if(((reg_iosr)&0x1)==0x0)
		{
			k=k+ff_buf;
		}
		asm(" BCND execution,BIO  ");
		asm(" nop ");
		asm(" b inexecution ");
asm("execution: ");		
		k=k-ff_buf;
asm("inexecution: ");
		asm(" nop ");		

	}

	hex_change(k);

	if(f_buf<30.00) 
	{
		sa[1]=23; sa[0]=159;
	}
	if(f_buf>300.04483)
	{
		sa[1]=235; sa[0]=247;
	}
			
	Cont_sa4828(sa);
}

/*------------------------------------------------------------------------*/
void hex_change(unsigned int t)
{
	unsigned int i;
	
	i=t;
	i=i&0xff;
	sa[0]=i;
	i=t;
	i=i&0xff00;
	i=i/0x100;
	sa[1]=i;
	f_buf=0.00496705373*(float)t; /*FREQUENCY*/  
	
}	



void delay(unsigned int t)

  { 
    unsigned int a;
    for(a=0;a<=t;a++)
    {;}
  } 

/*起始频率,输出电压,保护电压,保护电流,实验时间*/

void zdong(uint a,uint b,uint c,uint d,uint e)    
{
}


/*起始频率,输出电压,保护电压,保护电流,实验时间*/

void sdong(uint a,uint b,uint c,uint d,uint e)     
{
}

⌨️ 快捷键说明

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