matlab_23550/Inu/Src/main/tk_Test.c

287 lines
7.4 KiB
C
Raw Normal View History

2024-12-27 10:50:32 +03:00
#include <281xEvTimersInit.h>
#include <project_setup.h>
#include <PWMTMSHandle.h>
#include "DSP281x_Device.h"
#include "MemoryFunctions.h"
#include "Spartan2E_Adr.h"
#include "x_wdog.h"
2024-12-27 10:50:32 +03:00
void pause_10(unsigned long t)
{
unsigned long i;
for (i = 0; i < t; i++)
{
asm(" NOP");
}
}
void test_impulse(unsigned int impulse_channel,long impulse_time)
{
i_WriteMemory(ADR_PWM_DIRECT,impulse_channel);
pause_10(impulse_time);
i_WriteMemory(ADR_PWM_DIRECT,0xffff);
}
void test_double_impulse(unsigned int impulse_channel_1,unsigned int impulse_channel_2,long impulse_time,long middle_impulse_time)
2024-12-27 10:50:32 +03:00
{
// i_WriteMemory(ADR_PWM_DIRECT,impulse_channel_2);
// pause_10(middle_impulse_time);
i_WriteMemory(ADR_PWM_DIRECT,impulse_channel_1);
pause_10(impulse_time);
i_WriteMemory(ADR_PWM_DIRECT,impulse_channel_2);
pause_10(middle_impulse_time);
i_WriteMemory(ADR_PWM_DIRECT, impulse_channel_1);
pause_10(middle_impulse_time);
2024-12-27 10:50:32 +03:00
i_WriteMemory(ADR_PWM_DIRECT,0xffff);
}
void test_sin_impulse(unsigned int impulse_channel_1,unsigned int impulse_channel_2, unsigned int impulse_channel_3, long impulse_time,long middle_impulse_time)
{
i_WriteMemory(ADR_PWM_DIRECT,impulse_channel_2);
pause_10(middle_impulse_time);
i_WriteMemory(ADR_PWM_DIRECT,impulse_channel_1);
pause_10(impulse_time);
i_WriteMemory(ADR_PWM_DIRECT,impulse_channel_2);
pause_10(middle_impulse_time);
i_WriteMemory(ADR_PWM_DIRECT,impulse_channel_3);
pause_10(impulse_time);
i_WriteMemory(ADR_PWM_DIRECT,0xffff);
}
void test_tk_ak_one_impulse(int tk0, int tk1, int tk2, int tk3, int period, int periodMiddle, int doubleImpulse, int sinImpulse)
2024-12-27 10:50:32 +03:00
{
long p2 = 0, pM = 0;
2024-12-27 10:50:32 +03:00
unsigned int tk0_0 = 0, tk0_1 = 0, tk0_2 = 0, tk0_3 = 0, tk0_4 = 0, tk0_5 = 0, tk0_6 = 0, tk0_7 = 0;
unsigned int tk1_0 = 0, tk1_1 = 0, tk1_2 = 0, tk1_3 = 0, tk1_4 = 0, tk1_5 = 0, tk1_6 = 0, tk1_7 = 0;
unsigned int tk2_0 = 0, tk2_1 = 0, tk2_2 = 0, tk2_3 = 0, tk2_4 = 0, tk2_5 = 0, tk2_6 = 0, tk2_7 = 0;
unsigned int tk3_0 = 0, tk3_1 = 0, tk3_2 = 0, tk3_3 = 0, tk3_4 = 0, tk3_5 = 0, tk3_6 = 0, tk3_7 = 0;
unsigned int break1 = 0, break2 = 0, break3 = 0, break4 = 0,key0 = 0, key1 = 0, key2 = 0, key3 = 0, key4 = 0, key5 = 0, key6 = 0, key7 = 0, key8 = 0,key9 = 0,key10 = 0,key11 = 0;
unsigned int Dkey0 = 0xffff, Dkey1 = 0xffff, Dkey2 = 0xffff;
unsigned int currentPWMMode1, currentPWMMode0, currPWMPeriod;
////<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> //////////
#if (XPWMGEN==1)
i_WriteMemory(ADR_PWM_DRIVE_MODE, 3);
// pause_1000(100000L);
i_WriteMemory(ADR_PWM_DIRECT,0xffff);
i_WriteMemory(ADR_TK_MASK_0, 0);
#endif
stop_eva_timer2();
IER &= ~M_INT9; //stop CAN
////////////////////////////////////
if (period<=1)
period=1;
if (period>=1000)
period=1000;
p2=(period) * 19 / 10;//(period)*12;
2024-12-27 10:50:32 +03:00
if (periodMiddle<=1)
periodMiddle=1;
if (periodMiddle>=1000)
periodMiddle=1000;
pM=(periodMiddle) * 19 / 10;//(periodMiddle)*12;
2024-12-27 10:50:32 +03:00
tk0_0 = (tk0 >> 0) & 0x1;
tk0_1 = (tk0 >> 1) & 0x1;
tk0_2 = (tk0 >> 2) & 0x1;
tk0_3 = (tk0 >> 3) & 0x1;
tk0_4 = (tk0 >> 4) & 0x1;
tk0_5 = (tk0 >> 5) & 0x1;
tk0_6 = (tk0 >> 6) & 0x1;
tk0_7 = (tk0 >> 7) & 0x1;
tk1_0 = (tk1 >> 0) & 0x1;
tk1_1 = (tk1 >> 1) & 0x1;
tk1_2 = (tk1 >> 2) & 0x1;
tk1_3 = (tk1 >> 3) & 0x1;
tk1_4 = (tk1 >> 4) & 0x1;
tk1_5 = (tk1 >> 5) & 0x1;
tk1_6 = (tk1 >> 6) & 0x1;
tk1_7 = (tk1 >> 7) & 0x1;
tk2_0 = (tk2 >> 0) & 0x1;
tk2_1 = (tk2 >> 1) & 0x1;
tk2_2 = (tk2 >> 2) & 0x1;
tk2_3 = (tk2 >> 3) & 0x1;
tk2_4 = (tk2 >> 4) & 0x1;
tk2_5 = (tk2 >> 5) & 0x1;
tk2_6 = (tk2 >> 6) & 0x1;
tk2_7 = (tk2 >> 7) & 0x1;
tk3_0 = (tk3 >> 0) & 0x1;
tk3_1 = (tk3 >> 1) & 0x1;
tk3_2 = (tk3 >> 2) & 0x1;
tk3_3 = (tk3 >> 3) & 0x1;
tk3_4 = (tk3 >> 4) & 0x1;
tk3_5 = (tk3 >> 5) & 0x1;
tk3_6 = (tk3 >> 6) & 0x1;
tk3_7 = (tk3 >> 7) & 0x1;
if(doubleImpulse)
{
if(tk0_0 && tk0_7){
Dkey0 = 0xfff6;
Dkey1 = 0xfff0;
}
else if(tk0_4 && tk0_3){
Dkey0 = 0xfff9;
Dkey1 = 0xfff0;
}
else if(tk1_3 && tk0_0){
Dkey0 = 0xffde;
Dkey1 = 0xffcc;
}
else if(tk1_0 && tk0_3){
Dkey0 = 0xffed;
Dkey1 = 0xffcc;
}
else if(tk0_4 && tk1_3){
Dkey0 = 0xffdb;
Dkey1 = 0xffc3;
}
else if(tk0_7 && tk1_0){
Dkey0 = 0xffe7;
Dkey1 = 0xffc3;
}/////
else if(tk1_4 && tk2_3){
Dkey0 = 0xFDBF;
Dkey1 = 0xFC3F;
}
else if(tk1_7 && tk2_0){
Dkey0 = 0xFE7F;
Dkey1 = 0xFC3F;
}
else if(tk1_4 && tk2_7){
Dkey0 = 0xF7BF;
Dkey1 = 0xF33F;
}
else if(tk1_7 && tk2_4){
Dkey0 = 0xFB7F;
Dkey1 = 0xF33F;
}
else if(tk2_0 && tk2_7){
Dkey0 = 0xF6FF;
Dkey1 = 0xF0FF;
}
else if(tk2_3 && tk2_4){
Dkey0 = 0xF9FF;
Dkey1 = 0xF0FF;
}
}
else if(sinImpulse)
{
if(tk0_0){
Dkey0 = 0xfff6;
Dkey1 = 0xfff0;
Dkey2 = 0xfff9;
}
else if(tk0_7){
Dkey0 = 0xfff9;
Dkey1 = 0xfff0;
Dkey2 = 0xfff6;
}
else if(tk1_0){
Dkey0 = 0xffde;
Dkey1 = 0xffcc;
Dkey2 = 0xffed;
}
else if(tk0_4){
Dkey0 = 0xffed;
Dkey1 = 0xffcc;
Dkey2 = 0xffde;
}
else if(tk1_4){
Dkey0 = 0xffdb;
Dkey1 = 0xffc3;
Dkey2 = 0xffe7;
}
else if(tk1_7){
Dkey0 = 0xffe7;
Dkey1 = 0xffc3;
Dkey2 = 0xffdb;
}
}
else
{
key0 = !(((tk0_0 == 1) && (tk0_1 == 1) && (tk0_2 == 0) && (tk0_3 == 0)) ||
((tk0_0 == 0) && (tk0_1 == 1) && (tk0_2 == 1) && (tk0_3 == 0)));
key1 = !(((tk0_0 == 0) && (tk0_1 == 1) && (tk0_2 == 1) && (tk0_3 == 0)) ||
((tk0_0 == 0) && (tk0_1 == 0) && (tk0_2 == 1) && (tk0_3 == 1)));
key2 = !(((tk0_4 == 1) && (tk0_5 == 1) && (tk0_6 == 0) && (tk0_7 == 0)) ||
((tk0_4 == 0) && (tk0_5 == 1) && (tk0_6 == 1) && (tk0_7 == 0)));
key3 = !(((tk0_4 == 0) && (tk0_5 == 1) && (tk0_6 == 1) && (tk0_7 == 0)) ||
((tk0_4 == 0) && (tk0_5 == 0) && (tk0_6 == 1) && (tk0_7 == 1)));
key4 = !(((tk1_0 == 1) && (tk1_1 == 1) && (tk1_2 == 0) && (tk1_3 == 0)) ||
((tk1_0 == 0) && (tk1_1 == 1) && (tk1_2 == 1) && (tk1_3 == 0)));
key5 = !(((tk1_0 == 0) && (tk1_1 == 1) && (tk1_2 == 1) && (tk1_3 == 0)) ||
((tk1_0 == 0) && (tk1_1 == 0) && (tk1_2 == 1) && (tk1_3 == 1)));
key6 = !(((tk1_4 == 1) && (tk1_5 == 1) && (tk1_6 == 0) && (tk1_7 == 0)) ||
((tk1_4 == 0) && (tk1_5 == 1) && (tk1_6 == 1) && (tk1_7 == 0)));
key7 = !(((tk1_4 == 0) && (tk1_5 == 1) && (tk1_6 == 1) && (tk1_7 == 0)) ||
((tk1_4 == 0) && (tk1_5 == 0) && (tk1_6 == 1) && (tk1_7 == 1)));
key8 = !(((tk2_0 == 1) && (tk2_1 == 1) && (tk2_2 == 0) && (tk2_3 == 0)) ||
((tk2_0 == 0) && (tk2_1 == 1) && (tk2_2 == 1) && (tk2_3 == 0)));
key9 =!(((tk2_0 == 0) && (tk2_1 == 1) && (tk2_2 == 1) && (tk2_3 == 0)) ||
((tk2_0 == 0) && (tk2_1 == 0) && (tk2_2 == 1) && (tk2_3 == 1)));
key10 = !(((tk2_4 == 1) && (tk2_5 == 1) && (tk2_6 == 0) && (tk2_7 == 0)) ||
((tk2_4 == 0) && (tk2_5 == 1) && (tk2_6 == 1) && (tk2_7 == 0)));
key11 = !(((tk2_4 == 0) && (tk2_5 == 1) && (tk2_6 == 1) && (tk2_7 == 0)) ||
((tk2_4 == 0) && (tk2_5 == 0) && (tk2_6 == 1) && (tk2_7 == 1)));
break1 = !tk3_1;
break2 = !tk3_2;
break3 = !tk3_3;
break4 = !tk3_4;
Dkey0 &= ((break4 << 15)|(break3 << 14)|(break2 << 13)|(break1 << 12)| (key11 << 11) | (key10 << 10) | (key9 << 9) | (key8 << 8)| (key7 << 7)| (key6 << 6)| (key5 << 5)| (key4 << 4)| (key3 << 3)| (key2 << 2)| (key1 << 1)| (key0 << 0));
}
if(doubleImpulse)
test_double_impulse(Dkey0, Dkey1, p2, pM);
2024-12-27 10:50:32 +03:00
else if(sinImpulse)
test_sin_impulse(Dkey0, Dkey1, Dkey2, p2, pM);
else
test_impulse(Dkey0,p2);
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
start_eva_timer2();
IER |= M_INT9; //start CAN
#if (XPWMGEN==1)
i_WriteMemory(ADR_PWM_DIRECT,0xffff);
i_WriteMemory(ADR_PWM_DRIVE_MODE, 0);
#endif
return;
}