9 changed files with 218 additions and 201 deletions
-
15.cproject
-
4.settings/language.settings.xml
-
2sdk/chip/zgpio.cpp
-
340sdk/components/tmc/helpers/Functions.c
-
36sdk/components/tmc/helpers/Functions.h
-
2usrc/subboards/subboard90_optical_module/optical_module_v2.cpp
-
14usrc/sysmgr/sys_mgr.cpp
-
4usrc/sysmgr/sys_mgr.hpp
-
2usrc/version.h
@ -1,170 +1,170 @@ |
|||
/* |
|||
* Functions.c |
|||
* |
|||
* Created on: 23.07.2018 |
|||
* Author: ed |
|||
*/ |
|||
#include "Functions.h" |
|||
|
|||
int32_t tmc_limitInt(int32_t value, int32_t min, int32_t max) |
|||
{ |
|||
if (value > max) |
|||
return max; |
|||
else if (value < min) |
|||
return min; |
|||
else |
|||
return value; |
|||
} |
|||
|
|||
int64_t tmc_limitS64(int64_t value, int64_t min, int64_t max) |
|||
{ |
|||
if (value > max) |
|||
return max; |
|||
else if (value < min) |
|||
return min; |
|||
else |
|||
return value; |
|||
} |
|||
|
|||
/* lookup table for square root function */ |
|||
static const unsigned char sqrttable[256] = |
|||
{ |
|||
0, 16, 22, 27, 32, 35, 39, 42, 45, 48, 50, 53, 55, 57, 59, 61, |
|||
64, 65, 67, 69, 71, 73, 75, 76, 78, 80, 81, 83, 84, 86, 87, 89, |
|||
90, 91, 93, 94, 96, 97, 98, 99, 101, 102, 103, 104, 106, 107, 108, 109, |
|||
110, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, |
|||
128, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, |
|||
143, 144, 144, 145, 146, 147, 148, 149, 150, 150, 151, 152, 153, 154, 155, 155, |
|||
156, 157, 158, 159, 160, 160, 161, 162, 163, 163, 164, 165, 166, 167, 167, 168, |
|||
169, 170, 170, 171, 172, 173, 173, 174, 175, 176, 176, 177, 178, 178, 179, 180, |
|||
181, 181, 182, 183, 183, 184, 185, 185, 186, 187, 187, 188, 189, 189, 190, 191, |
|||
192, 192, 193, 193, 194, 195, 195, 196, 197, 197, 198, 199, 199, 200, 201, 201, |
|||
202, 203, 203, 204, 204, 205, 206, 206, 207, 208, 208, 209, 209, 210, 211, 211, |
|||
212, 212, 213, 214, 214, 215, 215, 216, 217, 217, 218, 218, 219, 219, 220, 221, |
|||
221, 222, 222, 223, 224, 224, 225, 225, 226, 226, 227, 227, 228, 229, 229, 230, |
|||
230, 231, 231, 232, 232, 233, 234, 234, 235, 235, 236, 236, 237, 237, 238, 238, |
|||
239, 240, 240, 241, 241, 242, 242, 243, 243, 244, 244, 245, 245, 246, 246, 247, |
|||
247, 248, 248, 249, 249, 250, 250, 251, 251, 252, 252, 253, 253, 254, 254, 255 |
|||
}; |
|||
|
|||
int32_t tmc_sqrti(int32_t x) |
|||
{ |
|||
int32_t xn; |
|||
|
|||
// Negative parameter? |
|||
if (x < 0) |
|||
return -1; |
|||
|
|||
if (x < 0x0100) |
|||
return (int) sqrttable[x] >> 4; |
|||
|
|||
if (x >= 0x00010000) |
|||
{ |
|||
if (x >= 0x01000000) |
|||
{ |
|||
if (x >= 0x10000000) |
|||
{ |
|||
if (x >= 0x40000000) |
|||
{ |
|||
// 0x40000000 <= x < 0x7FFFFFFF |
|||
xn = (int) sqrttable[x >> 24] << 8; |
|||
} |
|||
else |
|||
{ |
|||
// 0x10000000 <= x < 0x40000000 |
|||
xn = (int) sqrttable[x >> 22] << 7; |
|||
} |
|||
} |
|||
else |
|||
{ |
|||
if (x >= 0x04000000) |
|||
{ |
|||
// 0x04000000 <= x < 0x10000000 |
|||
xn = (int) sqrttable[x >> 20] << 6; |
|||
} |
|||
else |
|||
{ |
|||
// 0x01000000 <= x < 0x04000000 |
|||
xn = (int) sqrttable[x >> 18] << 5; |
|||
} |
|||
} |
|||
|
|||
// Two steps of the babylonian method |
|||
xn = (xn + 1 + (x / xn)) >> 1; |
|||
xn = (xn + 1 + (x / xn)) >> 1; |
|||
} |
|||
else |
|||
{ |
|||
if (x >= 0x00100000) |
|||
{ |
|||
if (x >= 0x00400000) |
|||
{ |
|||
// 0x00400000 <= x < 0x01000000 |
|||
xn = (int) sqrttable[x >> 16] << 4; |
|||
} |
|||
else |
|||
{ |
|||
// 0x00100000 <= x < 0x00400000 |
|||
xn = (int) sqrttable[x >> 14] << 3; |
|||
} |
|||
} |
|||
else |
|||
{ |
|||
if (x >= 0x00040000) |
|||
{ |
|||
// 0x00040000 <= x < 0x00100000 |
|||
xn = (int) sqrttable[x >> 12] << 2; |
|||
} |
|||
else |
|||
{ |
|||
// 0x00010000 <= x < 0x00040000 |
|||
xn = (int) sqrttable[x >> 10] << 1; |
|||
} |
|||
} |
|||
|
|||
// One step of the babylonian method |
|||
xn = (xn + 1 + (x / xn)) >> 1; |
|||
} |
|||
} |
|||
else |
|||
{ |
|||
if (x >= 0x1000) |
|||
{ |
|||
if (x >= 0x4000) |
|||
{ |
|||
// 0x4000 <= x < 0x00010000 |
|||
xn = (int) (sqrttable[x >> 8] ) + 1; |
|||
} |
|||
else |
|||
{ |
|||
// 0x1000 <= x < 0x4000 |
|||
xn = (int) (sqrttable[x >> 6] >> 1) + 1; |
|||
} |
|||
} |
|||
else |
|||
{ |
|||
if (x >= 0x0400) |
|||
{ |
|||
// 0x0400 <= x < 0x1000 |
|||
xn = (int) (sqrttable[x >> 4] >> 2) + 1; |
|||
} |
|||
else |
|||
{ |
|||
// 0x0100 <= x < 0x0400 |
|||
xn = (int) (sqrttable[x >> 2] >> 3) + 1; |
|||
} |
|||
} |
|||
} |
|||
|
|||
// Make sure that our result is floored |
|||
if ((xn * xn) > x) |
|||
xn--; |
|||
|
|||
return xn; |
|||
} |
|||
|
|||
int32_t tmc_filterPT1(int64_t *akku, int32_t newValue, int32_t lastValue, uint8_t actualFilter, uint8_t maxFilter) |
|||
{ |
|||
*akku += (newValue-lastValue) << (maxFilter-actualFilter); |
|||
return *akku >> maxFilter; |
|||
} |
|||
///* |
|||
// * Functions.c |
|||
// * |
|||
// * Created on: 23.07.2018 |
|||
// * Author: ed |
|||
// */ |
|||
//#include "Functions.h" |
|||
// |
|||
//int32_t tmc_limitInt(int32_t value, int32_t min, int32_t max) |
|||
//{ |
|||
// if (value > max) |
|||
// return max; |
|||
// else if (value < min) |
|||
// return min; |
|||
// else |
|||
// return value; |
|||
//} |
|||
// |
|||
//int64_t tmc_limitS64(int64_t value, int64_t min, int64_t max) |
|||
//{ |
|||
// if (value > max) |
|||
// return max; |
|||
// else if (value < min) |
|||
// return min; |
|||
// else |
|||
// return value; |
|||
//} |
|||
// |
|||
///* lookup table for square root function */ |
|||
//static const unsigned char sqrttable[256] = |
|||
//{ |
|||
// 0, 16, 22, 27, 32, 35, 39, 42, 45, 48, 50, 53, 55, 57, 59, 61, |
|||
// 64, 65, 67, 69, 71, 73, 75, 76, 78, 80, 81, 83, 84, 86, 87, 89, |
|||
// 90, 91, 93, 94, 96, 97, 98, 99, 101, 102, 103, 104, 106, 107, 108, 109, |
|||
// 110, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, |
|||
// 128, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, |
|||
// 143, 144, 144, 145, 146, 147, 148, 149, 150, 150, 151, 152, 153, 154, 155, 155, |
|||
// 156, 157, 158, 159, 160, 160, 161, 162, 163, 163, 164, 165, 166, 167, 167, 168, |
|||
// 169, 170, 170, 171, 172, 173, 173, 174, 175, 176, 176, 177, 178, 178, 179, 180, |
|||
// 181, 181, 182, 183, 183, 184, 185, 185, 186, 187, 187, 188, 189, 189, 190, 191, |
|||
// 192, 192, 193, 193, 194, 195, 195, 196, 197, 197, 198, 199, 199, 200, 201, 201, |
|||
// 202, 203, 203, 204, 204, 205, 206, 206, 207, 208, 208, 209, 209, 210, 211, 211, |
|||
// 212, 212, 213, 214, 214, 215, 215, 216, 217, 217, 218, 218, 219, 219, 220, 221, |
|||
// 221, 222, 222, 223, 224, 224, 225, 225, 226, 226, 227, 227, 228, 229, 229, 230, |
|||
// 230, 231, 231, 232, 232, 233, 234, 234, 235, 235, 236, 236, 237, 237, 238, 238, |
|||
// 239, 240, 240, 241, 241, 242, 242, 243, 243, 244, 244, 245, 245, 246, 246, 247, |
|||
// 247, 248, 248, 249, 249, 250, 250, 251, 251, 252, 252, 253, 253, 254, 254, 255 |
|||
//}; |
|||
// |
|||
//int32_t tmc_sqrti(int32_t x) |
|||
//{ |
|||
// int32_t xn; |
|||
// |
|||
// // Negative parameter? |
|||
// if (x < 0) |
|||
// return -1; |
|||
// |
|||
// if (x < 0x0100) |
|||
// return (int) sqrttable[x] >> 4; |
|||
// |
|||
// if (x >= 0x00010000) |
|||
// { |
|||
// if (x >= 0x01000000) |
|||
// { |
|||
// if (x >= 0x10000000) |
|||
// { |
|||
// if (x >= 0x40000000) |
|||
// { |
|||
// // 0x40000000 <= x < 0x7FFFFFFF |
|||
// xn = (int) sqrttable[x >> 24] << 8; |
|||
// } |
|||
// else |
|||
// { |
|||
// // 0x10000000 <= x < 0x40000000 |
|||
// xn = (int) sqrttable[x >> 22] << 7; |
|||
// } |
|||
// } |
|||
// else |
|||
// { |
|||
// if (x >= 0x04000000) |
|||
// { |
|||
// // 0x04000000 <= x < 0x10000000 |
|||
// xn = (int) sqrttable[x >> 20] << 6; |
|||
// } |
|||
// else |
|||
// { |
|||
// // 0x01000000 <= x < 0x04000000 |
|||
// xn = (int) sqrttable[x >> 18] << 5; |
|||
// } |
|||
// } |
|||
// |
|||
// // Two steps of the babylonian method |
|||
// xn = (xn + 1 + (x / xn)) >> 1; |
|||
// xn = (xn + 1 + (x / xn)) >> 1; |
|||
// } |
|||
// else |
|||
// { |
|||
// if (x >= 0x00100000) |
|||
// { |
|||
// if (x >= 0x00400000) |
|||
// { |
|||
// // 0x00400000 <= x < 0x01000000 |
|||
// xn = (int) sqrttable[x >> 16] << 4; |
|||
// } |
|||
// else |
|||
// { |
|||
// // 0x00100000 <= x < 0x00400000 |
|||
// xn = (int) sqrttable[x >> 14] << 3; |
|||
// } |
|||
// } |
|||
// else |
|||
// { |
|||
// if (x >= 0x00040000) |
|||
// { |
|||
// // 0x00040000 <= x < 0x00100000 |
|||
// xn = (int) sqrttable[x >> 12] << 2; |
|||
// } |
|||
// else |
|||
// { |
|||
// // 0x00010000 <= x < 0x00040000 |
|||
// xn = (int) sqrttable[x >> 10] << 1; |
|||
// } |
|||
// } |
|||
// |
|||
// // One step of the babylonian method |
|||
// xn = (xn + 1 + (x / xn)) >> 1; |
|||
// } |
|||
// } |
|||
// else |
|||
// { |
|||
// if (x >= 0x1000) |
|||
// { |
|||
// if (x >= 0x4000) |
|||
// { |
|||
// // 0x4000 <= x < 0x00010000 |
|||
// xn = (int) (sqrttable[x >> 8] ) + 1; |
|||
// } |
|||
// else |
|||
// { |
|||
// // 0x1000 <= x < 0x4000 |
|||
// xn = (int) (sqrttable[x >> 6] >> 1) + 1; |
|||
// } |
|||
// } |
|||
// else |
|||
// { |
|||
// if (x >= 0x0400) |
|||
// { |
|||
// // 0x0400 <= x < 0x1000 |
|||
// xn = (int) (sqrttable[x >> 4] >> 2) + 1; |
|||
// } |
|||
// else |
|||
// { |
|||
// // 0x0100 <= x < 0x0400 |
|||
// xn = (int) (sqrttable[x >> 2] >> 3) + 1; |
|||
// } |
|||
// } |
|||
// } |
|||
// |
|||
// // Make sure that our result is floored |
|||
// if ((xn * xn) > x) |
|||
// xn--; |
|||
// |
|||
// return xn; |
|||
//} |
|||
// |
|||
//int32_t tmc_filterPT1(int64_t *akku, int32_t newValue, int32_t lastValue, uint8_t actualFilter, uint8_t maxFilter) |
|||
//{ |
|||
// *akku += (newValue-lastValue) << (maxFilter-actualFilter); |
|||
// return *akku >> maxFilter; |
|||
//} |
@ -1,18 +1,18 @@ |
|||
/* |
|||
* Functions.h |
|||
* |
|||
* Created on: 23.07.2018 |
|||
* Author: ed |
|||
*/ |
|||
|
|||
#ifndef TMC_FUNCTIONS_H_ |
|||
#define TMC_FUNCTIONS_H_ |
|||
|
|||
#include "API_Header.h" |
|||
|
|||
int32_t tmc_limitInt(int32_t value, int32_t min, int32_t max); |
|||
int64_t tmc_limitS64(int64_t value, int64_t min, int64_t max); |
|||
int32_t tmc_sqrti(int32_t x); |
|||
int32_t tmc_filterPT1(int64_t *akku, int32_t newValue, int32_t lastValue, uint8_t actualFilter, uint8_t maxFilter); |
|||
|
|||
#endif /* TMC_FUNCTIONS_H_ */ |
|||
///* |
|||
// * Functions.h |
|||
// * |
|||
// * Created on: 23.07.2018 |
|||
// * Author: ed |
|||
// */ |
|||
// |
|||
//#ifndef TMC_FUNCTIONS_H_ |
|||
//#define TMC_FUNCTIONS_H_ |
|||
// |
|||
//#include "API_Header.h" |
|||
// |
|||
//int32_t tmc_limitInt(int32_t value, int32_t min, int32_t max); |
|||
//int64_t tmc_limitS64(int64_t value, int64_t min, int64_t max); |
|||
//int32_t tmc_sqrti(int32_t x); |
|||
//int32_t tmc_filterPT1(int64_t *akku, int32_t newValue, int32_t lastValue, uint8_t actualFilter, uint8_t maxFilter); |
|||
// |
|||
//#endif /* TMC_FUNCTIONS_H_ */ |
@ -1,2 +1,2 @@ |
|||
#pragma once |
|||
#define APP_VERSION 1024 |
|||
#define APP_VERSION 1025 |
Write
Preview
Loading…
Cancel
Save
Reference in new issue