From f9017a881dc3810688db13008ef2d543b13d2423 Mon Sep 17 00:00:00 2001 From: seklyuts Date: Thu, 30 May 2024 08:35:53 +0300 Subject: [PATCH] =?UTF-8?q?=D0=B7=D0=B0=D0=B1=D1=8B=D0=BB=20=D0=B4=D0=BE?= =?UTF-8?q?=D0=B1=D0=B0=D0=B2=D0=B8=D1=82=D1=8C=20=D0=BD=D0=BE=D0=B2=D1=8B?= =?UTF-8?q?=D0=B5=20=D1=84=D0=B0=D0=B9=D0=BB=D1=8B=20=D0=BE=D0=B1=D1=80?= =?UTF-8?q?=D0=B0=D0=B1=D0=BE=D1=82=D0=BA=D0=B8=20=D0=B4=D0=B0=D1=82=D1=87?= =?UTF-8?q?=D0=B8=D0=BA=D0=BE=D0=B2=20=D1=84=D0=BE=D0=BB=D1=82=D0=B0=20?= =?UTF-8?q?=D0=B8=20=D1=82=D0=B5=D0=BC=D0=BF=D0=B5=D1=80=D0=B0=D1=82=D1=83?= =?UTF-8?q?=D1=80=D1=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Projects/epwm_test_biss_c_cpu2/Start_rfm.pmp | Bin 39013 -> 40030 bytes .../src/Peripherals/eqep.c | 51 +++++++++++ .../src/Peripherals/eqep.h | 16 ++++ Projects/epwm_test_biss_c_cpu2/src/fault.c | 84 ++++++++++++++++++ Projects/epwm_test_biss_c_cpu2/src/fault.h | 19 ++++ .../epwm_test_biss_c_cpu2/src/temperature.c | 57 ++++++++++++ .../epwm_test_biss_c_cpu2/src/temperature.h | 14 +++ 7 files changed, 241 insertions(+) create mode 100644 Projects/epwm_test_biss_c_cpu2/src/Peripherals/eqep.c create mode 100644 Projects/epwm_test_biss_c_cpu2/src/Peripherals/eqep.h create mode 100644 Projects/epwm_test_biss_c_cpu2/src/fault.c create mode 100644 Projects/epwm_test_biss_c_cpu2/src/fault.h create mode 100644 Projects/epwm_test_biss_c_cpu2/src/temperature.c create mode 100644 Projects/epwm_test_biss_c_cpu2/src/temperature.h diff --git a/Projects/epwm_test_biss_c_cpu2/Start_rfm.pmp b/Projects/epwm_test_biss_c_cpu2/Start_rfm.pmp index 0426344b46a2d41d38ac9580b8504659d5160ad7..e8b1dfb86d14e46ad4eae41148a9177ccba0a188 100644 GIT binary patch delta 3017 zcmbuBT})I*6vt=oF1yHQQK3)^RI#y2bt!5|X~iO!uQeddDpb>m05*13%o&R(-JhFBRP&oXuAFeWhOo3 z{W@Jp&f)_))u&|f!#XWbP3K1hUDF<0oF6dlw9`A^Q+O3kuXoXv1_z~7o}eGxiFCgrgYTLny~?X8*sxjZwLn$e624mu zAMqOT{VgRmX7E};_bJyEM^73b&57gVrX0j^k^K8|EZP7^i%yiq_(;! zp(Tg6o59hOmK?7U__mW%}U z^eJP>tgI%~?GF2UxAg?Q2Q~V;qiO9Ol{3Z;i;w)ZMhZrSg2Z-E?O?9$wyM!YXK}t| zCzP?bZVH-b4sv#FO24NvmMZkmGm|peJ@N$dlEsY7vDfbn2SY5E)UKk`2{y*Y*`%Hx2L()`&OkPGbuY8eFus@m7%rje-gVk9-K!MatU9A5^`0?cGXFGRJ7G8zd4WMJ7ouDGn7L%gv zZ4=o?pmvZSbO2NiDg<2tb%5Rim4UpV5}ovXcp!WO70B# zJXY<9|8TvTkIv&mipUSfYfgyLk$St^({7Z`-BS~0sz!`VEh1IfY&XJa2DO0dL00Lk zfDH8#Wwj9Q0@Z-5;^>B~4>VuFJX;*HHnQ=?9#D@?jZ)nO;e5p*u2I#v>aCK%rN&M| zn*^#e(vm3~fvt3VndmiP)*tIgvud68+wfOPtyLCs^R3ZBMPd^ZnGyAa!iLWk(x-i! zd(R$bXCv$qyUa$#?3~T2&04{^J4&f2}HU7`&*IV%gw3+YZ zzKO?J*iwmYQBC|d&II#3!Y5wr~C1f_t|K~`N@hx{tE h*4>k!%U+hXk`J|Y-o-Vf8WmzU_Kylw2mSe3?>}4Xqf-C? delta 2663 zcmb7_TTEO<7{_PMUV!Bmpdh#|pxD%kuuV&CtV*Sb?Xt8&xrG9~!E)K<)^)9fQug2l zZLJjZnY4nmsS-_mD9~dXO_~_0@xg~am>9Rl7-Q0x#us0FY@Io~=RcTiQaQ;v=QsbE zGv7Be-}jy0zt--qXf_X=~rtve0rk5_{xQt$Brh~sGq|d1^ z<7XZ*>7&ddI+^|jwPY3XQ>L;hJD;Bxv}D}QuHMNH)3&m$2#~Ufcw^|S9m>*w(gYu#$baZ zjr&FO4sQ_8?y4QYZogeRX6vK~86gXV0Y*SrlvDST!##$@skCy#n zC%ok9D&|Kl=jdKnv33*#488kLI}eN1n!84Meb@OC{m@q@o*Di9;u-0$7te3|easxG1cvtx zjrN3=$rbGIT-P~cY+T&(ty-FF5x-b&ThW*4T5xx{>JwdwkzWc*_FZ16D*vX=ShnbY zgjrO`Zc-(cWr`V@vn|jQ84WWxoe%9wVJwxc=xg*-s5%h0b5(pPFJ(1}9n<&iVw6qX z4mJf#XFyTVB*-84L#%9#7KZAg%Erblrmzc`a}ZPy`Vd5*F_6z9sv-|f4(IVTV{Z5Z z%@)(wjMA~$IIM=}G?!4Aqh_RkC_rNq)yCP^8?+Ru*;;#PbYhR;9&d<`4o=+A63ZdE z7ICS?J!}Krti*DO9R-zvPJ^BTRe{b~6lEP2vTo3mARY7s=pd*Sr1o(Ow06)D(Bq(4 zlWJwq%|Lt)bRLxC5LhXCClDUXv^?dv$MpNmxIeY1Y2v*&eb?GynKbhH|2tg5-iDPI zK)XP_pf^FeAnbLN?SmKq9S7|Oy#(3=>H}>9RfD#JYCz9{j+qpaJ6s9zMNl^A8Bi^# z2UG`o9&{Px1)W%T5;-#moosqD7lm8qz-Kd)nlq-O-E+1QvCD&r`Ac$ zo9DEVlk%`b@Iqxp3$#wq0O(y15+J%R13c({6{O-`)en^cT^Kh6N|p<5^s20AGPQPj zQW@xO1T}*WfJQ)~KRnuipc3u{d( zJ>)5<*2Bt?P0VSzF%F8vjk~3B`(9sjGqbaKw!l7Ni(+=pVtTVNL^rffWoTn&?P4m+ z>>_9$v=Db7&2*qGFcP8cU`5iOqpS}}7HR%eWBRi3*TrwF0R2(=D6Y8Ex#FuNAO7cW zS18tPxtR`n8k7aP0(umLq7r2vLsS7;4o!tt3N#le4Wwdh7FrHS)rCB0`6g|a0lF39 Tvmh0MiE>P(Z#n7jh2ehzN0C2z diff --git a/Projects/epwm_test_biss_c_cpu2/src/Peripherals/eqep.c b/Projects/epwm_test_biss_c_cpu2/src/Peripherals/eqep.c new file mode 100644 index 0000000..f9c2b04 --- /dev/null +++ b/Projects/epwm_test_biss_c_cpu2/src/Peripherals/eqep.c @@ -0,0 +1,51 @@ +/* + * eqep.c + * + * Created on: 28 мая 2024 г. + * Author: seklyuts + */ +#include "f28x_project.h" +#include "temperature.h" + +uint16_t eqepTic[3] = {0,0,0}; +uint16_t eqip_Max = 160; //16mS +uint16_t eqepTemperature = 0; + + +uint16_t eqep_read_counter(void) +{ + return EQep1Regs.QPOSCNT; +} + + +void eqep_reset_counter(void) +{ + EQep1Regs.QPOSCNT = 0; +} + + +void eqep_init(void) +{ + CpuSysRegs.PCLKCR4.bit.EQEP1 = 1; + EQep1Regs.QEPCTL.bit.FREE_SOFT = 1; //Position counter continues to count until the rollover + EQep1Regs.QDECCTL.bit.QSRC = 2; + EQep1Regs.QPOSMAX = 0xFFFFFFFF; + EQep1Regs.QEPCTL.bit.QPEN = 1;//QEP unit timer enable +} + +void eqepTest(void) +{ + eqepTic[0] = EQep1Regs.QPOSCNT; + if(eqepTic[0] != 0) + { + if(eqepTic[1] == eqepTic[0]) eqepTic[2]++; + else eqepTic[2] = 0; + eqepTic[1] = eqepTic[0]; + + if(eqepTic[2] > eqip_Max) + { + eqepTemperature = (((eqepTic[0]>>1)-1)>>4) - 50; + eqepTic[1] = EQep1Regs.QPOSCNT = 0; + } + } +} diff --git a/Projects/epwm_test_biss_c_cpu2/src/Peripherals/eqep.h b/Projects/epwm_test_biss_c_cpu2/src/Peripherals/eqep.h new file mode 100644 index 0000000..a16e7f5 --- /dev/null +++ b/Projects/epwm_test_biss_c_cpu2/src/Peripherals/eqep.h @@ -0,0 +1,16 @@ +/* + * eqep.h + * + * Created on: 28 мая 2024 г. + * Author: seklyuts + */ + +#ifndef SRC_PERIPHERALS_EQEP_H_ +#define SRC_PERIPHERALS_EQEP_H_ + +uint16_t eqep_read_counter(void); +void eqep_reset_counter(void); +void eqep_init(void); +void eqepTest(void); + +#endif /* SRC_PERIPHERALS_EQEP_H_ */ diff --git a/Projects/epwm_test_biss_c_cpu2/src/fault.c b/Projects/epwm_test_biss_c_cpu2/src/fault.c new file mode 100644 index 0000000..78d2a89 --- /dev/null +++ b/Projects/epwm_test_biss_c_cpu2/src/fault.c @@ -0,0 +1,84 @@ +/* + * fault.c + * + * Created on: 27 мая 2024 г. + * Author: seklyuts + */ +#include "f28x_project.h" +#include "i2c_init.h" +#include "fault.h" +#include "vector.h" +#include "pwm_init.h" + + + +uint16_t Fault1, Fault2, faultCounter = 0, fault_read = 0; + +__interrupt void fault_isr(void) +{ + PieCtrlRegs.PIEACK.all = PIEACK_GROUP1; + + faultCounter++; + fault_read = 1; + PWM_ABC_StopAllClose(); + vectorFault(); + vectorResCurrLoop(); +} + +uint16_t fault_read_check(void) +{ + return fault_read; +} + +void fault_read_clr(void) +{ + fault_read = 0; +} + +void fault_read_ports(void) +{ + uint16_t Fault_Bytes; + I2CWrite(I2C_FAULT_SLAVE_ADDRESS, 0, 0, false, &Fault_Bytes); + I2CRead(I2C_FAULT_SLAVE_ADDRESS, 1, true, &Fault_Bytes); + Fault1 = Fault_Bytes; + I2CWrite(I2C_FAULT_SLAVE_ADDRESS, 1, 0, false, &Fault_Bytes); + I2CRead(I2C_FAULT_SLAVE_ADDRESS, 1, true, &Fault_Bytes); + Fault2 = Fault_Bytes; +} + + +uint16_t Err1, Err2; + +void faultInit(void) +{ + uint16_t Fault_Bytes; + uint16_t Conf = 0xFF; + Err1 = I2CWrite(I2C_FAULT_SLAVE_ADDRESS, 6, 1, true, &Conf); + + Err2 = I2CWrite(I2C_FAULT_SLAVE_ADDRESS, 7, 1, true, &Conf); + + + I2CWrite(I2C_FAULT_SLAVE_ADDRESS, 0, 0, false, &Fault_Bytes); + I2CRead(I2C_FAULT_SLAVE_ADDRESS, 1, true, &Fault_Bytes); + Fault1 = Fault_Bytes; + I2CWrite(I2C_FAULT_SLAVE_ADDRESS, 1, 0, false, &Fault_Bytes); + I2CRead(I2C_FAULT_SLAVE_ADDRESS, 1, true, &Fault_Bytes); + Fault2 = Fault_Bytes; + + EALLOW; // This is needed to write to EALLOW protected registers + PieVectTable.XINT1_INT = &fault_isr; + + IER |= M_INT1; + PieCtrlRegs.PIEIER1.bit.INTx4 = 1; + PieCtrlRegs.PIEACK.all = PIEACK_GROUP1; + + EDIS; + + + XintRegs.XINT1CR.bit.POLARITY = 0; + XintRegs.XINT1CR.bit.ENABLE = 1; + +} + + + diff --git a/Projects/epwm_test_biss_c_cpu2/src/fault.h b/Projects/epwm_test_biss_c_cpu2/src/fault.h new file mode 100644 index 0000000..e0e0e28 --- /dev/null +++ b/Projects/epwm_test_biss_c_cpu2/src/fault.h @@ -0,0 +1,19 @@ +/* + * fault.h + * + * Created on: 27 мая 2024 г. + * Author: seklyuts + */ + +#ifndef SRC_FAULT_H_ +#define SRC_FAULT_H_ + +#define I2C_FAULT_SLAVE_ADDRESS 0x23U +#define I2C_OWN_ADDRESS 0x30U + +void faultInit(void); +void fault_read_ports(void); +void fault_read_clr(void); +uint16_t fault_read_check(void); + +#endif /* SRC_FAULT_H_ */ diff --git a/Projects/epwm_test_biss_c_cpu2/src/temperature.c b/Projects/epwm_test_biss_c_cpu2/src/temperature.c new file mode 100644 index 0000000..b2fd984 --- /dev/null +++ b/Projects/epwm_test_biss_c_cpu2/src/temperature.c @@ -0,0 +1,57 @@ +/* + * temperature.c + * + * Created on: 28 мая 2024 г. + * Author: seklyuts + */ + +#include "f28x_project.h" + + +uint16_t TemperatureImpCount = 0; +uint16_t TemperaturePause = 0; +uint16_t TemperatureLine = 0; +uint16_t TemperatureMaxPause = 0; //16ms +uint16_t Temperature = 0; +uint16_t TemperatureInitDone = 0; + + + +__interrupt void temperature_isr(void) +{ + TemperatureImpCount++; +} + + + +uint16_t temperature_calc(uint16_t Imp) +{ + + return (Imp-1)/16 - 50; + +} + + +void temperatureTest(void) +{ + + + +} + +void temperatureInit(void) +{ + EALLOW; // This is needed to write to EALLOW protected registers + PieVectTable.XINT2_INT = &temperature_isr; + + IER |= M_INT1; + PieCtrlRegs.PIEIER1.bit.INTx5 = 1; + PieCtrlRegs.PIEACK.all = PIEACK_GROUP1; + + EDIS; + + XintRegs.XINT2CR.bit.POLARITY = 0; + XintRegs.XINT2CR.bit.ENABLE = 1; +} + + diff --git a/Projects/epwm_test_biss_c_cpu2/src/temperature.h b/Projects/epwm_test_biss_c_cpu2/src/temperature.h new file mode 100644 index 0000000..f1dfc4c --- /dev/null +++ b/Projects/epwm_test_biss_c_cpu2/src/temperature.h @@ -0,0 +1,14 @@ +/* + * temperature.h + * + * Created on: 28 мая 2024 г. + * Author: seklyuts + */ + +#ifndef SRC_TEMPERATURE_H_ +#define SRC_TEMPERATURE_H_ + +void temperatureTest(void); +uint16_t temperature_calc(uint16_t Imp); + +#endif /* SRC_TEMPERATURE_H_ */