BMS Master HW test - 20/21

Dependencies:   mbed

main.cpp

Committer:
minamax
Date:
2021-06-21
Revision:
0:4fedfbc3c6b8
Child:
1:26659a89d49e

File content as of revision 0:4fedfbc3c6b8:

#include "mbed.h"
#include "PwmIn.h"

//FTDI (TX, RX, BAUDRATE)
Serial pc(PC_12, PD_2, 9600);

//SHUTDOWN
DigitalOut SHD_Control(PA_8);
DigitalIn  SHD_Status(PC_6);

//DigitalOut WakeUp(PC_9);

//ADC
AnalogIn voltage(PC_0);
AnalogIn current(PC_1);

//AIRs
DigitalOut AIR_P_Control(PC_2);
DigitalOut AIR_N_Control(PC_3);
DigitalIn AIR_P_Status(PA_6);
DigitalIn AIR_N_Status(PA_7);

//Precharge
DigitalOut PRECHRG_Control(PC_7);
DigitalIn PRECHRG_Status(PC_5);

//IMD
PwmIn imdPWM(PB_3);


void callback()
{
    char byte;
    pc.printf("callback\n");
    if(pc.readable()) {
        byte = pc.getc();
        pc.printf("%d\n", byte);
    }
}

int main()
{

    pc.printf("Begin test\n");
    pc.attach(&callback);
    //int shd_cnt = 0;
    int air_cnt = 0;
    int prechrg_cnt = 0;
    int i = 0;
    float currentVal = 0;
    /*pc.printf("Closing SHUTDOWN!\n");
    SHD_Control = 1; //RELJA PRITISNI DUGME
    if(SHD_Status)
        pc.printf("SHUTDOWN open!\n");
    else
        pc.printf("SHUTDOWN closed!\n");*/

    while(1) {

        //UART FROM MASTER TO PC
        //pc.printf("Hi. I am BMS master...\n");

/*      pc.printf("Closing AIRs!\n");
        AIR_P_Control = 1;
        AIR_N_Control = 1;
        
        if(++prechrg_cnt % 15 == 0) {
            if(++i % 2) {
                pc.printf("Start PRECHARGE!\n");
                PRECHRG_Control = 1;
                }
            else {
                pc.printf("Stop PRECHARGE!\n");
                PRECHRG_Control = 0;
                }
        }

        if(PRECHRG_Status)
            pc.printf("PRECHARGE closed!\n");
        else
            pc.printf("PRECHARGE open!\n");
*/
/*      wait(4);

        if(AIR_P_Status == 0 && AIR_N_Status == 0) {
            pc.printf("Both AIRs open!\n");
            pc.printf("Closing SHUTDOWN!\n");
            SHD_Control = 1; //RELJA PRITISNI DUGME
        }

        else if(AIR_P_Status && AIR_N_Status) {
            pc.printf("Both AIRs closed!\n");
            pc.printf("Closing SHUTDOWN!\n");
            SHD_Control = 1; //RELJA PRITISNI DUGME
        }

        else if (AIR_P_Status == 0 && AIR_N_Status == 1) {
            pc.printf("AIR+ open, AIR- closed!\n");
            pc.printf("ERROR: OPEN SHUTDOWN!\n");
            pc.printf("Opening SHUTDOWN!\n");
            SHD_Control = 0;
        }

        else if (AIR_P_Status == 1 && AIR_N_Status == 0) {
            pc.printf("AIR+ closed, AIR- open!\n");
            pc.printf("ERROR: OPEN SHUTDOWN!\n");
            pc.printf("Opening SHUTDOWN!\n");
            SHD_Control = 0;
        }
        wait(1);

        if(SHD_Status)
            pc.printf("SHUTDOWN open!\n");
        else
            pc.printf("SHUTDOWN closed!\n");

        wait(3);
*/

/*      //AIRs
        if(++air_cnt % 30 == 0) {
            if(++i % 2) {
                pc.printf("Closing AIRs!\n");
                AIR_P_Control = 1;
                AIR_N_Control = 1;
                }
            else {
                pc.printf("Opening AIRs!\n");
                AIR_P_Control = 0;
                AIR_N_Control = 0;
                }


        }

        if(AIR_P_Status == 0 && AIR_N_Status == 0)
            pc.printf("Both AIRs open!\n");
        else if(AIR_P_Status && AIR_N_Status)
            pc.printf("Both AIRs closed!\n");


        //SHUTDOWN CIRCUIT
        if(++shd_cnt % 30 == 0) {
            if(SHD_Status) {
                pc.printf("Closing SHUTDOWN!\n");
                SHD_Control = 1; //RELJA PRITISNI DUGME
            } else {
                pc.printf("Opening SHUTDOWN!\n");
                SHD_Control = 0;
            }
        }

        if(SHD_Status)
            pc.printf("SHUTDOWN open!\n");
        else
            pc.printf("SHUTDOWN closed!\n");
        */

/*
        //WAKEUP
        WakeUp = 1;
        pc.printf("WakeUp is 1\n");
        wait(1);
*/
/*      //VOLTAGE AND CURRENT
        currentVal = current.read(); 
        
        pc.printf("Voltage = %.4f\n", voltage.read()*3.3f*273.2f);
        pc.printf("Current = %.4f\n\n", currentVal);
*/
        
        //IMD
        float period = imdPWM.period();
        float duty_cycle = imdPWM.dutycycle();
        pc.printf("Dutycycle = %.4f\n", duty_cycle);
        pc.printf("Freq = %.4f\n\n", 1/period);
        
        if(SHD_Status)
            pc.printf("SHUTDOWN open!\n");
        else
            pc.printf("SHUTDOWN closed!\n");
        

        wait(2);

    }

}