SHENG-HEN HSIEH
/
VDU_2021
Just a regular publish
main.cpp@1:8a9ac822aab7, 2018-06-18 (annotated)
- Committer:
- open4416
- Date:
- Mon Jun 18 06:50:24 2018 +0000
- Revision:
- 1:8a9ac822aab7
- Parent:
- 0:c4747ebbe0b4
- Child:
- 2:c7a3a8c1aeed
Add auxiliary control to cooling system
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
open4416 | 0:c4747ebbe0b4 | 1 | #include "mbed.h" |
open4416 | 0:c4747ebbe0b4 | 2 | |
open4416 | 1:8a9ac822aab7 | 3 | DigitalOut Cool(PA_15,0); |
open4416 | 1:8a9ac822aab7 | 4 | //DigitalOut Led(D13,0); |
open4416 | 1:8a9ac822aab7 | 5 | CAN can1(PA_11, PA_12, 1000000); //(Inverter, PadalBox, DashBoard) 1Mbps, contain critical torque command message |
open4416 | 1:8a9ac822aab7 | 6 | CAN can2(PB_5, PB_13, 500000); //(BMS1, BMS2) 500kbps, contain battery status |
open4416 | 1:8a9ac822aab7 | 7 | Serial pc(USBTX, USBRX, 115200); |
open4416 | 0:c4747ebbe0b4 | 8 | |
open4416 | 0:c4747ebbe0b4 | 9 | CANMessage can_msg_1; |
open4416 | 0:c4747ebbe0b4 | 10 | CANMessage can_msg_2; |
open4416 | 0:c4747ebbe0b4 | 11 | |
open4416 | 0:c4747ebbe0b4 | 12 | uint8_t CAN_flag_1 = 0; |
open4416 | 0:c4747ebbe0b4 | 13 | uint8_t CAN_flag_2 = 0; |
open4416 | 1:8a9ac822aab7 | 14 | uint8_t RTD_State = 0; // use as bool |
open4416 | 0:c4747ebbe0b4 | 15 | |
open4416 | 1:8a9ac822aab7 | 16 | void CAN_RX1(void); |
open4416 | 1:8a9ac822aab7 | 17 | void CAN_RX2(void); |
open4416 | 0:c4747ebbe0b4 | 18 | |
open4416 | 0:c4747ebbe0b4 | 19 | int main() |
open4416 | 0:c4747ebbe0b4 | 20 | { |
open4416 | 0:c4747ebbe0b4 | 21 | CAN_flag_1 = 0; |
open4416 | 0:c4747ebbe0b4 | 22 | CAN_flag_2 = 0; |
open4416 | 1:8a9ac822aab7 | 23 | |
open4416 | 1:8a9ac822aab7 | 24 | can1.attach(&CAN_RX1, CAN::RxIrq); //CAN1 Recieve Irq |
open4416 | 1:8a9ac822aab7 | 25 | can2.attach(&CAN_RX2, CAN::RxIrq); //CAN2 Recieve Irq |
open4416 | 0:c4747ebbe0b4 | 26 | |
open4416 | 0:c4747ebbe0b4 | 27 | while(1) { |
open4416 | 1:8a9ac822aab7 | 28 | if(CAN_flag_1) { |
open4416 | 1:8a9ac822aab7 | 29 | // Led = RTD_State; |
open4416 | 1:8a9ac822aab7 | 30 | Cool = RTD_State; |
open4416 | 1:8a9ac822aab7 | 31 | pc.printf("%d\r", RTD_State); |
open4416 | 0:c4747ebbe0b4 | 32 | CAN_flag_1 = 0; |
open4416 | 0:c4747ebbe0b4 | 33 | } |
open4416 | 0:c4747ebbe0b4 | 34 | } |
open4416 | 0:c4747ebbe0b4 | 35 | } |
open4416 | 0:c4747ebbe0b4 | 36 | |
open4416 | 1:8a9ac822aab7 | 37 | void CAN_RX1(void) |
open4416 | 0:c4747ebbe0b4 | 38 | { |
open4416 | 0:c4747ebbe0b4 | 39 | if(can1.read(can_msg_1)) { |
open4416 | 1:8a9ac822aab7 | 40 | switch(can_msg_1.id) { //Filtered the input message and do corresponding action |
open4416 | 1:8a9ac822aab7 | 41 | case 0xAA: |
open4416 | 1:8a9ac822aab7 | 42 | //Internal state address |
open4416 | 1:8a9ac822aab7 | 43 | RTD_State = can_msg_1.data[6] & 0x01; //get bit "0", result ( 1 = RTD, 0 = OFF ) |
open4416 | 1:8a9ac822aab7 | 44 | CAN_flag_1 = 1; |
open4416 | 1:8a9ac822aab7 | 45 | break; |
open4416 | 1:8a9ac822aab7 | 46 | } |
open4416 | 0:c4747ebbe0b4 | 47 | } |
open4416 | 0:c4747ebbe0b4 | 48 | } |
open4416 | 1:8a9ac822aab7 | 49 | |
open4416 | 1:8a9ac822aab7 | 50 | void CAN_RX2(void) |
open4416 | 0:c4747ebbe0b4 | 51 | { |
open4416 | 0:c4747ebbe0b4 | 52 | if(can2.read(can_msg_2)) { |
open4416 | 0:c4747ebbe0b4 | 53 | } |
open4416 | 0:c4747ebbe0b4 | 54 | } |