new battery bar
Dependencies: CAN_IDs CanControl Dashboard PinDetect PowerControl mbed-rtos mbed
main.cpp@1:c5d8ea5d049b, 2017-05-10 (annotated)
- Committer:
- kwasymodo
- Date:
- Wed May 10 17:14:02 2017 +0000
- Revision:
- 1:c5d8ea5d049b
- Child:
- 3:b164662f9740
poging 1
Who changed what in which revision?
User | Revision | Line number | New 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 | 1:c5d8ea5d049b | 30 | Serial 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 | 1:c5d8ea5d049b | 121 | 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 | 1:c5d8ea5d049b | 125 | #ifdef DEBUG |
kwasymodo | 1:c5d8ea5d049b | 126 | 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 | 1:c5d8ea5d049b | 145 | 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 | } |