Original

Dependencies:   mbed

Committer:
OscarLiao
Date:
Fri Nov 30 13:09:47 2018 +0000
Revision:
0:65d0d8265089
Child:
1:74aad7c18ccf
iPhone

Who changed what in which revision?

UserRevisionLine numberNew 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■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■//