Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
main.cpp
00001 #include "mbed.h" 00002 #include "PwmIn.h" 00003 00004 //FTDI (TX, RX, BAUDRATE) 00005 Serial pc(PC_12, PD_2, 9600); 00006 00007 //SHUTDOWN 00008 DigitalOut SHD_Control(PA_8); 00009 DigitalIn SHD_Status(PC_6); 00010 00011 DigitalOut WakeUp(PC_9); 00012 DigitalIn fault(PC_8); 00013 00014 //ADC 00015 AnalogIn voltage(PC_0); 00016 AnalogIn current(PC_1); 00017 00018 //AIRs 00019 DigitalOut AIR_P_Control(PC_2); 00020 DigitalOut AIR_N_Control(PC_3); 00021 DigitalIn AIR_P_Status(PA_6); 00022 DigitalIn AIR_N_Status(PA_7); 00023 00024 //Precharge 00025 DigitalOut PRECHRG_Control(PC_7); 00026 DigitalIn PRECHRG_Status(PC_5); 00027 00028 //IMD 00029 PwmIn imdPWM(PB_3); 00030 00031 00032 void callback() 00033 { 00034 char byte; 00035 pc.printf("callback\n"); 00036 if(pc.readable()) { 00037 byte = pc.getc(); 00038 pc.printf("%d\n", byte); 00039 } 00040 } 00041 00042 int main() 00043 { 00044 00045 pc.printf("Begin test\n"); 00046 pc.attach(&callback); 00047 //int shd_cnt = 0; 00048 int air_cnt = 0; 00049 int prechrg_cnt = 0; 00050 int i = 0; 00051 float currentVal = 0; 00052 /*pc.printf("Closing SHUTDOWN!\n"); 00053 SHD_Control = 1; //RELJA PRITISNI DUGME 00054 if(SHD_Status) 00055 pc.printf("SHUTDOWN open!\n"); 00056 else 00057 pc.printf("SHUTDOWN closed!\n");*/ 00058 00059 while(1) { 00060 00061 //UART FROM MASTER TO PC 00062 //pc.printf("Hi. I am BMS master...\n"); 00063 00064 /* pc.printf("Closing AIRs!\n"); 00065 AIR_P_Control = 1; 00066 AIR_N_Control = 1; 00067 00068 if(++prechrg_cnt % 15 == 0) { 00069 if(++i % 2) { 00070 pc.printf("Start PRECHARGE!\n"); 00071 PRECHRG_Control = 1; 00072 } 00073 else { 00074 pc.printf("Stop PRECHARGE!\n"); 00075 PRECHRG_Control = 0; 00076 } 00077 } 00078 00079 if(PRECHRG_Status) 00080 pc.printf("PRECHARGE closed!\n"); 00081 else 00082 pc.printf("PRECHARGE open!\n"); 00083 */ 00084 /* wait(4); 00085 00086 if(AIR_P_Status == 0 && AIR_N_Status == 0) { 00087 pc.printf("Both AIRs open!\n"); 00088 pc.printf("Closing SHUTDOWN!\n"); 00089 SHD_Control = 1; //RELJA PRITISNI DUGME 00090 } 00091 00092 else if(AIR_P_Status && AIR_N_Status) { 00093 pc.printf("Both AIRs closed!\n"); 00094 pc.printf("Closing SHUTDOWN!\n"); 00095 SHD_Control = 1; //RELJA PRITISNI DUGME 00096 } 00097 00098 else if (AIR_P_Status == 0 && AIR_N_Status == 1) { 00099 pc.printf("AIR+ open, AIR- closed!\n"); 00100 pc.printf("ERROR: OPEN SHUTDOWN!\n"); 00101 pc.printf("Opening SHUTDOWN!\n"); 00102 SHD_Control = 0; 00103 } 00104 00105 else if (AIR_P_Status == 1 && AIR_N_Status == 0) { 00106 pc.printf("AIR+ closed, AIR- open!\n"); 00107 pc.printf("ERROR: OPEN SHUTDOWN!\n"); 00108 pc.printf("Opening SHUTDOWN!\n"); 00109 SHD_Control = 0; 00110 } 00111 wait(1); 00112 00113 if(SHD_Status) 00114 pc.printf("SHUTDOWN open!\n"); 00115 else 00116 pc.printf("SHUTDOWN closed!\n"); 00117 00118 wait(3); 00119 */ 00120 00121 /* //AIRs 00122 if(++air_cnt % 30 == 0) { 00123 if(++i % 2) { 00124 pc.printf("Closing AIRs!\n"); 00125 AIR_P_Control = 1; 00126 AIR_N_Control = 1; 00127 } 00128 else { 00129 pc.printf("Opening AIRs!\n"); 00130 AIR_P_Control = 0; 00131 AIR_N_Control = 0; 00132 } 00133 00134 00135 } 00136 00137 if(AIR_P_Status == 0 && AIR_N_Status == 0) 00138 pc.printf("Both AIRs open!\n"); 00139 else if(AIR_P_Status && AIR_N_Status) 00140 pc.printf("Both AIRs closed!\n"); 00141 00142 00143 //SHUTDOWN CIRCUIT 00144 if(++shd_cnt % 30 == 0) { 00145 if(SHD_Status) { 00146 pc.printf("Closing SHUTDOWN!\n"); 00147 SHD_Control = 1; //RELJA PRITISNI DUGME 00148 } else { 00149 pc.printf("Opening SHUTDOWN!\n"); 00150 SHD_Control = 0; 00151 } 00152 } 00153 00154 if(SHD_Status) 00155 pc.printf("SHUTDOWN open!\n"); 00156 else 00157 pc.printf("SHUTDOWN closed!\n"); 00158 */ 00159 00160 /* 00161 //WAKEUP 00162 WakeUp = 1; 00163 pc.printf("WakeUp is 1\n"); 00164 wait(1); 00165 */ 00166 /* //VOLTAGE AND CURRENT 00167 currentVal = current.read(); 00168 00169 pc.printf("Voltage = %.4f\n", voltage.read()*3.3f*273.2f); 00170 pc.printf("Current = %.4f\n\n", currentVal); 00171 */ 00172 /* 00173 //IMD 00174 float period = imdPWM.period(); 00175 float duty_cycle = imdPWM.dutycycle(); 00176 pc.printf("Dutycycle = %.4f\n", duty_cycle); 00177 pc.printf("Freq = %.4f\n\n", 1/period); 00178 00179 if(SHD_Status) 00180 pc.printf("SHUTDOWN open!\n"); 00181 else 00182 pc.printf("SHUTDOWN closed!\n"); 00183 */ 00184 WakeUp = 1; 00185 00186 wait(2); 00187 00188 WakeUp = 0; 00189 00190 wait(2); 00191 00192 if(fault) 00193 pc.printf("Fault\n"); 00194 else 00195 pc.printf("No Fault\n\n"); 00196 00197 } 00198 00199 }
Generated on Wed Jul 20 2022 07:28:50 by
