This commit is contained in:
2026-06-03 11:44:27 +02:00
4 changed files with 16 additions and 7 deletions

View File

@@ -6,17 +6,17 @@
#include <ring_buffer.h>
#include <stdbool.h>
void ringBufferPush(ring_buffer_t *rb, uint32_t value) {
void ringBufferPush(volatile ring_buffer_t *rb, uint32_t value) {
rb->buffer[rb->w_head] = value;
rb->w_head++;
return;
}
uint32_t ringBufferRead(ring_buffer_t *rb, uint8_t idx) {
return rb->buffer[rb->w_head - 1 - idx];
uint32_t ringBufferRead(volatile ring_buffer_t *rb, uint8_t neg_idx) {
return rb->buffer[rb->w_head - 1 - neg_idx];
}
void ringBufferRevert(ring_buffer_t *rb, uint8_t val) {
void ringBufferRevert(volatile ring_buffer_t *rb, uint8_t val) {
rb->w_head -= val;
return;
}

View File

@@ -8,6 +8,7 @@
#include "main.h"
#include "ring_buffer.h"
#include "tasks.h"
#include <stdint.h>
void crankHandler(void *argument) {
for (;;) {
@@ -59,6 +60,13 @@ void crankHandler(void *argument) {
if (state_g.crank_state == CYCLE_COMPRESSION &&
state_g.sync_state == SYNC_OK) {
DEBUG_LOG("Spark schedule reached, congrats\n\r");
uint32_t t_now = ringBufferRead(&state_g.crank_RB, 0);
uint32_t t_prev = ringBufferRead(&state_g.crank_RB, 1);
uint32_t d1a = t_now - t_prev;
// TODO: Map interpolation rather than SPARK_ADVANCE CONSTANT
uint32_t d_spark = d1a * (45 - SPARK_ADVANCE) / 180;
uint32_t t_spark = t_now + d_spark;
// TODO: schedule spark
}
}