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.
Diff: main.cpp
- 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