Simple CAN test based on SKpang's work
Dependencies: CANInterface mbed
Fork of ecu_reader by
main.cpp@9:4fbd2f50cf78, 2014-04-30 (annotated)
- Committer:
- ashleymills
- Date:
- Wed Apr 30 13:51:32 2014 +0000
- Revision:
- 9:4fbd2f50cf78
- Parent:
- 7:61b712aa2771
Basic test of CAN bus interface.
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
ashleymills | 9:4fbd2f50cf78 | 1 | #include "mbed.h" |
ashleymills | 9:4fbd2f50cf78 | 2 | #include "CANInterface.h" |
pangsk | 0:908be729d27c | 3 | |
pangsk | 3:05bb8f0bd7a4 | 4 | Serial pc(USBTX, USBRX); |
pangsk | 3:05bb8f0bd7a4 | 5 | |
ashleymills | 9:4fbd2f50cf78 | 6 | #define CAN_RD p30 |
ashleymills | 9:4fbd2f50cf78 | 7 | #define CAN_TD p29 |
pangsk | 0:908be729d27c | 8 | |
ashleymills | 9:4fbd2f50cf78 | 9 | #define ENGINE_COOLANT_TEMP 0x05 |
ashleymills | 9:4fbd2f50cf78 | 10 | #define ENGINE_RPM 0x0C |
ashleymills | 9:4fbd2f50cf78 | 11 | #define VEHICLE_SPEED 0x0D |
ashleymills | 9:4fbd2f50cf78 | 12 | #define MAF_SENSOR 0x10 |
ashleymills | 9:4fbd2f50cf78 | 13 | #define THROTTLE 0x11 |
ashleymills | 9:4fbd2f50cf78 | 14 | #define O2_VOLTAGE 0x14 |
nherriot | 6:c91e372617e3 | 15 | |
ashleymills | 9:4fbd2f50cf78 | 16 | int main() { |
ashleymills | 9:4fbd2f50cf78 | 17 | pc.baud(115200); |
ashleymills | 9:4fbd2f50cf78 | 18 | pc.printf("Begin.\r\n"); |
ashleymills | 9:4fbd2f50cf78 | 19 | uint8_t outBuf[2]; |
ashleymills | 9:4fbd2f50cf78 | 20 | int outLen; |
nherriot | 6:c91e372617e3 | 21 | |
ashleymills | 9:4fbd2f50cf78 | 22 | CANInterface *can = new CANInterface(CAN_RD,CAN_TD); |
ashleymills | 9:4fbd2f50cf78 | 23 | while(1) { |
ashleymills | 9:4fbd2f50cf78 | 24 | // RPM |
ashleymills | 9:4fbd2f50cf78 | 25 | can->makeRequest(ENGINE_RPM,(uint8_t*)&outBuf,&outLen); |
ashleymills | 9:4fbd2f50cf78 | 26 | int rpm = ((outBuf[0]*256) + outBuf[1])/4; |
ashleymills | 9:4fbd2f50cf78 | 27 | pc.printf("RPM: %d\r\n",rpm); |
ashleymills | 9:4fbd2f50cf78 | 28 | |
ashleymills | 9:4fbd2f50cf78 | 29 | // coolant temperature |
ashleymills | 9:4fbd2f50cf78 | 30 | can->makeRequest(ENGINE_COOLANT_TEMP,(uint8_t*)&outBuf,&outLen); |
ashleymills | 9:4fbd2f50cf78 | 31 | int coolantTemp = (int)outBuf[0]-40; |
ashleymills | 9:4fbd2f50cf78 | 32 | pc.printf("Coolant temperature: %d\r\n",coolantTemp); |
ashleymills | 9:4fbd2f50cf78 | 33 | |
ashleymills | 9:4fbd2f50cf78 | 34 | // vehicle speed |
ashleymills | 9:4fbd2f50cf78 | 35 | can->makeRequest(VEHICLE_SPEED,(uint8_t*)&outBuf,&outLen); |
ashleymills | 9:4fbd2f50cf78 | 36 | pc.printf("Vehicle speed: %d\r\n",(int)outBuf[0]); |
ashleymills | 9:4fbd2f50cf78 | 37 | |
ashleymills | 9:4fbd2f50cf78 | 38 | // maf sensor |
ashleymills | 9:4fbd2f50cf78 | 39 | can->makeRequest(MAF_SENSOR,(uint8_t*)&outBuf,&outLen); |
ashleymills | 9:4fbd2f50cf78 | 40 | int mafSensor = ((outBuf[0]*256) + outBuf[1])/100; |
ashleymills | 9:4fbd2f50cf78 | 41 | pc.printf("MAF sensor: %d\r\n",mafSensor); |
ashleymills | 9:4fbd2f50cf78 | 42 | |
ashleymills | 9:4fbd2f50cf78 | 43 | // O2 voltage |
ashleymills | 9:4fbd2f50cf78 | 44 | can->makeRequest(THROTTLE,(uint8_t*)&outBuf,&outLen); |
ashleymills | 9:4fbd2f50cf78 | 45 | int o2Voltage = outBuf[0]*0.005; |
ashleymills | 9:4fbd2f50cf78 | 46 | pc.printf("O2 voltage: %d\r\n",o2Voltage); |
ashleymills | 9:4fbd2f50cf78 | 47 | |
ashleymills | 9:4fbd2f50cf78 | 48 | // throttle |
ashleymills | 9:4fbd2f50cf78 | 49 | can->makeRequest(O2_VOLTAGE,(uint8_t*)&outBuf,&outLen); |
ashleymills | 9:4fbd2f50cf78 | 50 | int throttlePos = (outBuf[0]*100)/255; |
ashleymills | 9:4fbd2f50cf78 | 51 | pc.printf("Throttle pos: %d\r\n",throttlePos); |
ashleymills | 9:4fbd2f50cf78 | 52 | |
ashleymills | 9:4fbd2f50cf78 | 53 | wait(0.5); |
pangsk | 0:908be729d27c | 54 | } |
ashleymills | 9:4fbd2f50cf78 | 55 | } |