new battery bar

Dependencies:   CAN_IDs CanControl Dashboard PinDetect PowerControl mbed-rtos mbed

Committer:
kwasymodo
Date:
Wed May 10 18:45:51 2017 +0000
Revision:
3:b164662f9740
Parent:
1:c5d8ea5d049b
Child:
4:dfd10f43cc8b
changed pinout.h

Who changed what in which revision?

UserRevisionLine numberNew contents of line
kwasymodo 1:c5d8ea5d049b 1 /*******************************************************************************
kwasymodo 1:c5d8ea5d049b 2 This software is especially designed for Solarboat Twente for the use in their solarboat v1.0
kwasymodo 1:c5d8ea5d049b 3
kwasymodo 1:c5d8ea5d049b 4 Written by:
kwasymodo 1:c5d8ea5d049b 5 Niels Leijen, Jesse van Rhijn, Bram Seinhorst
kwasymodo 1:c5d8ea5d049b 6
kwasymodo 1:c5d8ea5d049b 7 Thanks to:
kwasymodo 1:c5d8ea5d049b 8 Jasper Admiraal, Hidde Pik (hihihihi), Lisa Postma, Heleen Jeurink, Ruben Peters,
kwasymodo 1:c5d8ea5d049b 9 Martijn Groot Jebbink, Martijn Wilpshaar, Bram Seinhorst, Robert Geels, Arnoud Meutstege,
kwasymodo 1:c5d8ea5d049b 10 Jeroen te Braake, Ids de Vos, Jesse van Rhijn, Sam Benou and Niels Leijen
kwasymodo 1:c5d8ea5d049b 11
kwasymodo 1:c5d8ea5d049b 12 DISCLAIMER:
kwasymodo 1:c5d8ea5d049b 13 THIS SOFTWARE IS SUPPLIED "AS IS" WITHOUT ANY WARRANTIES AND SUPPORT.
kwasymodo 1:c5d8ea5d049b 14 SOLARBOATTWENTE ASSUMES NO RESPONSIBILITY OR LIABILITY FOR THE USE OF THE SOFTWARE.
kwasymodo 1:c5d8ea5d049b 15 *******************************************************************************/
kwasymodo 1:c5d8ea5d049b 16
kwasymodo 1:c5d8ea5d049b 17 // uncomment to send debug information
kwasymodo 1:c5d8ea5d049b 18 #define DEBUG
kwasymodo 1:c5d8ea5d049b 19
kwasymodo 1:c5d8ea5d049b 20 //include 3rd party libraries
kwasymodo 1:c5d8ea5d049b 21 #include "mbed.h"
kwasymodo 1:c5d8ea5d049b 22 #include "rtos.h"
kwasymodo 1:c5d8ea5d049b 23
kwasymodo 1:c5d8ea5d049b 24 // include Solarboat libraries
kwasymodo 1:c5d8ea5d049b 25 #include "pinout.h"
kwasymodo 1:c5d8ea5d049b 26 #include "PowerControl.h"
kwasymodo 1:c5d8ea5d049b 27
kwasymodo 1:c5d8ea5d049b 28 // initialize serial connection for debug
kwasymodo 1:c5d8ea5d049b 29 #ifdef DEBUG
kwasymodo 3:b164662f9740 30 RawSerial pc(SERIAL_TX, SERIAL_RX);
kwasymodo 1:c5d8ea5d049b 31 #endif
kwasymodo 1:c5d8ea5d049b 32
kwasymodo 1:c5d8ea5d049b 33 // initialize canbus
kwasymodo 1:c5d8ea5d049b 34 CAN can(CAN_RD, CAN_TD);
kwasymodo 1:c5d8ea5d049b 35 DigitalOut canEnable(CAN_ENABLE);
kwasymodo 1:c5d8ea5d049b 36
kwasymodo 1:c5d8ea5d049b 37 // initialze onboard leds
kwasymodo 1:c5d8ea5d049b 38 DigitalOut ledError(LED3);
kwasymodo 1:c5d8ea5d049b 39 DigitalOut ledRelay(LED2);
kwasymodo 1:c5d8ea5d049b 40 DigitalOut ledSD(LED1);
kwasymodo 1:c5d8ea5d049b 41 DigitalOut ledFona(LED5);
kwasymodo 1:c5d8ea5d049b 42 DigitalOut led24V(LED4);
kwasymodo 1:c5d8ea5d049b 43
kwasymodo 1:c5d8ea5d049b 44 // initialeze buck converters
kwasymodo 1:c5d8ea5d049b 45 DigitalOut buckCan(BUCK2);
kwasymodo 1:c5d8ea5d049b 46 DigitalOut buckXSens(BUCK3);
kwasymodo 1:c5d8ea5d049b 47 DigitalOut buckScreen(BUCK4);
kwasymodo 1:c5d8ea5d049b 48 DigitalOut buck24V(BUCK5);
kwasymodo 1:c5d8ea5d049b 49
kwasymodo 1:c5d8ea5d049b 50 // global variables
kwasymodo 1:c5d8ea5d049b 51 // Thread 1
kwasymodo 1:c5d8ea5d049b 52 //static bool goSleep = true;
kwasymodo 1:c5d8ea5d049b 53
kwasymodo 1:c5d8ea5d049b 54
kwasymodo 1:c5d8ea5d049b 55
kwasymodo 1:c5d8ea5d049b 56
kwasymodo 1:c5d8ea5d049b 57 /*
kwasymodo 1:c5d8ea5d049b 58 // Thread 1 - Power - Functions
kwasymodo 1:c5d8ea5d049b 59 void greenButtonPressed(){
kwasymodo 1:c5d8ea5d049b 60 #ifdef DEBUG
kwasymodo 1:c5d8ea5d049b 61 printf("green button pressed\r\n ");
kwasymodo 1:c5d8ea5d049b 62 #endif
kwasymodo 1:c5d8ea5d049b 63
kwasymodo 1:c5d8ea5d049b 64 }
kwasymodo 1:c5d8ea5d049b 65 if(goSleep){
kwasymodo 1:c5d8ea5d049b 66 #ifdef DEBUG
kwasymodo 1:c5d8ea5d049b 67 printf("waking up\n");
kwasymodo 1:c5d8ea5d049b 68 #endif
kwasymodo 1:c5d8ea5d049b 69
kwasymodo 1:c5d8ea5d049b 70 goSleep = false;
kwasymodo 1:c5d8ea5d049b 71
kwasymodo 1:c5d8ea5d049b 72 canEnable = 1;
kwasymodo 1:c5d8ea5d049b 73 buckCan = 1;
kwasymodo 1:c5d8ea5d049b 74 wait_ms(200);
kwasymodo 1:c5d8ea5d049b 75 can.write(CANMessage(0x033, "1"));
kwasymodo 1:c5d8ea5d049b 76 ledRelay = 1;
kwasymodo 1:c5d8ea5d049b 77 wait_ms(300);
kwasymodo 1:c5d8ea5d049b 78 buckXSens = 1;
kwasymodo 1:c5d8ea5d049b 79 buckScreen = 1;
kwasymodo 1:c5d8ea5d049b 80 buck24V = 1;
kwasymodo 1:c5d8ea5d049b 81 led24V = 1;
kwasymodo 1:c5d8ea5d049b 82
kwasymodo 1:c5d8ea5d049b 83 #ifdef DEBUG
kwasymodo 1:c5d8ea5d049b 84 printf("fully awake\n");
kwasymodo 1:c5d8ea5d049b 85 #endif
kwasymodo 1:c5d8ea5d049b 86 }
kwasymodo 1:c5d8ea5d049b 87 }
kwasymodo 1:c5d8ea5d049b 88
kwasymodo 1:c5d8ea5d049b 89 void redButtonPressed(){
kwasymodo 1:c5d8ea5d049b 90 #ifdef DEBUG
kwasymodo 1:c5d8ea5d049b 91 printf("red button pressed\r\n ");
kwasymodo 1:c5d8ea5d049b 92 #endif
kwasymodo 1:c5d8ea5d049b 93 #ifdef DEBUG
kwasymodo 1:c5d8ea5d049b 94 printf("going to sleep\n");
kwasymodo 1:c5d8ea5d049b 95 #endif
kwasymodo 1:c5d8ea5d049b 96
kwasymodo 1:c5d8ea5d049b 97 goSleep = true;
kwasymodo 1:c5d8ea5d049b 98 can.write(CANMessage(0x033, "0"));
kwasymodo 1:c5d8ea5d049b 99
kwasymodo 1:c5d8ea5d049b 100 ledRelay = 0;
kwasymodo 1:c5d8ea5d049b 101 wait_ms(200);
kwasymodo 1:c5d8ea5d049b 102 buckXSens = 0;
kwasymodo 1:c5d8ea5d049b 103 buckScreen = 0;
kwasymodo 1:c5d8ea5d049b 104 buck24V = 0;
kwasymodo 1:c5d8ea5d049b 105 led24V = 0;
kwasymodo 1:c5d8ea5d049b 106 wait_ms(300);
kwasymodo 1:c5d8ea5d049b 107 canEnable = 0;
kwasymodo 1:c5d8ea5d049b 108 buckCan = 0;
kwasymodo 1:c5d8ea5d049b 109
kwasymodo 1:c5d8ea5d049b 110 #ifdef DEBUG
kwasymodo 1:c5d8ea5d049b 111 printf("entering sleep mode\n");
kwasymodo 1:c5d8ea5d049b 112 #endif
kwasymodo 1:c5d8ea5d049b 113
kwasymodo 1:c5d8ea5d049b 114 //sleep();
kwasymodo 1:c5d8ea5d049b 115 }
kwasymodo 1:c5d8ea5d049b 116 */
kwasymodo 1:c5d8ea5d049b 117
kwasymodo 1:c5d8ea5d049b 118 // Thread 1 - Power
kwasymodo 1:c5d8ea5d049b 119 void power(){
kwasymodo 1:c5d8ea5d049b 120 #ifdef DEBUG
kwasymodo 3:b164662f9740 121 pc.printf("Thread 1 - Power start\r\n ");
kwasymodo 1:c5d8ea5d049b 122 #endif
kwasymodo 1:c5d8ea5d049b 123
kwasymodo 1:c5d8ea5d049b 124 PowerControl powercontrol(PUSH_GREEN, PUSH_RED);
kwasymodo 3:b164662f9740 125 #ifdef DEBUG
kwasymodo 3:b164662f9740 126 pc.printf("Thread 1 - started\r\n ");
kwasymodo 1:c5d8ea5d049b 127 #endif
kwasymodo 1:c5d8ea5d049b 128
kwasymodo 1:c5d8ea5d049b 129 //sleep();
kwasymodo 1:c5d8ea5d049b 130
kwasymodo 1:c5d8ea5d049b 131 while(1){
kwasymodo 1:c5d8ea5d049b 132 //if(!goSleep){
kwasymodo 1:c5d8ea5d049b 133 // can.write(CANMessage(0x033, "1"));
kwasymodo 1:c5d8ea5d049b 134 //}
kwasymodo 1:c5d8ea5d049b 135 ledError = !ledError;
kwasymodo 1:c5d8ea5d049b 136 Thread::wait(1000);
kwasymodo 1:c5d8ea5d049b 137 }
kwasymodo 1:c5d8ea5d049b 138 }
kwasymodo 1:c5d8ea5d049b 139
kwasymodo 1:c5d8ea5d049b 140
kwasymodo 1:c5d8ea5d049b 141 // Thread 0 - DO NOT CHANGE THIS!
kwasymodo 1:c5d8ea5d049b 142 int main() {
kwasymodo 1:c5d8ea5d049b 143 #ifdef DEBUG
kwasymodo 1:c5d8ea5d049b 144 pc.baud(115200);
kwasymodo 3:b164662f9740 145 pc.printf("Starting SOS V1.0\n");
kwasymodo 1:c5d8ea5d049b 146 #endif
kwasymodo 1:c5d8ea5d049b 147 // change CAN frequency
kwasymodo 1:c5d8ea5d049b 148 can.frequency(250000);
kwasymodo 1:c5d8ea5d049b 149
kwasymodo 1:c5d8ea5d049b 150 // initialze threads
kwasymodo 1:c5d8ea5d049b 151 Thread thread1;
kwasymodo 1:c5d8ea5d049b 152 //Thread thread2;
kwasymodo 1:c5d8ea5d049b 153 //Thread thread3;
kwasymodo 1:c5d8ea5d049b 154 //Thread thread4;
kwasymodo 1:c5d8ea5d049b 155 //Thread thread5;
kwasymodo 1:c5d8ea5d049b 156
kwasymodo 1:c5d8ea5d049b 157 // change thread priority
kwasymodo 1:c5d8ea5d049b 158 //thread2.set_priority(osPriorityBelowNormal);
kwasymodo 1:c5d8ea5d049b 159
kwasymodo 1:c5d8ea5d049b 160 // start threads
kwasymodo 1:c5d8ea5d049b 161 thread1.start(&power);
kwasymodo 1:c5d8ea5d049b 162 //thread2.start(&calcPi);
kwasymodo 1:c5d8ea5d049b 163 //thread3.start(&motorTest);
kwasymodo 1:c5d8ea5d049b 164 //thread4.start(&canReceive);
kwasymodo 1:c5d8ea5d049b 165 //thread5.start(&relaisOn);
kwasymodo 1:c5d8ea5d049b 166
kwasymodo 1:c5d8ea5d049b 167 //stop this thread while keeping the other threads running
kwasymodo 1:c5d8ea5d049b 168 Thread::wait(osWaitForever);
kwasymodo 1:c5d8ea5d049b 169 }