Explorar o código

modified: ALGO_AlgorithmBase_ATY.c
modified: ALGO_AlgorithmBase_ATY.h
modified: GP22_ATY.c
modified: HW_ADC_ATY.c
modified: KEY_ATY.c
modified: MOTOR_STEP_ATY.h
modified: Web/PROG_Base.js

SKY-20210407USB\Administrator %!s(int64=2) %!d(string=hai) anos
pai
achega
65f4019deb
Modificáronse 7 ficheiros con 59 adicións e 14 borrados
  1. 31 1
      ALGO_AlgorithmBase_ATY.c
  2. 1 1
      ALGO_AlgorithmBase_ATY.h
  3. 2 2
      GP22_ATY.c
  4. 0 2
      HW_ADC_ATY.c
  5. 1 1
      KEY_ATY.c
  6. 6 6
      MOTOR_STEP_ATY.h
  7. 18 1
      Web/PROG_Base.js

+ 31 - 1
ALGO_AlgorithmBase_ATY.c

@@ -211,7 +211,7 @@ void ALGO_InvertBitsN_Group(uint32_t* genBuf, uint32_t* srcBuf, uint8_t len)
 }
 /* End of Easy way to implement Invert ****************************************/
 
-float NumberSuitScop(float valueIn, float scopMin, float scopMax, float step)
+float ALGO_NumberSuitScop(float valueIn, float scopMin, float scopMax, float step)
 {
     uint16_t errCount = 0;
     while((valueIn < scopMin || valueIn > scopMax) && (uint32_t)step != 0){
@@ -224,6 +224,36 @@ float NumberSuitScop(float valueIn, float scopMin, float scopMax, float step)
     return valueIn;
 }
 
+
+float ALGO_Sqrt_NewtonNumber(float x)
+{
+    float xhalf = 0.5f * x;
+    int i = *(int*)&x;
+
+    if(!x) return 0;
+
+    i = 0x5f375a86 - (i >> 1);      // beautiful number
+    x = *(float*)&i;
+    x = x * (1.5f - xhalf * x * x); // Newton iteration
+    x = x * (1.5f - xhalf * x * x); // Newton iteration
+    x = x * (1.5f - xhalf * x * x); // Newton iteration
+    return (1 / x);
+}
+
+
+float ALGO_GetRms(uint16_t currentValue, uint16_t currentNum, float sumValue, uint16_t wholeNum)
+{
+    float value = sumValue;
+    value += (currentValue * currentValue);
+    if(currentNum >= wholeNum){
+        value /= currentNum;
+        value = ALGO_Sqrt(value);
+        return value;
+    }
+    return 0;
+}
+
+
 #ifdef __DEBUG_ALGO_AlgorithmBase_ATY
 void ALGO_Swap_Test(void)
 {

+ 1 - 1
ALGO_AlgorithmBase_ATY.h

@@ -380,7 +380,7 @@ float ALGO_MATH_POW(float x, int n);
 int ALGO_MATH_SQRT(int x);
 float ALGO_MATH_LogLn(float num);
 
-float NumberSuitScop(float valueIn, float scopMin, float scopMax, float step);
+float ALGO_NumberSuitScop(float valueIn, float scopMin, float scopMax, float step);
 
 #ifdef __DEBUG_ALGO_AlgorithmBase_ATY
 void ALGO_Swap_Test(void);

+ 2 - 2
GP22_ATY.c

@@ -365,7 +365,7 @@ void GP22_RegInit_UsWave1MHz(void)
 {
     // 630BE800
     GP22_REG[0] = GP22_CFG_KEEP_DEFAULT0
-        | GP22_CFG0_ANZ_FIRE_0 * 4          // 3-6 pulse
+        | GP22_CFG0_ANZ_FIRE_0 * 2          // 3-6 pulse
         | GP22_CFG0_DIV_FIRE_0 * 3          // 0CLK | 3FIRE 1MHz pulse
         | GP22_CFG0_ANZ_PER_CALRES_0 * GP22_CLKHS_PERIOD
         | GP22_CFG0_DIV_CLKHS_0 * GP22_CLKHS_DIV
@@ -410,7 +410,7 @@ void GP22_RegInit_UsWave1MHz(void)
         | GP22_Ids[3];
     // 200000F4
     GP22_REG[4] = GP22_CFG_KEEP_DEFAULT4
-        | GP22_CFG4FW_DIS_PW * 0            // 1: disable
+        | GP22_CFG4FW_DIS_PW * 1            // 1: disable
         | GP22_CFG4FW_OFFSRNG1 * (((uint16_t)offsetValue % 10) & 0x01)
         | GP22_CFG4FW_OFFSRNG2 * (((uint16_t)offsetValue % 10) & 0x02)
         | GP22_CFG4FW_EDGE_FW * (((uint16_t)offsetValue % 10) & 0x04)

+ 0 - 2
HW_ADC_ATY.c

@@ -40,8 +40,6 @@ void ADC_Init(void)
 #ifndef ADCTIM
 #define ADCTIM  (*(unsigned char volatile xdata *)0xfea8)
 #endif
-    P0M0 &= 0xF0;               // ADC IO P00 P01 P02 P03
-    P0M1 |= 0x0F;               // ADC IO P00 P01 P02 P03
     P_SW2 |= 0x80;              // change reg sfr
     ADCTIM = 0x3F;              // set ADC internal timing sequence
     P_SW2 &= 0x7F;              // stop change reg sfr

+ 1 - 1
KEY_ATY.c

@@ -32,7 +32,7 @@
 #include "KEY_ATY.h"
 
 /******************************* For user *************************************/
-uint8_t KEY_PIN_GROUP[MAX_KEY_NUMBER] = {0x01 << 7, 0x01 << 6, 0x01 << 5};
+uint8_t KEY_PIN_GROUP[MAX_KEY_NUMBER] = {0x01 << 0, 0x01 << 7, 0x01 << 6};
 uint8_t KEY_PIN_GROUP_AD[MAX_KEY_NUMBER] = {9, 0, 0};
 
 /******************************************************************************/

+ 6 - 6
MOTOR_STEP_ATY.h

@@ -79,12 +79,12 @@ extern uint8_t motorSetState;           // 0: stop, 1: start hold, 2: start soft
 #define MOTOR_PARAM_SET(dir, softSpeed, speed, softTime, time, setState) \
     do \
     { \
-        motorDir = dir; \
-        motorSoftSpeed = softSpeed; \
-        motorSpeed = speed; \
-        motorSoftTime = softTime; \
-        motorTime = time; \
-        motorSetState = setState; \
+        motorDir = (uint8_t)dir; \
+        motorSoftSpeed = (uint32_t)softSpeed; \
+        motorSpeed = (uint32_t)speed; \
+        motorSoftTime = (uint32_t)softTime; \
+        motorTime = (uint32_t)time; \
+        motorSetState = (uint8_t)setState; \
     } while(0)
 
 

+ 18 - 1
Web/PROG_Base.js

@@ -46,7 +46,24 @@ function float2hex(num) {
 }
 
 function roundFun(value, n) {
-    return Math.round(value * Math.pow(10, n)) / Math.pow(10, n);
+    if (value == 0 || value == undefined || value == null || value < 1e-10) {
+        let num = "0.";
+        num = num.padEnd(n + 2, "0");
+        return num;
+    }
+    else {
+        let num = Math.round(value * Math.pow(10, n)) / Math.pow(10, n);
+        num = num.toString().split(".");
+        if (num[1]) {
+            num[1] = num[1].padEnd(n, "0");
+            return (num[0] + "." + num[1]);
+        }
+        else {
+            num += ".";
+            num = num.padEnd(num.length + n, "0");
+            return num;
+        }
+    }
 }
 
 function FillString(t, c, n, b) {