mirror of
https://git.intern.spaceteamaachen.de/ALPAKA/TACOS.git
synced 2025-06-12 01:25:59 +00:00
More compact tick events implementation
This commit is contained in:
parent
eff30234c5
commit
39c88c8129
@ -37,17 +37,16 @@ namespace sta
|
|||||||
{
|
{
|
||||||
enum class Types : uint32_t
|
enum class Types : uint32_t
|
||||||
{
|
{
|
||||||
STARTUP = 0x01,
|
STARTUP = (0x01 << 0x00),
|
||||||
TICK_100Hz = 0x02,
|
TICK_100Hz = (0x01 << 0x01),
|
||||||
TOCK_100Hz = 0x03,
|
TICK_50Hz = (0x01 << 0x02),
|
||||||
TICK_50Hz = 0x04,
|
TOCK_50Hz = (0x01 << 0x03),
|
||||||
TOCK_50Hz = 0x05,
|
TICK_20Hz = (0x01 << 0x04),
|
||||||
TICK_20Hz = 0x06,
|
TOCK_20Hz = (0x01 << 0x05),
|
||||||
TOCK_20Hz = 0x07,
|
TICK_10Hz = (0x01 << 0x06),
|
||||||
TICK_10Hz = 0x08,
|
TOCK_10Hz = (0x01 << 0x07),
|
||||||
TOCK_10Hz = 0x09,
|
TICK_1Hz = (0x01 << 0x08),
|
||||||
TICK_1Hz = 0x0A,
|
TOCK_1Hz = (0x01 << 0x09)
|
||||||
TOCK_1Hz = 0x0B
|
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -13,10 +13,10 @@ namespace
|
|||||||
// Event handle
|
// Event handle
|
||||||
sta::RtosEvent * systemEvents = nullptr;
|
sta::RtosEvent * systemEvents = nullptr;
|
||||||
|
|
||||||
uint8_t tickCounter = 0;
|
|
||||||
|
|
||||||
// Tick timer handle
|
// Tick timer handle
|
||||||
sta::RtosTimer * tickTimer = nullptr;
|
sta::RtosTimer * tickTimer = nullptr;
|
||||||
|
|
||||||
|
uint8_t tickCounter = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -38,49 +38,36 @@ namespace sta
|
|||||||
tickTimer = new sta::RtosTimer([]() {
|
tickTimer = new sta::RtosTimer([]() {
|
||||||
uint32_t flags = 0x00;
|
uint32_t flags = 0x00;
|
||||||
|
|
||||||
if (tickCounter % 2 == 0)
|
flags |= Types::TICK_100Hz;
|
||||||
{
|
|
||||||
flags |= Types::TICK_100Hz;
|
|
||||||
|
|
||||||
if ((tickCounter / 2) % 2 == 0) {
|
if (tickCounter % 20 == 0) {
|
||||||
flags |= Types::TICK_50Hz;
|
flags |= Types::TICK_50Hz;
|
||||||
}
|
} else {
|
||||||
else
|
flags |= Types::TOCK_50Hz;
|
||||||
{
|
|
||||||
flags |= Types::TOCK_50Hz;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (tickCounter % 10 == 0 && ((tickCounter / 10) % 2) == 0)
|
|
||||||
{
|
|
||||||
flags |= Types::TICK_10Hz;
|
|
||||||
}
|
|
||||||
else if (tickCounter % 10 == 0 && (tickCounter / 10) == 1) {
|
|
||||||
flags |= Types::TOCK_10Hz;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (tickCounter % 100 == 0 && (tickCounter / 100) % 2 == 0) {
|
|
||||||
flags |= Types::TICK_1Hz;
|
|
||||||
}
|
|
||||||
else if (tickCounter % 100 == 0 && (tickCounter / 100) == 1) {
|
|
||||||
flags |= Types::TOCK_1Hz;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
flags |= Types::TOCK_100Hz;
|
|
||||||
|
|
||||||
if (tickCounter % 5 == 0 && ((tickCounter / 5) % 2) == 0)
|
|
||||||
{
|
|
||||||
flags |= Types::TICK_20Hz;
|
|
||||||
}
|
|
||||||
else if (tickCounter % 5 == 0 && (tickCounter / 5) == 1) {
|
|
||||||
flags |= Types::TOCK_20Hz;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
tickCounter = ++tickCounter % 200;
|
if (tickCounter % 50 == 0) {
|
||||||
|
flags |= Types::TICK_20Hz;
|
||||||
|
} else if (tickCounter % 25 == 0) {
|
||||||
|
flags |= Types::TOCK_20Hz;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (tickCounter % 100) {
|
||||||
|
flags |= Types::TICK_10Hz;
|
||||||
|
} else if (tickCounter % 50 == 0) {
|
||||||
|
flags |= Types::TOCK_10Hz;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (tickCounter % 1000) {
|
||||||
|
flags |= Types::TICK_1Hz;
|
||||||
|
} else if (tickCounter % 500 == 0) {
|
||||||
|
flags |= Types::TOCK_1Hz;
|
||||||
|
}
|
||||||
|
|
||||||
|
tickCounter = (tickCounter + 10) % 1000;
|
||||||
|
|
||||||
signal(flags);
|
signal(flags);
|
||||||
|
systemEvents->clear(0xFFFFFFFF);
|
||||||
}, true);
|
}, true);
|
||||||
|
|
||||||
tickTimer->start(10);
|
tickTimer->start(10);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user