Oscar Liao
/
CHICAGO_test
Original
main.cpp@0:65d0d8265089, 2018-11-30 (annotated)
- Committer:
- OscarLiao
- Date:
- Fri Nov 30 13:09:47 2018 +0000
- Revision:
- 0:65d0d8265089
- Child:
- 1:74aad7c18ccf
iPhone
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
OscarLiao | 0:65d0d8265089 | 1 | /* |
OscarLiao | 0:65d0d8265089 | 2 | This is a program for globlelized controller of whole DOGO |
OscarLiao | 0:65d0d8265089 | 3 | F746ZG |
OscarLiao | 0:65d0d8265089 | 4 | */ |
OscarLiao | 0:65d0d8265089 | 5 | |
OscarLiao | 0:65d0d8265089 | 6 | #include "mbed.h" |
OscarLiao | 0:65d0d8265089 | 7 | //#include "LSM9DS0_SH.h" |
OscarLiao | 0:65d0d8265089 | 8 | #define DEBUG 0 |
OscarLiao | 0:65d0d8265089 | 9 | |
OscarLiao | 0:65d0d8265089 | 10 | #define pi 3.141592f |
OscarLiao | 0:65d0d8265089 | 11 | #define d2r 0.01745329f |
OscarLiao | 0:65d0d8265089 | 12 | |
OscarLiao | 0:65d0d8265089 | 13 | #define Rms 5000 //TT rate |
OscarLiao | 0:65d0d8265089 | 14 | #define dt 0.015f |
OscarLiao | 0:65d0d8265089 | 15 | #define Task_1_NN 120 |
OscarLiao | 0:65d0d8265089 | 16 | #define Task_2_NN 5 |
OscarLiao | 0:65d0d8265089 | 17 | |
OscarLiao | 0:65d0d8265089 | 18 | //Structure |
OscarLiao | 0:65d0d8265089 | 19 | #define Buff_size 16 //Serial Buffer |
OscarLiao | 0:65d0d8265089 | 20 | |
OscarLiao | 0:65d0d8265089 | 21 | #define constrain(amt,low,high) ((amt)<(low)?(low):((amt)>(high)?(high):(amt))) |
OscarLiao | 0:65d0d8265089 | 22 | |
OscarLiao | 0:65d0d8265089 | 23 | //≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡GPIO registor≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡// |
OscarLiao | 0:65d0d8265089 | 24 | //╔═════════════════╗ |
OscarLiao | 0:65d0d8265089 | 25 | //║ Structure ║ |
OscarLiao | 0:65d0d8265089 | 26 | //╚═════════════════╝ |
OscarLiao | 0:65d0d8265089 | 27 | DigitalOut LD1(PB_0); //detection |
OscarLiao | 0:65d0d8265089 | 28 | DigitalOut LD2(PB_7); //detection |
OscarLiao | 0:65d0d8265089 | 29 | DigitalOut LD3(PB_14); //detection |
OscarLiao | 0:65d0d8265089 | 30 | InterruptIn button(USER_BUTTON); //Button press; |
OscarLiao | 0:65d0d8265089 | 31 | |
OscarLiao | 0:65d0d8265089 | 32 | //╔═════════════════╗ |
OscarLiao | 0:65d0d8265089 | 33 | //║ Serial ║ |
OscarLiao | 0:65d0d8265089 | 34 | //╚═════════════════╝ |
OscarLiao | 0:65d0d8265089 | 35 | Serial Debug(PD_8, PD_9); //Serial_3 reg(TX RX) USB port |
OscarLiao | 0:65d0d8265089 | 36 | |
OscarLiao | 0:65d0d8265089 | 37 | Serial LF_Cmd(PD_5, PD_6); //Serial_2 |
OscarLiao | 0:65d0d8265089 | 38 | DigitalOut LF_CS(PD_7); |
OscarLiao | 0:65d0d8265089 | 39 | |
OscarLiao | 0:65d0d8265089 | 40 | Serial LH_Cmd(PC_12, PD_2); //Serial_5 |
OscarLiao | 0:65d0d8265089 | 41 | DigitalOut LH_CS(PG_2); |
OscarLiao | 0:65d0d8265089 | 42 | |
OscarLiao | 0:65d0d8265089 | 43 | Serial RF_Cmd(PG_14, PC_7); //Serial_6 |
OscarLiao | 0:65d0d8265089 | 44 | DigitalOut RF_CS(PA_5); |
OscarLiao | 0:65d0d8265089 | 45 | |
OscarLiao | 0:65d0d8265089 | 46 | Serial RH_Cmd(PE_8, PE_7); //Serial_7 |
OscarLiao | 0:65d0d8265089 | 47 | DigitalOut RH_CS(PA_5); |
OscarLiao | 0:65d0d8265089 | 48 | //■■■■■■■■■■■■■■■■■■■■■■■■■■■end of GPIO registor■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■// |
OscarLiao | 0:65d0d8265089 | 49 | |
OscarLiao | 0:65d0d8265089 | 50 | |
OscarLiao | 0:65d0d8265089 | 51 | //≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡Varible registor≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡// |
OscarLiao | 0:65d0d8265089 | 52 | //╔═════════════════╗ |
OscarLiao | 0:65d0d8265089 | 53 | //║ Structure ║ |
OscarLiao | 0:65d0d8265089 | 54 | //╚═════════════════╝ |
OscarLiao | 0:65d0d8265089 | 55 | Ticker TT; //call a timer |
OscarLiao | 0:65d0d8265089 | 56 | uint8_t Task_1_count = 0; //1st prior task count |
OscarLiao | 0:65d0d8265089 | 57 | uint8_t Task_2_count = 0; //2nd prior task count |
OscarLiao | 0:65d0d8265089 | 58 | uint8_t Task_3_count = 0; //3nd prior task count |
OscarLiao | 0:65d0d8265089 | 59 | uint8_t Task_4_count = 0; //24nd prior task count |
OscarLiao | 0:65d0d8265089 | 60 | uint8_t Flag_1 = 0; //1st prior task flag |
OscarLiao | 0:65d0d8265089 | 61 | uint8_t Flag_2 = 0; //2nd prior task flag |
OscarLiao | 0:65d0d8265089 | 62 | uint8_t Flag_3 = 0; //3nd prior task flag |
OscarLiao | 0:65d0d8265089 | 63 | uint8_t Flag_4 = 0; //4nd prior task flag |
OscarLiao | 0:65d0d8265089 | 64 | |
OscarLiao | 0:65d0d8265089 | 65 | |
OscarLiao | 0:65d0d8265089 | 66 | //╔═════════════════╗ |
OscarLiao | 0:65d0d8265089 | 67 | //║ I/O Serial ║ |
OscarLiao | 0:65d0d8265089 | 68 | //╚═════════════════╝ |
OscarLiao | 0:65d0d8265089 | 69 | uint8_t Buff[Buff_size]; |
OscarLiao | 0:65d0d8265089 | 70 | uint8_t Recieve_index = 0; |
OscarLiao | 0:65d0d8265089 | 71 | |
OscarLiao | 0:65d0d8265089 | 72 | |
OscarLiao | 0:65d0d8265089 | 73 | float LH_q_0_E[3] = { |
OscarLiao | 0:65d0d8265089 | 74 | 0, 0, 0 |
OscarLiao | 0:65d0d8265089 | 75 | }; |
OscarLiao | 0:65d0d8265089 | 76 | |
OscarLiao | 0:65d0d8265089 | 77 | int up = 0; |
OscarLiao | 0:65d0d8265089 | 78 | |
OscarLiao | 0:65d0d8265089 | 79 | |
OscarLiao | 0:65d0d8265089 | 80 | //■■■■■■■■■■■■■■■■■■■■■■■■■■■end of Varible registor■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■// |
OscarLiao | 0:65d0d8265089 | 81 | |
OscarLiao | 0:65d0d8265089 | 82 | |
OscarLiao | 0:65d0d8265089 | 83 | //≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡Function registor≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡// |
OscarLiao | 0:65d0d8265089 | 84 | void init_TIMER(); //set TT_main() rate |
OscarLiao | 0:65d0d8265089 | 85 | void TT_main(); //timebase function rated by TT |
OscarLiao | 0:65d0d8265089 | 86 | void Rx_irq(); |
OscarLiao | 0:65d0d8265089 | 87 | //■■■■■■■■■■■■■■■■■■■■■■■■■■■end of Function registor■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■// |
OscarLiao | 0:65d0d8265089 | 88 | |
OscarLiao | 0:65d0d8265089 | 89 | |
OscarLiao | 0:65d0d8265089 | 90 | //≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡main funtion≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡// |
OscarLiao | 0:65d0d8265089 | 91 | int main() |
OscarLiao | 0:65d0d8265089 | 92 | { |
OscarLiao | 0:65d0d8265089 | 93 | Debug.baud(115200); //set baud rate |
OscarLiao | 0:65d0d8265089 | 94 | LF_Cmd.baud(115200); |
OscarLiao | 0:65d0d8265089 | 95 | LH_Cmd.baud(115200); |
OscarLiao | 0:65d0d8265089 | 96 | RF_Cmd.baud(115200); |
OscarLiao | 0:65d0d8265089 | 97 | RH_Cmd.baud(115200); |
OscarLiao | 0:65d0d8265089 | 98 | |
OscarLiao | 0:65d0d8265089 | 99 | wait_ms(10); |
OscarLiao | 0:65d0d8265089 | 100 | init_TIMER(); //start TT_main |
OscarLiao | 0:65d0d8265089 | 101 | |
OscarLiao | 0:65d0d8265089 | 102 | Debug.attach(&Rx_irq,Serial::RxIrq); //Start recieving message |
OscarLiao | 0:65d0d8265089 | 103 | |
OscarLiao | 0:65d0d8265089 | 104 | LH_CS = 1; |
OscarLiao | 0:65d0d8265089 | 105 | wait_ms(200); |
OscarLiao | 0:65d0d8265089 | 106 | |
OscarLiao | 0:65d0d8265089 | 107 | LH_q_0_E[1] = 0.1; |
OscarLiao | 0:65d0d8265089 | 108 | |
OscarLiao | 0:65d0d8265089 | 109 | while(1) { //main() loop |
OscarLiao | 0:65d0d8265089 | 110 | |
OscarLiao | 0:65d0d8265089 | 111 | // if(Debug.readable()) { |
OscarLiao | 0:65d0d8265089 | 112 | // Buff[Recieve_index] = Debug.getc(); |
OscarLiao | 0:65d0d8265089 | 113 | // Debug.putc(Buff[Recieve_index]); |
OscarLiao | 0:65d0d8265089 | 114 | // Recieve_index = Recieve_index + 1; |
OscarLiao | 0:65d0d8265089 | 115 | // } |
OscarLiao | 0:65d0d8265089 | 116 | |
OscarLiao | 0:65d0d8265089 | 117 | // if(device.readable()) { |
OscarLiao | 0:65d0d8265089 | 118 | // pc.putc(device.getc()); |
OscarLiao | 0:65d0d8265089 | 119 | // } |
OscarLiao | 0:65d0d8265089 | 120 | if(Flag_1 == 1) { //check pending |
OscarLiao | 0:65d0d8265089 | 121 | switch (up) { |
OscarLiao | 0:65d0d8265089 | 122 | case 0: |
OscarLiao | 0:65d0d8265089 | 123 | LH_q_0_E[1] = 0.17; |
OscarLiao | 0:65d0d8265089 | 124 | break; |
OscarLiao | 0:65d0d8265089 | 125 | case 1: |
OscarLiao | 0:65d0d8265089 | 126 | LH_q_0_E[1] = 0.23; |
OscarLiao | 0:65d0d8265089 | 127 | break; |
OscarLiao | 0:65d0d8265089 | 128 | } |
OscarLiao | 0:65d0d8265089 | 129 | LD1 = 1; |
OscarLiao | 0:65d0d8265089 | 130 | LH_CS = 0; |
OscarLiao | 0:65d0d8265089 | 131 | wait_us(20); |
OscarLiao | 0:65d0d8265089 | 132 | LH_Cmd.putc(LH_q_0_E[0]); |
OscarLiao | 0:65d0d8265089 | 133 | LH_Cmd.putc(((LH_q_0_E[1]-0.1)/0.2)*255); |
OscarLiao | 0:65d0d8265089 | 134 | LH_Cmd.putc(LH_q_0_E[2]); |
OscarLiao | 0:65d0d8265089 | 135 | LH_Cmd.putc('Q'); |
OscarLiao | 0:65d0d8265089 | 136 | wait_us(180); |
OscarLiao | 0:65d0d8265089 | 137 | LH_CS = 1; |
OscarLiao | 0:65d0d8265089 | 138 | LD1 = 0; |
OscarLiao | 0:65d0d8265089 | 139 | //Task_2 done |
OscarLiao | 0:65d0d8265089 | 140 | |
OscarLiao | 0:65d0d8265089 | 141 | Flag_1 = 0; //clear pending |
OscarLiao | 0:65d0d8265089 | 142 | } |
OscarLiao | 0:65d0d8265089 | 143 | } |
OscarLiao | 0:65d0d8265089 | 144 | } |
OscarLiao | 0:65d0d8265089 | 145 | //■■■■■■■■■■■■■■■■■■■■■■■■■■■end of main funtion■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■// |
OscarLiao | 0:65d0d8265089 | 146 | |
OscarLiao | 0:65d0d8265089 | 147 | |
OscarLiao | 0:65d0d8265089 | 148 | //≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡Timebase funtion≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡// |
OscarLiao | 0:65d0d8265089 | 149 | void init_TIMER() //set TT_main{} rate |
OscarLiao | 0:65d0d8265089 | 150 | { |
OscarLiao | 0:65d0d8265089 | 151 | TT.attach_us(&TT_main, Rms); |
OscarLiao | 0:65d0d8265089 | 152 | } |
OscarLiao | 0:65d0d8265089 | 153 | void TT_main() //interrupt function by TT |
OscarLiao | 0:65d0d8265089 | 154 | { |
OscarLiao | 0:65d0d8265089 | 155 | Task_1_count = Task_1_count + 1; |
OscarLiao | 0:65d0d8265089 | 156 | if(Task_1_count > Task_1_NN) { |
OscarLiao | 0:65d0d8265089 | 157 | Task_1_count = 0; //Task triggering |
OscarLiao | 0:65d0d8265089 | 158 | Flag_1 = 1; |
OscarLiao | 0:65d0d8265089 | 159 | up = !up; |
OscarLiao | 0:65d0d8265089 | 160 | } |
OscarLiao | 0:65d0d8265089 | 161 | } |
OscarLiao | 0:65d0d8265089 | 162 | //■■■■■■■■■■■■■■■■■■■■■■■■■■■end of Timebase funtion■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■// |
OscarLiao | 0:65d0d8265089 | 163 | |
OscarLiao | 0:65d0d8265089 | 164 | |
OscarLiao | 0:65d0d8265089 | 165 | //≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡Rx_irq funtion≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡// |
OscarLiao | 0:65d0d8265089 | 166 | void Rx_irq(void) |
OscarLiao | 0:65d0d8265089 | 167 | { |
OscarLiao | 0:65d0d8265089 | 168 | Buff[0] = Debug.getc(); |
OscarLiao | 0:65d0d8265089 | 169 | Debug.putc(Buff[0]); |
OscarLiao | 0:65d0d8265089 | 170 | } |
OscarLiao | 0:65d0d8265089 | 171 | //■■■■■■■■■■■■■■■■■■■■■■■■■■■end of Rx_irq funtion■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■// |