117 lines
1.9 KiB
C
117 lines
1.9 KiB
C
#include "DSP2833x_Device.h" // DSP281x Headerfile Include File
|
|
#include "DSP2833x_SWPrioritizedIsrLevels.h"
|
|
#include "filter_bat2.h"
|
|
#include "measure.h"
|
|
|
|
#include "RS485.h"
|
|
#include "message.h"
|
|
#include "DAC.h"
|
|
#include "package.h"
|
|
#include "tools.h"
|
|
|
|
#include "peripher.h"
|
|
|
|
#define dCLK_1() GpioDataRegs.GPBSET.bit.GPIO63=1
|
|
#define dCLK_0() GpioDataRegs.GPBCLEAR.bit.GPIO63=1
|
|
#define dCS_1() GpioDataRegs.GPBSET.bit.GPIO59=1
|
|
#define dCS_0() GpioDataRegs.GPBCLEAR.bit.GPIO59=1
|
|
|
|
void dOUT(int x)
|
|
{
|
|
if(x) GpioDataRegs.GPBSET.bit.GPIO60=1;
|
|
else GpioDataRegs.GPBCLEAR.bit.GPIO60=1;
|
|
}
|
|
|
|
void wast()
|
|
{
|
|
int i;
|
|
|
|
for(i=0;i<25;i++);
|
|
}
|
|
|
|
void dSEND(unsigned int word)
|
|
{
|
|
int i;
|
|
|
|
dCS_0(); DSP28x_usDelay(1L); //4
|
|
|
|
for(i=0;i<16;i++)
|
|
{
|
|
dCLK_1(); DSP28x_usDelay(1L); //8
|
|
dOUT((word & 0x8000)?1:0); word = word<<1; DSP28x_usDelay(1L); //10;
|
|
dCLK_0(); DSP28x_usDelay(1L); //30
|
|
|
|
}
|
|
dCS_1(); //DSP28x_usDelay(1L); //4
|
|
}
|
|
|
|
|
|
/*
|
|
void dSEND_A(unsigned int word)
|
|
{
|
|
dSEND(0x9001);
|
|
|
|
word = word & 0xFFF;
|
|
word |= 0x8000;
|
|
dSEND(word);
|
|
}
|
|
|
|
void dSEND_B(unsigned int word)
|
|
{
|
|
dSEND(0x9001);
|
|
|
|
word = word & 0xFFF;
|
|
dSEND(word);
|
|
}
|
|
*/
|
|
|
|
void Init_DAC(void)
|
|
{
|
|
unsigned int word;
|
|
|
|
// word = 0x9001;
|
|
word = 0x9002;
|
|
// word = 0xD002;
|
|
dSEND(0x9002);
|
|
// word = 0x18FF;
|
|
// dSEND(word);
|
|
|
|
}
|
|
|
|
void Anal_output(long vrot, long maxx)
|
|
{
|
|
long out;
|
|
//static int x;
|
|
out = DAC_min() + vrot * DAC_max() / maxx - vrot * DAC_min() / maxx ;
|
|
//x=!x;
|
|
|
|
if(cCalibrDac) out=DAC_cal();
|
|
|
|
out = out & 0xFFF;
|
|
|
|
// out = 0xFFF;
|
|
// out |= 0x8000;
|
|
|
|
// out |= 0x1000;
|
|
// dSEND(out);
|
|
|
|
// out = 0xFFF;
|
|
// dSEND(out|0x5000);
|
|
|
|
// out |= 0x8000;
|
|
// dSEND(0x9002);
|
|
|
|
//if(x) dSEND(out|0xC000);
|
|
//else dSEND(out|0x4000);
|
|
|
|
// if(Mode==adr_LOA1)//ýòî äëÿ 163çàêàç
|
|
// dSEND(out|0x4000);
|
|
// else
|
|
dSEND(out|0x8000);
|
|
modbus[125] = out;
|
|
|
|
// dSEND(out|0xC000);
|
|
|
|
}
|
|
|