Plz

Dependencies:   mbed CANMsg Adafruit_LEDBackpack

Committer:
fconboy
Date:
Fri Jul 26 13:32:21 2019 +0000
Revision:
6:be28839a8221
Parent:
5:6283f93fa278
Child:
7:060be032c57a
Working on program flow

Who changed what in which revision?

UserRevisionLine numberNew contents of line
StrawberryAubrey 0:db7d127e9819 1 #include "mbed.h"
StrawberryAubrey 0:db7d127e9819 2 #include "CANMsg.h"
StrawberryAubrey 0:db7d127e9819 3
fconboy 6:be28839a8221 4 Ticker ticker;
fconboy 6:be28839a8221 5 Timer timer;
fconboy 1:6c993d149edc 6 AnalogIn currentPot(p15);
fconboy 1:6c993d149edc 7 AnalogIn speedPot(p16);
fconboy 4:e687888fa056 8 DigitalIn ignition(p21);
fconboy 4:e687888fa056 9 DigitalIn regen(p22);
fconboy 6:be28839a8221 10 DigitalIn forwardreverse(p22);
fconboy 4:e687888fa056 11 DigitalIn brake(p22);
fconboy 4:e687888fa056 12 DigitalIn accel(p22);
StrawberryAubrey 0:db7d127e9819 13 DigitalIn enable(p5);
StrawberryAubrey 0:db7d127e9819 14 DigitalOut led1(LED1);
StrawberryAubrey 0:db7d127e9819 15 DigitalOut led2(LED2);
StrawberryAubrey 0:db7d127e9819 16 CAN can1(p9, p10);
StrawberryAubrey 0:db7d127e9819 17 //CAN can2(p30, p29);
StrawberryAubrey 0:db7d127e9819 18
StrawberryAubrey 0:db7d127e9819 19 //const uint16_t MY_ID = 0x500;
StrawberryAubrey 0:db7d127e9819 20 const uint16_t SIGNAL_ID = 0x501;
StrawberryAubrey 0:db7d127e9819 21 const uint16_t BUS_ID = 0x502;
StrawberryAubrey 0:db7d127e9819 22 char counter = 0;
fconboy 6:be28839a8221 23 float curr_val = 0;
fconboy 6:be28839a8221 24 float speed_val = 0;
StrawberryAubrey 0:db7d127e9819 25 Serial pc(USBTX, USBRX); // tx, rx
StrawberryAubrey 0:db7d127e9819 26
StrawberryAubrey 0:db7d127e9819 27 CANMsg driverControls;
StrawberryAubrey 0:db7d127e9819 28 CANMsg busCurrent;
StrawberryAubrey 0:db7d127e9819 29
StrawberryAubrey 0:db7d127e9819 30 //====================================================================
StrawberryAubrey 0:db7d127e9819 31
StrawberryAubrey 0:db7d127e9819 32 void printMsg(CANMessage& msg)
StrawberryAubrey 0:db7d127e9819 33 {
StrawberryAubrey 0:db7d127e9819 34 pc.printf("-------------------------------------\r\n");
StrawberryAubrey 0:db7d127e9819 35 pc.printf(" ID = 0x%.3x\r\n", msg.id);
StrawberryAubrey 0:db7d127e9819 36 pc.printf(" Type = %d\r\n", msg.type);
StrawberryAubrey 0:db7d127e9819 37 pc.printf(" Format = %d\r\n", msg.format);
StrawberryAubrey 0:db7d127e9819 38 pc.printf(" Length = %d\r\n", msg.len);
StrawberryAubrey 0:db7d127e9819 39 pc.printf(" Data =");
StrawberryAubrey 0:db7d127e9819 40 pc.printf("-------------------------------------\r\n");
StrawberryAubrey 0:db7d127e9819 41 for(int i = 0; i < msg.len; i++)
StrawberryAubrey 0:db7d127e9819 42 pc.printf(" 0x%.2X", msg.data[i]);
StrawberryAubrey 0:db7d127e9819 43 pc.printf("\r\n");
StrawberryAubrey 0:db7d127e9819 44 }
StrawberryAubrey 0:db7d127e9819 45
StrawberryAubrey 0:db7d127e9819 46 //=====================================================================
StrawberryAubrey 0:db7d127e9819 47 /*
StrawberryAubrey 0:db7d127e9819 48 void onCanReceived(CANMessage& msg)
StrawberryAubrey 0:db7d127e9819 49 {
StrawberryAubrey 0:db7d127e9819 50 can1.read(msg);
StrawberryAubrey 0:db7d127e9819 51 pc.printf("-------------------------------------\r\n");
StrawberryAubrey 0:db7d127e9819 52 pc.printf("CAN message received\r\n");
StrawberryAubrey 0:db7d127e9819 53 pc.printf("-------------------------------------\r\n");
StrawberryAubrey 0:db7d127e9819 54 printMsg(msg);
StrawberryAubrey 0:db7d127e9819 55
StrawberryAubrey 0:db7d127e9819 56 if (msg.id == MY_ID) {
StrawberryAubrey 0:db7d127e9819 57 // extract data from the received CAN message
StrawberryAubrey 0:db7d127e9819 58 // in the same order as it was added on the transmitter side
StrawberryAubrey 0:db7d127e9819 59 msg >> counter;
StrawberryAubrey 0:db7d127e9819 60 msg >> voltage;
StrawberryAubrey 0:db7d127e9819 61 pc.printf(" counter = %d\r\n", counter);
StrawberryAubrey 0:db7d127e9819 62 pc.printf(" voltage = %e V\r\n", voltage);
StrawberryAubrey 0:db7d127e9819 63 }
StrawberryAubrey 0:db7d127e9819 64 timer.start(); // to transmit next message in main
StrawberryAubrey 0:db7d127e9819 65 }
StrawberryAubrey 0:db7d127e9819 66 */
StrawberryAubrey 0:db7d127e9819 67 //======================================================================
StrawberryAubrey 0:db7d127e9819 68
fconboy 6:be28839a8221 69 void setDriverControls()
fconboy 6:be28839a8221 70 {
fconboy 6:be28839a8221 71 driverControls.clear();
fconboy 6:be28839a8221 72 driverControls.id = SIGNAL_ID;
fconboy 6:be28839a8221 73 driverControls << speed_val;
fconboy 6:be28839a8221 74 driverControls << curr_val;
fconboy 6:be28839a8221 75 }
fconboy 6:be28839a8221 76
StrawberryAubrey 0:db7d127e9819 77 void send()
StrawberryAubrey 0:db7d127e9819 78 {
fconboy 6:be28839a8221 79 setDriverControls();
StrawberryAubrey 0:db7d127e9819 80 if(can1.write(driverControls))
StrawberryAubrey 0:db7d127e9819 81 {
StrawberryAubrey 0:db7d127e9819 82 led1 = !led1;
StrawberryAubrey 0:db7d127e9819 83 }
StrawberryAubrey 0:db7d127e9819 84 else
StrawberryAubrey 0:db7d127e9819 85 {
StrawberryAubrey 0:db7d127e9819 86 led1 = 1;
StrawberryAubrey 0:db7d127e9819 87 led2 = 1;
StrawberryAubrey 0:db7d127e9819 88 wait(3);
StrawberryAubrey 0:db7d127e9819 89 }
fconboy 6:be28839a8221 90 timer.stop();
StrawberryAubrey 0:db7d127e9819 91 }
StrawberryAubrey 0:db7d127e9819 92
fconboy 6:be28839a8221 93 //unsigned int swap(unsigned int value)
fconboy 6:be28839a8221 94 //{
fconboy 6:be28839a8221 95 // value = ((value & 0xFFFF0000) >> 16) | ((value & 0x0000FFFF) << 16);
fconboy 6:be28839a8221 96 // value = ((value & 0xFF00FF00) >> 8) | ((value & 0x00FF00FF) << 8);
fconboy 2:36e6eccdfc1e 97 //value = ((value & 0xF0F0F0F0) >> 4) | ((value & 0x0F0F0F0F) << 4);
fconboy 2:36e6eccdfc1e 98 //value = ((value & 0xCCCCCCCC) >> 2) | ((value & 0x33333333) << 2);
fconboy 2:36e6eccdfc1e 99 //value = ((value & 0xAAAAAAAA) >> 1) | ((value & 0x55555555) << 1);
fconboy 6:be28839a8221 100 // return value;
fconboy 6:be28839a8221 101 //}
fconboy 2:36e6eccdfc1e 102
StrawberryAubrey 0:db7d127e9819 103 int main()
StrawberryAubrey 0:db7d127e9819 104 {
fconboy 6:be28839a8221 105 ticker.attach(&send, 0.1);
StrawberryAubrey 0:db7d127e9819 106 pc.baud(9600);
StrawberryAubrey 0:db7d127e9819 107 can1.frequency(1000000);
StrawberryAubrey 0:db7d127e9819 108 pc.printf("-------------------------------------\r\n");
StrawberryAubrey 0:db7d127e9819 109 printf("Attempting to send a CAN message\n");
StrawberryAubrey 0:db7d127e9819 110 //float signalCurrent = currentPot.read();
StrawberryAubrey 0:db7d127e9819 111 //float signalSpeed = speedPot.read();
StrawberryAubrey 0:db7d127e9819 112 float maxBusCurrent = 1.0;
StrawberryAubrey 0:db7d127e9819 113 printf("Current and Speed: %f and %f\n", currentPot.read(), speedPot.read());
StrawberryAubrey 0:db7d127e9819 114 pc.printf("-------------------------------------\r\n");
fconboy 2:36e6eccdfc1e 115 //while(1) {
fconboy 2:36e6eccdfc1e 116 printf("Entering transmission main code)\n");
StrawberryAubrey 0:db7d127e9819 117 //pc.printf("-------------------------------------\r\n");
StrawberryAubrey 0:db7d127e9819 118 driverControls.clear();
StrawberryAubrey 0:db7d127e9819 119 driverControls.id = SIGNAL_ID;
fconboy 1:6c993d149edc 120 // Append message with speed and current potentiometer s.
fconboy 6:be28839a8221 121 float curr_val = currentPot.read();
fconboy 6:be28839a8221 122 float speed_val = speedPot.read();
fconboy 6:be28839a8221 123 //float curr_val = 1.0;
fconboy 6:be28839a8221 124 //float speed_val = 50.0;
fconboy 6:be28839a8221 125 //float a = 1.0;
fconboy 6:be28839a8221 126 //unsigned int *curr_as_int = (unsigned int *)&curr_val;
fconboy 6:be28839a8221 127 //unsigned int *speed_as_int = (unsigned int *)&speed_val;
wpzx47 3:b9db3d4cbe1b 128 //driverControls << swap(*curr_as_int);
wpzx47 3:b9db3d4cbe1b 129 //driverControls << swap(*speed_as_int);
fconboy 6:be28839a8221 130 driverControls << speed_val;
wpzx47 3:b9db3d4cbe1b 131 driverControls << curr_val;
StrawberryAubrey 0:db7d127e9819 132 busCurrent.clear();
StrawberryAubrey 0:db7d127e9819 133 busCurrent.id = BUS_ID;
StrawberryAubrey 0:db7d127e9819 134 busCurrent << maxBusCurrent;
StrawberryAubrey 0:db7d127e9819 135 if(can1.write(busCurrent))
StrawberryAubrey 0:db7d127e9819 136 {
StrawberryAubrey 0:db7d127e9819 137 led2 = !led2;
StrawberryAubrey 0:db7d127e9819 138 }
StrawberryAubrey 0:db7d127e9819 139 send();
fconboy 2:36e6eccdfc1e 140 //}
StrawberryAubrey 0:db7d127e9819 141 }