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.
Dependencies: CANBuffer KS0108_fork mbed-rtos mbed CAN Addresses
Fork of REVO_Updated_Steering by
Revision 45:aea289639d6b, committed 2015-05-15
- Comitter:
- jayf
- Date:
- Fri May 15 04:14:09 2015 +0000
- Parent:
- 44:80d821b5a0e7
- Commit message:
- More changes
Changed in this revision
--- a/Buffers.h Thu May 14 18:49:05 2015 +0000
+++ b/Buffers.h Fri May 15 04:14:09 2015 +0000
@@ -1,4 +1,4 @@
-#define _size 10
+/*#define _size 10
// Battery
char BigBatLifeBuffer[_size];
@@ -48,8 +48,8 @@
char ConnectedStatusBuffer = 0;
char DriveStatus;
char DriveStatusRequestBuffer;
-char TxResetBuffer = 1;
-
+char TxResetBuffer = 1;*/
+char message_data[2048][8] __attribute__((section("AHBSRAM0")));
//char CAN1Buffer[_size]; USED IN DEMO
//char CAN2Buffer[_size]; USED IN DEMO
--- a/Screen_Performance_Test.cpp Thu May 14 18:49:05 2015 +0000
+++ b/Screen_Performance_Test.cpp Fri May 15 04:14:09 2015 +0000
@@ -1,5 +1,72 @@
-#include Screen_Performance_Test.h
+#include "Screen_Performance_Test.h"
int main(){
-
+ DigitalOut RST=p26, DI=p21, RW=p22, E=p23, CS2=p25, CS1=p24;
+ KS0108 screen(p26, p21, p22, p23, p25, p24, p8, p7, p6, p5, p13, p14, p12, p11);
+ BusInOut DB(p8, p7, p6, p5, p13, p14, p12, p11);
+ Serial s(USBTX,USBRX);
+ s.baud(921600);
+ DB.output();
+ RW=0;
+ uint8_t a=170,b=85;
+ bool toggle=0;
+ while(1){
+ Timer t;
+ t.start();
+ toggle=!toggle;
+ CS1=1;
+ CS2=0;
+ for(int page=0;page<8;page++){
+ wait_us(2);
+ DI=0;
+ E=1;
+ DB.write(0xB8|page);
+ wait_us(1);
+ E=0;
+ for(int x=0;x<64;x++){
+ wait_us(2);
+ DI=0;
+ E=1;
+ DB.write(0x40|x);
+ wait_us(1);
+ E=0;
+ wait_us(2);
+
+ DI=1;
+ E=1;
+ DB.write((toggle^(x%2))?a:b);
+ wait_us(1);
+ E=0;
+ }
+ }
+ CS1=0;
+ CS2=1;
+ for(int page=0;page<8;page++){
+ wait_us(2);
+ DI=0;
+ E=1;
+ DB.write(0xB8|page);
+ wait_us(1);
+ E=0;
+ for(int x=0;x<64;x++){
+ wait_us(2);
+ DI=0;
+ E=1;
+ DB.write(0x40|x);
+ wait_us(1);
+ E=0;
+ wait_us(2);
+
+ DI=1;
+ E=1;
+ DB.write((toggle^(x%2))?a:b);
+ wait_us(1);
+ E=0;
+ }
+ }
+ t.stop();
+ float time=t.read();
+ s.printf("%1.10f\n",time);
+ wait(.2);
+ }
}
\ No newline at end of file
--- a/Screen_Performance_Test.h Thu May 14 18:49:05 2015 +0000 +++ b/Screen_Performance_Test.h Fri May 15 04:14:09 2015 +0000 @@ -1,1 +1,3 @@ -#include \ No newline at end of file +#include "mbed.h" +#include "KS0108.h" +#include "PinNames.h" \ No newline at end of file
--- a/Screens.h Thu May 14 18:49:05 2015 +0000
+++ b/Screens.h Fri May 15 04:14:09 2015 +0000
@@ -3,7 +3,6 @@
// Macro for printing to screen; Where y is the start poition of the text, and y2 is the start position of the variable
#define PUT2SCREEN(string, var, unit, x, y, y2) display.PutString(x, y, string); display.PutString(x, y2, var); display.PutString(x,y2+15,unit);
-
#define HOME_SCREEN 0
#define BATTERY_SCREEN 1
#define MOTOR_SCREEN 2
@@ -12,31 +11,55 @@
#define FAULT_SCREEN 5
-
+char display_string_buffer[30];
+char* formatPercentage(int CANID){
+ return float_to_string(CANID);
+}
+char* wheel_speed(int CANID){
+ float average_rpm =*((float*)message_data[CANID])+*((float*)(message_data[CANID]+4))
+ //assuming nominal tire diameter of 19.25in
+ sprintf(display_string_buffer,"%2.2f",average_rpm*1.09375);
+ return display_string_buffer;
+}
+char* CtoF(int CANID){
+ sprintf(display_string_buffer,"3.2f", 32+9*((float*)message_data[CANID])/5;
+ return display_string_buffer;
+}
+char* CtoF(int CANID,int index){
+ sprintf(display_string_buffer,"3.2f", 32+9*((float*)message_data[CANID]+index)/5;
+ return display_string_buffer;
+}
+char* float_to_string(int CANID){
+ sprintf(display_string_buffer,"%3.2f",message_data[CANID]);
+ return display_string_buffer;
+}
+char* float_to_string(int CANID,int index){
+ sprintf(display_string_buffer,"%3.2f",*((float*)(message_data[CANID]+index)));
+ return display_string_buffer;
+}
// Initialize Variables
int CurrScreen = HOME_SCREEN;
int PrevScreen = !CurrScreen;
// Defines the pins for the dsiplay. These are hardwired.
KS0108 display(p26, p21, p22, p23, p25, p24, p8, p7, p6, p5, p13, p14, p12, p11);
-
void DisplayHomeScreen()
{
display.ClearScreen();
display.PutString(0, 54, "Home");
//Info line 1: Battery Life & Vehicle Speed
- PUT2SCREEN("BatLife:", BigBatLifeBuffer, "%", 1, 0, 39);
- PUT2SCREEN(",", SmallBatLifeBuffer, "%", 1, 59, 62);
- PUT2SCREEN("Spd:", CarSpdBuffer, "", 1, 89,108);
+ PUT2SCREEN("BatLife:", formatPercentage(0x30B), "%", 1, 0, 39);//SOC_TX_ID
+ PUT2SCREEN(",", formatPercentage(0x513), "%", 1, 59, 62);//SYS_GLV_SOC_ID
+ PUT2SCREEN("Spd:", wheel_speed(0x222), "mph", 1, 89,108);//PCM_FRPM_ID
//Info line 2: Average Battery Temp & Peak Battery Temp
- PUT2SCREEN("AvgBatT:", AvgBatTBuffer, "F", 3, 0, 39);
- PUT2SCREEN("PkBatT:", MaxBatTBuffer, "F", 3, 69,103);
+ PUT2SCREEN("AvgBatT:", CtoF(0x319), "F", 3, 0, 39);//TEMP_MMA_TX_ID_BASE2
+ PUT2SCREEN("PkBatT:", CtoF(0x318), "F", 3, 69,103);//TEMP_MMA_TX_ID_BASE
//Info line 3: Left Motor Temp & Right Motor Temp
- PUT2SCREEN("LMtTmp:", LMtrTmpBuffer, "F", 5, 0, 34);
- PUT2SCREEN("RMtTmp:", RMtrTmpBuffer, "F", 5, 69,103);
+ PUT2SCREEN("LMtTmp:", CtoF(0x212), "F", 5, 0, 34);//MOC_MOTEMP_ID
+ PUT2SCREEN("RMtTmp:", CtoF(0x212,4), "F", 5, 69,103);//MOC_MOTEMP_ID bytes 4-7
//Fault line
display.PutString(7, 14, "Reserved for faults");
@@ -48,22 +71,22 @@
display.PutString(0, 34, "Main Battery");
//Info line 1: Battery Voltage, Power & Current
- PUT2SCREEN("V:", BigBatVoltBuffer, "V", 1, 0, 10);
- PUT2SCREEN("P:", BigBatPowerBuffer, "W", 1, 45, 55);
- PUT2SCREEN("I:", BigBatCurrentBuffer, "A", 1, 90,100);
+ PUT2SCREEN("V:", float_to_string(0x308), "V", 1, 0, 10);//VOLTAGE_TX_ID
+ PUT2SCREEN("P:", float_to_string(0x314), "W", 1, 45, 55);//POWER_TX_ID
+ PUT2SCREEN("I:", float_to_string(0x306), "A", 1, 90,100);//CURRENT_TX_ID
//Info line 2: High, Low, & Average Cell Voltage
- PUT2SCREEN("Vmx:", VmaxBuffer, "V", 3, 0, 20);
- PUT2SCREEN("Vmn:", VminBuffer, "", 3, 47, 67);
- PUT2SCREEN("Vav:", VavgBuffer, "", 3, 88,108);
+ PUT2SCREEN("Vmx:", VmaxBuffer, "V", 3, 0, 20);//CELLV_MMA_TX_ID_BASE 4-7
+ PUT2SCREEN("Vmn:", VminBuffer, "", 3, 47, 67);//CELLV_MMA_TX_ID_BASE 0-3
+ PUT2SCREEN("Vav:", VavgBuffer, "", 3, 88,108);//CELLV_MMA_TX_ID_BASE2
//Info line 3: High, Low, & Average Cell Temp
- PUT2SCREEN("Tmx:", MaxBatTBuffer, "F", 5, 0, 20);
- PUT2SCREEN("Tmn:", MinBatTBuffer, "", 5, 47, 67);
- PUT2SCREEN("Tav:", AvgBatTBuffer, "", 5, 88,108);
+ PUT2SCREEN("Tmx:", MaxBatTBuffer, "F", 5, 0, 20);//TEMP_MMA_TX_ID_BASE 4-7
+ PUT2SCREEN("Tmn:", MinBatTBuffer, "", 5, 47, 67);//TEMP_MMA_TX_ID_BASE 0-3
+ PUT2SCREEN("Tav:", AvgBatTBuffer, "", 5, 88,108);//TEMP_MMA_TX_ID_BASE2
//Info line 4: Highest Board Temp
- PUT2SCREEN("HighBoardTemp:", BoardTempBuffer, "F", 7, 17, 87);
+ PUT2SCREEN("HighBoardTemp:", BoardTempBuffer, "F", 7, 17, 87);//BOARDTEMP_TX_ID
}
void DisplayMotorScreen()
--- a/Steering.cpp Thu May 14 18:49:05 2015 +0000
+++ b/Steering.cpp Fri May 15 04:14:09 2015 +0000
@@ -107,8 +107,8 @@
CANFloat = GetFloat;
LEDBar = (CANFloat/85.0)*(2.6/3.3);
}
-
- switch (CurrScreen) {
+ memcpy(message_data[Rxmsg.id],Rxmsg.data,8);
+ /*switch (CurrScreen) {
case HOME_SCREEN:
switch (Rxmsg.id) {
@@ -125,7 +125,7 @@
sprintf(BrkPedalBuffer,"%3.2d", int(CANFloat2*100));
display.PutString(1,60,BrkPedalBuffer);
}
- break;*/
+ break;
case SOC_TX_ID:
CANFloat = GetFloat;
@@ -400,7 +400,8 @@
break;
default:
break;
- }
+ }*/
+
}
}
--- a/Steering.cpp.orig Thu May 14 18:49:05 2015 +0000
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,444 +0,0 @@
-#include "Steering.h"
-
-// To-Do:
-// Look at SYS management CAN translations: shutdown switches, DCDC status, & IMD (this is a resistance, in ohms)
-// Figure out screen/variable updating options (hardware filter), NVIC_SetPriority(CAN_IRQn,####)LPC17xx.h
-// Firgure out fault protocall
-
-void Init();
-void ProcessButtons(void const *args);
-void RequestStatusChange();
-void ResetSteeringWheel();
-void ResetCar();
-void ProcessCANMsg(CANMessage& msg);
-void UpdateDisplay();
-void ProcessButtons(void const *args);
-void ConnectedStatusCANMsg();
-
-float CANFloat;
-float CANFloat2;
-
-Ticker StatusMsg;
-
-int main()
-{
- Init();
-
- CANMessage Rxmsg;
-
- Thread Thread2(ProcessButtons);
- Thread Thread1(DisplayCurrScreen);
-
- while(1) {
- if (SteeringCANPort.rxRead(Rxmsg)) {
- ProcessCANMsg(Rxmsg);
- }
- }
-}
-
-
-void Init()
-{
- StatusMsg.attach(&ConnectedStatusCANMsg,0.1);
- pc.baud(921600);
- BLButtonRed;
- BRButtonGreen;
- TLButtonGreen;
- TRButtonGreen;
- //initialize screen Startup Process
- wait(2);
-}
-
-
-void ProcessButtons(void const *args)
-{
- while(1) {
- Thread::wait(50);
- if(biSWBR.read()) {
- Thread::wait(750);
- if (biSWBR.read()) {
- ResetCar();
- }
- NVIC_SystemReset();
- ResetSteeringWheel();
- }
-
- if(biSWBL.read()) {
- Thread::wait(1000);
- if (biSWBL.read()) {
- RequestStatusChange();
- }
- }
-
- if(biSWTR.read() && CurrScreen != 5) {
- //If the toggle button is pressed and the screen isn't on Fault_Screen
- ToggleScreen();
- Thread::wait(250);
- } else if (biSWTR.read() && CurrScreen == 5) {// If the screen was on Fault, go to Home
- CurrScreen = 0;
- Thread::wait(250);
- }
-
- if(biSWTL.read() && CurrScreen != 0) {
- //If the Home button is pressed and the screen isn't on Fault_Screen
- CurrScreen = 0;
- Thread::wait(250);
- } else if (biSWTL.read() && CurrScreen == 0) {// If the screen was on Fault, go to Home
- CurrScreen = 5;
- Thread::wait(250);
- }
- }
-}
-
-
-void UpdateDisplay()
-{
-}
-
-
-void ProcessCANMsg(CANMessage& Rxmsg)
-{
- if (SteeringCANPort.rxRead(Rxmsg)) {
- // Printing CAN message data:
- // printf("Message ID: 0x%x len: %d hex: 0x%x float: %f\r\n", Rxmsg.id, Rxmsg.len, *((int*)((void*)(&Rxmsg.data[0]))), *((float*)((void*)(&Rxmsg.data[0]))));
- // for (int i=0; i < Rxmsg.len; i++) printf("D[%d]: %x ", i, Rxmsg.data[i]);
- if (Rxmsg.id == MODE_TX_ID) {
- if(Rxmsg.data[0] != (1<<3))
- DriveStatusRequestBuffer=1;
- else
- DriveStatusRequestBuffer=0;
- }
-
- if (Rxmsg.id == POWER_TX_ID) {
- CANFloat = GetFloat;
- LEDBar = (CANFloat/85.0)*(2.6/3.3);
- }
-
- switch (CurrScreen) {
- case HOME_SCREEN:
- switch (Rxmsg.id) {
-
- // HOME SCREEN *******************************************************************************************
- // Pedal Test
- /*case PCM_PEDALS_ID:
- CANFloat = GetFloat;
- if (abs(CANFloat*100 - float (*AccPedalBuffer)) >= 1) {
- sprintf(AccPedalBuffer,"%3.2d", int(CANFloat*100));
- display.PutString(1,40,AccPedalBuffer);
- }
- CANFloat2 = GetFloat4;
- if (abs(CANFloat2*100 - float (*BrkPedalBuffer)) >= 1) {
- sprintf(BrkPedalBuffer,"%3.2d", int(CANFloat2*100));
- display.PutString(1,60,BrkPedalBuffer);
- }
- break;*/
-
- case SOC_TX_ID:
- CANFloat = GetFloat;
- if (abs(CANFloat*100 - *BigBatLifeBuffer) >= 1) {
- sprintf(BigBatLifeBuffer,"%3.2d", int(CANFloat*100)); // Big battery life percentage
- display.PutString(1,40,BigBatLifeBuffer);
- }
- break;
- case SYS_GLV_SOC_ID:
- CANFloat = GetFloat;
- if (abs(CANFloat*100 - *SmallBatLifeBuffer) >= 1) {
- sprintf(SmallBatLifeBuffer,"%3.2d", int(CANFloat*100)); // Small battery life percentage
- display.PutString(1,60,SmallBatLifeBuffer);
- }
- break;
- case PCM_FRPM_ID:
- CANFloat = GetFloat;
- CANFloat2 = GetFloat4;
- if (abs((CANFloat+CANFloat2)*WheelCircumference*30 - *CarSpdBuffer) >= 1) {
- sprintf(CarSpdBuffer,"%3.2d", int((CANFloat+CANFloat2)*WheelCircumference*30)); // Miles per hour
- display.PutString(1,108,CarSpdBuffer);
- }
- break;
- case TEMP_MMA_TX_ID_BASE2:
- CANFloat = GetFloat;
- if (abs((CANFloat*9.0/5.0)+32 - *AvgBatTBuffer) >=1) {
- sprintf(AvgBatTBuffer,"%3.2d", int((CANFloat*9.0/5.0)+32)); // Degrees F
- display.PutString(3,39,AvgBatTBuffer);
- }
- break;
- case TEMP_MMA_TX_ID_BASE:
- CANFloat2 = GetFloat4;
- if (abs((CANFloat2*9.0/5.0)+32 - *MaxBatTBuffer) >=1) {
- sprintf(MaxBatTBuffer,"%3.2d", int((CANFloat2*9.0/5.0)+32));
- display.PutString(3,103,MaxBatTBuffer);
- }
- break;
- case MOC_MOTEMP_ID:
- CANFloat = GetFloat;
- if (abs((CANFloat*9.0/5.0)+32 - *LMtrTmpBuffer) >= 1) {
- sprintf(LMtrTmpBuffer,"%3.2d", int((CANFloat*9.0/5.0)+32));
- display.PutString(5,34,LMtrTmpBuffer);
- }
- CANFloat2 = GetFloat4;
- if (abs((CANFloat2*9.0/5.0)+32 - *RMtrTmpBuffer) >= 1) {
- sprintf(RMtrTmpBuffer,"%3.2d", int((CANFloat2*9.0/5.0)+32));
- display.PutString(5,34,RMtrTmpBuffer);
- }
- break;
- default:
- break;
- }
- break;
- // BATTERY SCREEN***********************************************************************************
- case BATTERY_SCREEN:
- switch (Rxmsg.id) {
- case VOLTAGE_TX_ID:
- CANFloat = GetFloat;
- if (abs(CANFloat - *BigBatVoltBuffer) >= 0.1) {
- sprintf(BigBatVoltBuffer,"%3.2d", int(CANFloat)); // Volts
- display.PutString(1,10,BigBatVoltBuffer);
- }
- break;
- case POWER_TX_ID:
- CANFloat = GetFloat;
- LEDBar = (CANFloat/85.0)*(2.6/3.3);
- if (abs(CANFloat - *BigBatPowerBuffer) >= 1) {
- sprintf(BigBatPowerBuffer,"%3.2d", int(CANFloat)); // Watts
- display.PutString(1,55,BigBatPowerBuffer);
- }
- break;
- case CURRENT_TX_ID:
- CANFloat = GetFloat;
- if (abs(CANFloat - *BigBatCurrentBuffer) >= 0.2) {
- sprintf(BigBatCurrentBuffer,"%3.2d", int(CANFloat)); // Amps
- display.PutString(1,100,BigBatCurrentBuffer);
- }
- break;
- case CELLV_MMA_TX_ID_BASE:
- CANFloat2 = GetFloat4;
- if (abs(CANFloat2 - *VmaxBuffer) >= 0.1) {
- sprintf(VmaxBuffer,"%3.2d", int(CANFloat2));
- display.PutString(3,20,VmaxBuffer);
- }
- CANFloat = GetFloat;
- if (abs(CANFloat - *VminBuffer) >= 0.1) {
- sprintf(VminBuffer,"%3.2d", int(CANFloat));
- display.PutString(3,67,VminBuffer);
- }
- break;
- case CELLV_MMA_TX_ID_BASE2:
- CANFloat = GetFloat;
- if (abs(CANFloat - *VavgBuffer) >= 0.1) {
- sprintf(VavgBuffer,"%3.2d", int(CANFloat)); // Volts
- display.PutString(3,108,VavgBuffer);
- }
- break;
- case TEMP_MMA_TX_ID_BASE:
- CANFloat = GetFloat;
- if (abs((CANFloat*9.0/5.0)+32 - *MinBatTBuffer) >= 1) {
- sprintf(MinBatTBuffer,"%3.2d", int((CANFloat*9.0/5.0)+32));
- display.PutString(5,67,MinBatTBuffer);
- }
- CANFloat2 = GetFloat4;
- if (abs((CANFloat2*9.0/5.0)+32 - *MaxBatTBuffer) >=1) {
- sprintf(MaxBatTBuffer,"%3.2d", int((CANFloat2*9.0/5.0)+32));
- display.PutString(5,20,MaxBatTBuffer);
- }
- break;
- case TEMP_MMA_TX_ID_BASE2:
- CANFloat = GetFloat;
- if (abs((CANFloat*9.0/5.0)+32 - *AvgBatTBuffer) >=1) {
- sprintf(AvgBatTBuffer,"%3.2d", int((CANFloat*9.0/5.0)+32)); // Degrees F
- display.PutString(5,108,AvgBatTBuffer);
- }
- break;
- case BOARDTEMP_TX_ID:
- CANFloat = GetFloat;
- if (abs((CANFloat*9.0/5.0)+32 - *BoardTempBuffer) >= 1) {
- sprintf(BoardTempBuffer,"%3.2d", int((CANFloat*9.0/5.0)+32)); // Degrees F
- display.PutString(7,87,BoardTempBuffer);
- }
- break;
- default:
- break;
- }
- break;
- // MOTOR SCREEN*****************************************************************
- case MOTOR_SCREEN:
- switch (Rxmsg.id) {
- case MOC_MOTEMP_ID:
- CANFloat = GetFloat;
- if (abs((CANFloat*9.0/5.0)+32 - *LMtrTmpBuffer) >= 1) {
- sprintf(LMtrTmpBuffer,"%3.2d", int((CANFloat*9.0/5.0)+32));
- display.PutString(1,34,LMtrTmpBuffer);
- }
- CANFloat2 = GetFloat4;
- if (abs((CANFloat2*9.0/5.0)+32 - *RMtrTmpBuffer) >= 1) {
- sprintf(RMtrTmpBuffer,"%3.2d", int((CANFloat2*9.0/5.0)+32));
- display.PutString(1,98,LMtrTmpBuffer);
- }
- break;
- case MOC_AIRTEMP_ID:
- CANFloat = GetFloat;
- if (abs((CANFloat*9.0/5.0)+32 - *LAirTmpBuffer) >= 1) {
- sprintf(LAirTmpBuffer,"%3.2d", int((CANFloat*9.0/5.0)+32));
- display.PutString(2,34,LAirTmpBuffer);
- }
- CANFloat2 = GetFloat4;
- if (abs((CANFloat2*9.0/5.0)+32 - *RAirTmpBuffer) >= 1) {
- sprintf(RAirTmpBuffer,"%3.2d", int((CANFloat2*9.0/5.0)+32)); // Degrees F
- display.PutString(2,98,RAirTmpBuffer);
- }
- break;
- case MOC_IGBTTEMP_ID:
- CANFloat = GetFloat;
- if (abs((CANFloat*9.0/5.0)+32 - *LIGBTmpBuffer) >= 1) {
- sprintf(LIGBTmpBuffer,"%3.2d", int((CANFloat*9.0/5.0)+32));
- display.PutString(3,34,LIGBTmpBuffer);
- }
- CANFloat2 = GetFloat4;
- if (abs((CANFloat2*9.0/5.0)+32 - *RIGBTmpBuffer) >= 1) {
- sprintf(RIGBTmpBuffer,"%3.2d", int((CANFloat2*9.0/5.0)+32)); // Degrees F
- display.PutString(3,98,RIGBTmpBuffer);
- }
- break;
- case MOC_RPM_ID:
- CANFloat = GetFloat;
- if (abs(CANFloat - *Rpm_LBuffer) >= 1) {
- sprintf(Rpm_LBuffer,"%3.2d", int(CANFloat));
- display.PutString(5,30,Rpm_LBuffer);
- }
- CANFloat2 = GetFloat4;
- if (abs(CANFloat2 - *Rpm_RBuffer) >= 1) {
- sprintf(Rpm_RBuffer,"%3.2d", int(CANFloat2));
- display.PutString(5,107,Rpm_RBuffer);
- }
- break;
- case PCM_TORQUERQ_ID:
- CANFloat = GetFloat;
- if (abs(CANFloat*100 - *TRequestBufferL) >= 1) {
- sprintf(TRequestBufferL,"%3.2d", int(CANFloat*100)); // Percentage
- display.PutString(7,89,TRequestBufferL);
- }
- CANFloat2 = GetFloat4;
- if (abs(CANFloat2*100 - *TRequestBufferR) >= 1) {
- sprintf(TRequestBufferR,"%3.2d", int(CANFloat2*100)); // Percentage
- display.PutString(7,89,TRequestBufferR);
- }
- break;
- default:
- break;
- }
- break;
-
- // SYSTEM MANAGEMENT SCREEN***************************************************
- case SYS_MGMT_SCREEN:
- switch (Rxmsg.id) {
- case SYS_GLV_CURRENT_ID:
- CANFloat = GetFloat;
- if (abs(CANFloat - *SmallBatCurrentBuffer) >= 0.2) {
- sprintf(SmallBatCurrentBuffer,"%3.2d", int(CANFloat)); // Amps
- display.PutString(1,30,SmallBatCurrentBuffer);
- }
- break;
- case SYS_SWITCHES_ID:
- CANFloat = GetFloat;
- sprintf(ShtdSwtchBuffer,"%3.2d", int(CANFloat)); // How the heck are we interpreting this data
- display.PutString(1,108,ShtdSwtchBuffer);
- break;
- case SYS_PWM_FAN_ID:
- CANFloat = GetFloat;
- if (abs(CANFloat*100 - *Fan1Buffer) >= 1) {
- sprintf(Fan1Buffer,"%3.2d", int(CANFloat*100));
- display.PutString(3,30,Fan1Buffer);
- }
- CANFloat2 = GetFloat4;
- if (abs(CANFloat2*100 - *Fan1Buffer) >= 1) {
- sprintf(Fan2Buffer,"%3.2d", int(CANFloat2*100));
- display.PutString(3,107,Fan2Buffer);
- }
- break;
- case SYS_PWM_PUMP_ID:
- CANFloat = GetFloat;
- if (abs(CANFloat*100 - *Pump1Buffer) >= 1) {
- sprintf(Pump1Buffer,"%3.2d", int(CANFloat*100));
- display.PutString(5,30,Pump1Buffer);
- }
- CANFloat2 = GetFloat4;
- if (abs(CANFloat2*100 - *Pump2Buffer) >= 1) {
- sprintf(Pump2Buffer,"%3.2d", int(CANFloat2*100));
- display.PutString(5,107,Pump2Buffer);
- }
- break;
- case SYS_DCDC_STATUS_ID:
- CANFloat = GetFloat;
- sprintf(DCDCBuffer,"%3.2d", int(CANFloat)); // How the heck are we interpreting this data
- display.PutString(7,30,DCDCBuffer);
- break;
- case SYS_IMD_RESIST_ID:
- CANFloat = GetFloat;
- if (abs(CANFloat - *IMDRBuffer) >= 1) {
- sprintf(IMDRBuffer,"%3.2d", int(CANFloat));
- display.PutString(7,82,IMDRBuffer);
- }
- break;
- default:
- break;
- }
- break;
-
- // CHARGE SCREEN *************************************************************
- case CHARGE_SCREEN:
- switch (Rxmsg.id) {
- case CHARGECURR_TX_ID:
- CANFloat = GetFloat;
- if (abs(CANFloat - *ChargeCurrBuffer) >= 0.1) {
- sprintf(ChargeCurrBuffer,"%3.2d", int(CANFloat)); // Amps
- display.PutString(3,94,ChargeCurrBuffer);
- }
- break;
- case VOLTAGE_TX_ID:
- CANFloat = GetFloat;
- if (abs(CANFloat - *BigBatVoltBuffer) >= 0.1) {
- sprintf(BigBatVoltBuffer,"%3.2d", int(CANFloat)); // Volts
- display.PutString(3,94,BigBatVoltBuffer);
- }
- break;
- default:
- break;
- }
- break;
- default:
- break;
- }
- }
-}
-
-void ConnectedStatusCANMsg()
-{
- CANMessage ConnectedStatus(0x600, &ConnectedStatusBuffer,1);
- SteeringCANPort.txWrite(ConnectedStatus);
-}
-
-
-void RequestStatusChange()
-{
- CANMessage TxDriveStatusRequest(0x601, &DriveStatusRequestBuffer,1);
- for (int j=0; j<10; j++) {
- SteeringCANPort.txWrite(TxDriveStatusRequest);
- }
- display.PutString(7,0," DRIVE REQUEST SENT ");
- Thread::wait(750);
- PrevScreen = !CurrScreen; // To force a screen update
-}
-
-
-void ResetSteeringWheel()
-{
- NVIC_SystemReset();
-}
-
-
-void ResetCar()
-{
- CANMessage TxCarReset(0x602,&TxResetBuffer,1);
- for (int k=0; k<10; k++) {
- SteeringCANPort.txWriteDirect(TxCarReset);
- }
-}
\ No newline at end of file
