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