Dragica Stoiljkovic / Mbed 2 deprecated BMS_LV_TEMP_VOLT_BALANCE

Dependencies:   mbed

Revision:
1:d0662d4ffb8c
Child:
2:03a6da61d834
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp	Sun Dec 20 18:07:17 2020 +0000
@@ -0,0 +1,88 @@
+#include "mbed.h"
+#include "bq79606.h"
+
+// - - - PIN CONFIGURATION - - -
+
+DigitalIn bmsFault(PB_4);
+DigitalOut bmsWakeUp(PB_5);
+
+// - - - UART CONFIGURATION - - -
+
+Serial bms(PA_0, PA_1, BAUDRATE);//PA_9, PA_10,250000); //UART ka BMS Slaveu
+Serial pc1(USBTX, USBRX, 9600);//PC_10, PC_11,9600); //UART ka PCu Serijskom monitoru
+
+BYTE recBuff[1024];
+int recLen=0;
+int expected=0;
+volatile bool full = false;
+int rdLen=0;
+int counter = 0;
+
+uint8_t pFrame1[(MAXBYTES+6)*TOTALBOARDS];
+
+void callback() {
+    // Note: you need to actually read from the serial to clear the RX interrupt
+    pc1.printf("* * *    Uspesan PRIJEM!     * * *\n");
+    while(bms.readable()){
+        recBuff[recLen++] = bms.getc();
+        if(expected==0) expected = recBuff[0]+6; //prvi bajt je (broj data - 1), +1 device id, +2 reg address, +2 CRC
+        if(expected == recLen){
+            full = true;
+            rdLen = expected;
+            expected = 0;
+            recLen = 0;
+        }
+    }
+}
+
+void waitFrame(){
+    while(!full);
+    full=false;
+    for(int i = 0;i<rdLen;i++){
+        pc1.printf("%X ",recBuff[i]);
+    }
+    
+    pc1.printf("\n\n- - - VOLTAGE - - -\n"); 
+    for(int i = 4; i < recBuff[0] + 4; i += 2){
+        int voltage = recBuff[i+1];   //LSB
+        voltage |= (recBuff[i]) << 8; //MSB
+        double vol = ((double)voltage)/65536.0 * 5.0;
+        pc1.printf("CELL[%d] = %6.f V\n", i/2-1, vol);
+    }
+      
+    pc1.printf("\n");
+}
+void waitFrameResponse(){
+    while(!full);
+    full = false;
+    for(int i = 0;i < rdLen; i++){
+        pc1.printf("%X ", recBuff[i]);
+    }
+    pc1.printf("\n");
+}
+
+int main(){
+    bms.attach(&callback);
+    Wake79606();
+    AutoAddress();
+    init();
+    
+    while (1) {
+        pc1.printf("Main Code \n");
+                
+        pc1.printf("Board 0 \n");
+        
+        wait(2);
+        ReadReg(0, VCELL1H, pFrame1, 0x0C, 0, FRMWRT_SGL_R); //12 bajtova jer cita od adrese VCELL1H po dva bajta za svaki kanal (ima 6 kanala)
+        waitFrame();
+        
+        //slanje zahteva za GRESKAMA
+        /*ReadReg(0, 0x52, &wTemp, 2, 0); // 0ms timeout
+        waitFrameResponse();*/
+        
+
+    }
+    
+    
+    
+}
\ No newline at end of file