📄 bpxzold.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 + -