📄 bpxzn.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 sx_protect(); //失谐保护中断
interrupt void G_earth(); //接地保护中断
interrupt void time_int(); //定时器中断
/*-------------------------------------------------------------------*/
uint k,f_buf,ff_buf,run_mode,f_protect,kaiji,vo,fall,autoflag,fstart,autovsav;
float pi[N],pu[N],wu,wi;
int U11[N+5],U12[N+5];
uint sx =0x55; /*失谐标志*/
uint earth=0x55; /*接地标志*/
int nTbSysTime;
typedef
volatile unsigned int pointer;
volatile unsigned int *reg_pointer;
unsigned int sa[3]={0xa0,0x17,0x00};
const int aa[3]={1,2,3 };
/******************************************************************/
/*===========================Initialization DSP============================*/
void InitSystem(void)
{
asm(" setc intm ");
asm(" clrc CNF");
asm(" ldp #0h");
reg_wsgr=0xffff;
reg_pointer=(pointer *)reg_ifr;
*reg_pointer=0xffff;
reg_pointer=(pointer *)reg_greg;
*reg_pointer=0x0000;
TbTxInit();
reg_tcr=0x0c27;
reg_prd=1999;
reg_pointer=(pointer *)reg_imr;
*reg_pointer=0x001f;
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 sx_protect()
{
asm(" setc intm ");
Re_sa4828();
Init_sa4828();
sx=0xaa; /*FLASH protect*/
asm(" clrc intm ");
}
interrupt void G_earth()
{
asm(" setc intm ");
Re_sa4828();
Init_sa4828();
earth=0xaa; /*EARTH error*/
reg_icr=0x001d;
asm(" clrc intm ");
}
interrupt void time_int()
{
asm(" setc intm ");
/*reg_tcr=0x0c27;
reg_prd=199;*/
/* adc=0x00;*/
nTbSysTime++;
asm(" clrc intm ");
}
/*=================================================================*/
void Sample(void)
{
int i,j;
max125=0x01;
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 delay(unsigned int t)
{
unsigned int a;
for(a=0;a<=t;a++)
{;}
}
void vauto() /*自动调压*/
{ if(autoflag==0x00aa)
{
if(wu<vo*0.99)
{
if(sa[2]<=254)
{
sa[2]=sa[2]+1;
}
else
{;}
}
else if(wu>vo*1.01)
{
if(sa[2]>=1)
{
sa[2]=sa[2]-1;
}
else
{;}
}
}
else
{;}
}
void autof() /*自动调频*/
{
if(autoflag==0x55)
{
if(autovsav<=wu)
{
autovsav=wu;
if(fall<=60400)
{
fall=fall+20;
sa[0]=fall&0x00ff;
sa[1]=(fall>>8)&0x00ff;
}
else
{;}
}
else
{
autoflag=0xaa;
}
}
else
{;}
}
void sdtf() /*---------------手动调频-----------------*/
{
if(((reg_iosr)&0x0001)==0x0000) /*IO0---+;BIO----_*/
{
if(fstart<=60400)
{
fstart=fstart+20;
}
else
{;}
}
asm(" BCND execution,BIO ");
asm(" nop ");
asm(" b inexecution ");
asm("execution: ");
if(fstart>=6040)
{
fstart=fstart-20;
}
else
{;}
asm("inexecution: ");
asm(" nop ");
}
void sdty() /*----------------手动调频-----------------*/
{
if(((reg_iosr)&0x1)==0x0)
{
if(sa[2]<=254)
{
sa[2]=sa[2]+1;
}
else
{;}
}
asm(" BCND bbc,BIO ");
asm(" nop ");
asm(" b aac ");
asm("bbc: ");
if(sa[2]>=1)
{
sa[2]=sa[2]-1;
}
asm("aac: ");
asm(" nop ");
}
/*自动----输出电压,保护电压,保护电流,实验时间*/
void zdong()
{
autof();
vauto();
Cont_sa4828(sa);
}
/*手动----起始频率,输出电压,保护电压,保护电流,实验时间*/
void sdong()
{
sdtf();
sdty();
Cont_sa4828(sa);
}
/**************************MAIN PROGRAM***************************/
main()
{
float wu=0.0, wi=0.0;
uint autoflag=0x55; /*自动调频结束标志*/
uint autovsav=0; /*调频电压极值*/
uint fall=0x17a0; /*16位频率值*/
InitSystem();
delay(30000);
Re_sa4828();
Init_sa4828();
ztest(); /*下位状态检测*/
Tbtxup(); /*下位数据上传*/
while(1)
{
sample();
wu=rms1();
wi=rms2();
ztest(); /*下位状态检测*/
Tbtxup(); /*下位数据上传*/
Tbtxdw(); /*上位数据下传*/
if((kaiji==0x55)&&(run_mode==0x55)) /*已开机且为自动*/
{
if((sx==0xaa)||(earth==0xaa)||((reg_iosr&0x0008)==0x0000))
{
Re_sa4828();
Init_sa4828();
sx=0x55;earth=0x55;
}
else
{
zdong(); /*自动*/
}
}
else if((kaiji==0x55)&&(run_mode==0x99)) /*已开机且为手动*/
{
if((sx==0xaa)||(earth==0xaa)||((reg_iosr&0x0008)==0x0000))
{
Re_sa4828();
Init_sa4828();
sx=0x55;earth=0x55;
}
else
{
sdong();
} /*手动*/
}
else
{
Re_sa4828();
Init_sa4828();
}
}
}
/*========================================================================*
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*
} */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -