Mirjana Radosavljevic / Mbed 2 deprecated BMS_Master-Test

Dependencies:   mbed

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers main.cpp Source File

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 }