QITH FLAGS

Dependencies:   FreescaleIAP mbed-rtos mbed

Fork of TF_conops_BAE1_3 by Team Fox

Revision:
2:3c6c33509772
Parent:
1:7185136654ce
--- a/main.cpp	Mon Jul 06 07:34:00 2015 +0000
+++ b/main.cpp	Fri Jul 10 10:09:56 2015 +0000
@@ -91,7 +91,7 @@
         Thread::signal_wait(0x1);
         printf("\n\rEntered ACS   %f\n",t_start.read());
         t_exec.start();
-        BAE_STATUS |= 0x00001000;     //set ACS_MAIN_STATUS flag to 1
+        BAE_STATUS = (BAE_STATUS & 0xFFFEFFFF) + 0x00001000;     //set ACS_MAIN_STATUS flag to 1
         PWM1 = 0;                     //clear pwm pins
         PWM2 = 0;                     //clear pwm pins
         PWM3 = 0;                     //clear pwm pins
@@ -103,7 +103,7 @@
         mag_field1[1] = 20;
         mag_field1[2] = 30;
         //--------------------------------------
-        if (BAE_ENABLE & 0x00000001 == 0x00000001)       // check if ACS_DATA_ACQ_ENABLE = 1?
+        if (BAE_ENABLE & 0x00000008 == 0x00000008)       // check if ACS_DATA_ACQ_ENABLE = 1?
         {
             FCTN_ACS_DATA_ACQ(omega1,mag_field1); 
             printf("\n\rmnm gyro values\n"); //printing the angular velocity and magnetic field values
@@ -117,9 +117,9 @@
                 printf("%f\t",mag_field1[i]);
             }
         }
-        if(BAE_ENABLE & 0x0000000E == 0x00000000)        // check ACS_STATE = ACS_CONTROL_OFF?
+        if(BAE_ENABLE & 0x00000000 == 0x00000000)        // check ACS_STATE = ACS_CONTROL_OFF?
         {
-            BAE_STATUS |= 0x00000000;                    // set ACS_STATUS = ACS_CONTROL_OFF
+            BAE_STATUS = (BAE_STATUS & 0xFFF1FFFF) + 0x00000000;                    // set ACS_STATUS = ACS_CONTROL_OFF
             PWM1 = 0;                     //clear pwm pins
             PWM2 = 0;                     //clear pwm pins
             PWM3 = 0;                     //clear pwm pins
@@ -128,9 +128,9 @@
         {
             if(power_flag > 1)
             {
-                if(BAE_ENABLE & 0x0000000E == 0x00000004)   // check ACS_STATE = ACS_ZAXIS_MOMENT_ONLY 
+                if(BAE_ENABLE & 0x00000020 == 0x00000020)   // check ACS_STATE = ACS_ZAXIS_MOMENT_ONLY 
                 {
-                    BAE_STATUS |= 0x00000018;                    // set ACS_STATUS = ACS_ZAXIS_MOMENT_ONLY   
+                    BAE_STATUS = (BAE_STATUS & 0xFFF1FFFF) + 0x00004000;                    // set ACS_STATUS = ACS_ZAXIS_MOMENT_ONLY   
                     FCTN_ACS_CNTRLALGO(mag_field1,omega1,moment);
                     printf("\n\r moment values returned by control algo \n");
                     moment[0] = 0;
@@ -140,18 +140,18 @@
                 } 
                 else 
                 {
-                    if(BAE_ENABLE & 0x00000040 == 0x00000040)           // check ACS_STATE = ACS_DATA_ACQ_FAILURE
+                    if(BAE_ENABLE & 0x00000030 == 0x00000030)           // check ACS_STATE = ACS_DATA_ACQ_FAILURE
                     {
-                        BAE_STATUS |= 0x0000000C;                    // set ACS_STATUS = ACS_DATA_ACQ_FAILURE
+                        BAE_STATUS = (BAE_STATUS & 0xFFF1FFFF) + 0x00006000;                    // set ACS_STATUS = ACS_DATA_ACQ_FAILURE
                         PWM1 = 0;                     //clear pwm pins
                         PWM2 = 0;                     //clear pwm pins
                         PWM3 = 0;                     //clear pwm pins
                     }
                     else
                     {
-                        if(BAE_ENABLE & 0x0000000E == 0x00000008)       // check ACS_STATE = ACS_NOMINAL_ONLY
+                        if(BAE_ENABLE & 0x00000040 == 0x00000040)       // check ACS_STATE = ACS_NOMINAL_ONLY
                         {
-                            BAE_STATUS |= 0x00000010;                    // set ACS_STATUS = ACS_NOMINAL_ONLY
+                            BAE_STATUS = (BAE_STATUS & 0xFFF1FFFF) + 0x00008000;                    // set ACS_STATUS = ACS_NOMINAL_ONLY
                             FCTN_ACS_CNTRLALGO(mag_field1,omega1,moment);
                             printf("\n\r moment values returned by control algo \n");
                             for(int i=0; i<3; i++) 
@@ -162,22 +162,22 @@
                         }
                         else
                         {
-                            if(BAE_ENABLE & 0x0000000E == 0x0000000A)       // check ACS_STATE = ACS_AUTO_CONTROL
+                            if(BAE_ENABLE & 0x00000050 == 0x00000050)       // check ACS_STATE = ACS_AUTO_CONTROL
                             {
-                                BAE_STATUS |= 0x00000014;                    // set ACS_STATUS = ACS_AUTO_CONTROL
+                                BAE_STATUS =(BAE_STATUS & 0xFFF1FFFF) + 0x0000A000;                    // set ACS_STATUS = ACS_AUTO_CONTROL
                                 //FCTN_ACS_AUTOCTRL_LOGIC                    // gotta include this code
                             }
                             else
                             {
-                                if(BAE_ENABLE & 0x0000000E == 0x0000000C)       // check ACS_STATE = ACS_DETUMBLING_ONLY
+                                if(BAE_ENABLE & 0x00000060 == 0x00000060)       // check ACS_STATE = ACS_DETUMBLING_ONLY
                                 {
-                                    BAE_STATUS |= 0x00000018;                    // set ACS_STATUS = ACS_DETUMBLING_ONLY  
+                                    BAE_STATUS =(BAE_STATUS & 0xFFF1FFFF) + 0x0000C000;                    // set ACS_STATUS = ACS_DETUMBLING_ONLY  
                                     FCTN_ACS_CNTRLALGO(mag_field1,omega1,moment);  // detumbling code has to be included
                                     FCTN_ACS_GENPWM_MAIN(moment) ; 
                                 }
                                 else
                                 {
-                                    BAE_STATUS |= 0x0000001C;                    // set ACS_STATUS = INVALID STATE 
+                                    BAE_STATUS =(BAE_STATUS & 0xFFF1FFFF) + 0x0000E000;                    // set ACS_STATUS = INVALID STATE 
                                     PWM1 = 0;                     //clear pwm pins
                                     PWM2 = 0;                     //clear pwm pins
                                     PWM3 = 0;                     //clear pwm pins
@@ -189,7 +189,7 @@
             }
             else
             {
-                BAE_STATUS |= 0x00000004;                    // set ACS_STATUS = ACS_LOW_POWER
+                BAE_STATUS =(BAE_STATUS & 0xFFF1FFFF) + 0x00000004;                    // set ACS_STATUS = ACS_LOW_POWER
                 PWM1 = 0;                     //clear pwm pins
                 PWM2 = 0;                     //clear pwm pins
                 PWM3 = 0;                     //clear pwm pins