Original

Dependencies:   mbed

Revision:
0:65d0d8265089
Child:
1:74aad7c18ccf
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp	Fri Nov 30 13:09:47 2018 +0000
@@ -0,0 +1,171 @@
+/*
+This is a program for globlelized controller of whole DOGO
+F746ZG
+*/
+
+#include "mbed.h"
+//#include "LSM9DS0_SH.h"
+#define DEBUG       0
+
+#define pi          3.141592f
+#define d2r         0.01745329f
+
+#define Rms         5000            //TT rate
+#define dt          0.015f
+#define Task_1_NN   120
+#define Task_2_NN   5
+
+//Structure
+#define Buff_size   16              //Serial Buffer
+
+#define constrain(amt,low,high) ((amt)<(low)?(low):((amt)>(high)?(high):(amt)))
+
+//≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡GPIO registor≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡//
+//╔═════════════════╗
+//║    Structure    ║
+//╚═════════════════╝
+DigitalOut  LD1(PB_0);               //detection
+DigitalOut  LD2(PB_7);               //detection
+DigitalOut  LD3(PB_14);              //detection
+InterruptIn button(USER_BUTTON);    //Button press;
+
+//╔═════════════════╗
+//║     Serial      ║
+//╚═════════════════╝
+Serial      Debug(PD_8, PD_9);      //Serial_3 reg(TX RX) USB port
+
+Serial      LF_Cmd(PD_5, PD_6);     //Serial_2
+DigitalOut  LF_CS(PD_7);
+
+Serial      LH_Cmd(PC_12, PD_2);    //Serial_5
+DigitalOut  LH_CS(PG_2);
+
+Serial      RF_Cmd(PG_14, PC_7);    //Serial_6
+DigitalOut  RF_CS(PA_5);
+
+Serial      RH_Cmd(PE_8, PE_7);     //Serial_7
+DigitalOut  RH_CS(PA_5);
+//■■■■■■■■■■■■■■■■■■■■■■■■■■■end of GPIO registor■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■//
+
+
+//≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡Varible registor≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡//
+//╔═════════════════╗
+//║    Structure    ║
+//╚═════════════════╝
+Ticker  TT;                         //call a timer
+uint8_t Task_1_count = 0;           //1st prior task count
+uint8_t Task_2_count = 0;           //2nd prior task count
+uint8_t Task_3_count = 0;           //3nd prior task count
+uint8_t Task_4_count = 0;           //24nd prior task count
+uint8_t Flag_1 = 0;                 //1st prior task flag
+uint8_t Flag_2 = 0;                 //2nd prior task flag
+uint8_t Flag_3 = 0;                 //3nd prior task flag
+uint8_t Flag_4 = 0;                 //4nd prior task flag
+
+
+//╔═════════════════╗
+//║   I/O Serial    ║
+//╚═════════════════╝
+uint8_t Buff[Buff_size];
+uint8_t Recieve_index = 0;
+
+
+float   LH_q_0_E[3] = {            
+    0, 0, 0
+};
+
+int up = 0;
+
+
+//■■■■■■■■■■■■■■■■■■■■■■■■■■■end of Varible registor■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■//
+
+
+//≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡Function registor≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡//
+void    init_TIMER();           //set TT_main() rate
+void    TT_main();              //timebase function rated by TT
+void    Rx_irq();
+//■■■■■■■■■■■■■■■■■■■■■■■■■■■end of Function registor■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■//
+
+
+//≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡main funtion≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡//
+int main()
+{
+    Debug.baud(115200);                     //set baud rate
+    LF_Cmd.baud(115200);
+    LH_Cmd.baud(115200);
+    RF_Cmd.baud(115200);
+    RH_Cmd.baud(115200);
+
+    wait_ms(10);
+    init_TIMER();                           //start TT_main
+
+    Debug.attach(&Rx_irq,Serial::RxIrq);    //Start recieving message
+    
+    LH_CS = 1;
+    wait_ms(200);
+    
+    LH_q_0_E[1] = 0.1;
+    
+    while(1) {                              //main() loop
+
+//        if(Debug.readable()) {
+//            Buff[Recieve_index] = Debug.getc();
+//            Debug.putc(Buff[Recieve_index]);
+//            Recieve_index = Recieve_index + 1;
+//        }
+
+//        if(device.readable()) {
+//            pc.putc(device.getc());
+//        }
+        if(Flag_1 == 1) {               //check pending
+            switch (up) {
+                case 0:
+                    LH_q_0_E[1] = 0.17;
+                    break;
+                case 1:
+                    LH_q_0_E[1] = 0.23;
+                    break;
+            }
+            LD1 = 1;
+            LH_CS = 0;
+            wait_us(20);
+            LH_Cmd.putc(LH_q_0_E[0]);
+            LH_Cmd.putc(((LH_q_0_E[1]-0.1)/0.2)*255);
+            LH_Cmd.putc(LH_q_0_E[2]);
+            LH_Cmd.putc('Q');
+            wait_us(180);
+            LH_CS = 1;
+            LD1 = 0;
+            //Task_2 done
+            
+            Flag_1 = 0;                 //clear pending
+        }     
+    }
+}
+//■■■■■■■■■■■■■■■■■■■■■■■■■■■end of main funtion■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■//
+
+
+//≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡Timebase funtion≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡//
+void init_TIMER()                       //set TT_main{} rate
+{
+    TT.attach_us(&TT_main, Rms);
+}
+void TT_main()                          //interrupt function by TT
+{
+    Task_1_count = Task_1_count + 1;
+    if(Task_1_count > Task_1_NN) {
+        Task_1_count = 0;               //Task triggering
+        Flag_1 = 1;
+        up = !up;
+    }
+}
+//■■■■■■■■■■■■■■■■■■■■■■■■■■■end of Timebase funtion■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■//
+
+
+//≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡Rx_irq funtion≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡//
+void    Rx_irq(void)
+{
+    Buff[0] = Debug.getc();
+    Debug.putc(Buff[0]);
+}
+//■■■■■■■■■■■■■■■■■■■■■■■■■■■end of Rx_irq funtion■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■//