Simple CAN test based on SKpang's work

Dependencies:   CANInterface mbed

Fork of ecu_reader by Nicholas Herriot

Committer:
ashleymills
Date:
Tue May 13 10:51:21 2014 +0000
Revision:
10:478a1c79ba6a
Parent:
9:4fbd2f50cf78
Test program for CAN interface

Who changed what in which revision?

UserRevisionLine numberNew 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 }