From c5a0d59f36d945fa15e3f55df0f79c640c620bfa Mon Sep 17 00:00:00 2001 From: dennisgunia Date: Fri, 21 Feb 2025 10:55:45 +0100 Subject: [PATCH] fix clangd and comments --- .clangd | 2 +- .../firmware_module/module_rev0/src/global.h | 4 +- .../firmware_module/module_rev0/src/mctrl.c | 19 +-- .../firmware_module/module_rev0/src/mctrl.h | 2 +- .../firmware_module/module_rev0/src/rs458.c | 138 ++++++++++-------- 5 files changed, 87 insertions(+), 78 deletions(-) diff --git a/.clangd b/.clangd index ce466fa..0216f2c 100644 --- a/.clangd +++ b/.clangd @@ -2,4 +2,4 @@ CompileFlags: Add: - "-I/home/dennisgunia/.arduino15/packages/arduino/tools/avr-gcc/7.3.0-atmel3.6.1-arduino7/avr/include/" - - "-I" + - "-I/home/dennisgunia/.config/VSCodium/User/globalStorage/llvm-vs-code-extensions.vscode-clangd/install/19.1.2/clangd_19.1.2/lib/clang/19/include/stddef.h" diff --git a/software/firmware_module/module_rev0/src/global.h b/software/firmware_module/module_rev0/src/global.h index 583d6d9..fd94703 100644 --- a/software/firmware_module/module_rev0/src/global.h +++ b/software/firmware_module/module_rev0/src/global.h @@ -6,12 +6,12 @@ * https://github.com/dennis9819/splitflap_v1 */ +#include +#include #include #include #include #include -#include -#include #include diff --git a/software/firmware_module/module_rev0/src/mctrl.c b/software/firmware_module/module_rev0/src/mctrl.c index 87bfd2c..74b0dc7 100644 --- a/software/firmware_module/module_rev0/src/mctrl.c +++ b/software/firmware_module/module_rev0/src/mctrl.c @@ -20,7 +20,6 @@ uint8_t motor_steps[4] = { uint8_t step_index = 0; // cuurent index in motor_steps uint8_t target_flap = 0; // target flap uint16_t absolute_pos = 0; // absolute position in steps -uint16_t rel_offset = STEPS_OFFSET; // offset of '0' flap relative to home uint16_t steps_since_home = 0; // steps since last home signal // homing util variables @@ -31,7 +30,7 @@ uint8_t lastSens = 0; // home sonsor signal from last tick uint8_t ticksSinceMove = 0; // value to goto after the current target_flap is reached. 255 = NONE. -uint8_t afterRotation = 255; +uint8_t afterRotation = STEPS_AFTERROT; int16_t *delta_err; @@ -133,16 +132,16 @@ ISR(TIMER1_COMPA_vect) { homing = 3; steps_since_home = 0; - absolute_pos = rel_offset; + absolute_pos = STEPS_OFFSET; incrementCounter(); } } else if (homing == 3) - { // Homing procedure 3. step: find magnet + { // Homing procedure 3. step: apply offset if (absolute_pos <= 0) { homing = 0; - absolute_pos = rel_offset; + absolute_pos = STEPS_OFFSET; // set correct position again } mctrl_step(); absolute_pos--; @@ -150,7 +149,7 @@ ISR(TIMER1_COMPA_vect) else { // when no failsafe is triggered and homing is done // calculate target position - uint16_t target_pos = (target_flap * STEPS_PER_FLAP) + rel_offset; + uint16_t target_pos = (target_flap * STEPS_PER_FLAP) + STEPS_OFFSET; if (target_pos >= STEPS_PER_REV) { target_pos -= STEPS_PER_REV; @@ -192,7 +191,7 @@ ISR(TIMER1_COMPA_vect) if (afterRotation < (STEPS_PER_FLAP + 5)) { // if after rotation is set, apply it as new target target_flap = afterRotation; - afterRotation = 255; + afterRotation = STEPS_AFTERROT; } else if (ticksSinceMove < 2) { // if motor has not been moved @@ -255,10 +254,6 @@ void mctrl_set(uint8_t flap, uint8_t fullRotation) if (fullRotation == 0) { target_flap = flap; - // if (absolute_pos < STEPS_ADJ) { - // absolute_pos += STEPS_PER_REV; - // } - // absolute_pos -= STEPS_ADJ; } else { @@ -273,7 +268,7 @@ void mctrl_home() homing = 1; } -// trigger home procedure +// change motor power state void mctrl_power(uint8_t state) { if (state == 0) diff --git a/software/firmware_module/module_rev0/src/mctrl.h b/software/firmware_module/module_rev0/src/mctrl.h index e633370..03fc63d 100644 --- a/software/firmware_module/module_rev0/src/mctrl.h +++ b/software/firmware_module/module_rev0/src/mctrl.h @@ -17,7 +17,7 @@ #define STEPS_ADJ 0 // added per flap to compensate for motor power down #define STEPS_OFFSET 1400 // ansolute offset between home and first flap #define AMOUNTFLAPS 45 // amount of flaps installed in system - +#define STEPS_AFTERROT 255 // value to goto after current target flap is reached #define ERROR_DATASETS 8 // length of error array #define MDELAY_STARTUP 1000 // delay to wait after motor startup diff --git a/software/firmware_module/module_rev0/src/rs458.c b/software/firmware_module/module_rev0/src/rs458.c index 3682bf5..908574e 100644 --- a/software/firmware_module/module_rev0/src/rs458.c +++ b/software/firmware_module/module_rev0/src/rs458.c @@ -8,87 +8,101 @@ #include "rs485.h" -void rs485_init() { - // init I/O - DDRD &= ~(1 << PD0); // BUS_DIR & TX is OUTPUT - DDRD |= (1 << PD2) | (1 << PD1); // BUS_DIR & TX is OUTPUT - PORTD &= 0x07; // clear PD0-PD4 - // init UART - UBRRH = (BAUDRATE >> 8); - UBRRL = BAUDRATE; // set baud rate - UCSRB |= (1 << TXEN) | (1 << RXEN); // enable receiver and transmitter - UCSRC |= (1 << URSEL) | (1 << UCSZ0) | (1 << UCSZ1); // 8bit data format +void rs485_init() +{ + // init I/O + DDRD &= ~(1 << PD0); // BUS_DIR & TX is OUTPUT + DDRD |= (1 << PD2) | (1 << PD1); // BUS_DIR & TX is OUTPUT + PORTD &= 0x07; // clear PD0-PD4 + // init UART + UBRRH = (BAUDRATE >> 8); + UBRRL = BAUDRATE; // set baud rate + UCSRB |= (1 << TXEN) | (1 << RXEN); // enable receiver and transmitter + UCSRC |= (1 << URSEL) | (1 << UCSZ0) | (1 << UCSZ1); // 8bit data format } -void dbg(char data) { - while (!(UCSRA & (1 << UDRE))) - ; - UDR = data; +void dbg(char data) +{ + while (!(UCSRA & (1 << UDRE))) + ; + UDR = data; } - -void rs485_send_c(char data) { - PORTD |= (1 << PD2); // set transciever to transmitt - while (!(UCSRA & (1 << UDRE))) - ; // wait until buffer is empty - UCSRA = (1 << TXC); // clear transmit Complete bit - UDR = data; - while (!(UCSRA & (1 << TXC))) - ; // wait until transmitt complete - PORTD &= ~(1 << PD2); // set transciever to transmitt +void rs485_send_c(char data) +{ + PORTD |= (1 << PD2); // set transciever to transmitt + while (!(UCSRA & (1 << UDRE))) + ; // wait until buffer is empty + UCSRA = (1 << TXC); // clear transmit Complete bit + UDR = data; + while (!(UCSRA & (1 << TXC))) + { + }; // wait until transmitt complete + PORTD &= ~(1 << PD2); // set transciever to transmitt } -void rs485_send_str(char* data) { - for (unsigned int i = 0; i < sizeof(data); i++) { - rs485_send_c(data[i]); - } +void rs485_send_str(char *data) +{ + for (unsigned int i = 0; i < sizeof(data); i++) + { + rs485_send_c(data[i]); + } } -char rs485_recv_c() { - while (!(UCSRA & (1 << RXC))) - ; - ; // wait while data is being received - return UDR; +char rs485_recv_c() +{ + while (!(UCSRA & (1 << RXC))) + ; // wait while data is being received + return UDR; } // SFBUS Functions -uint8_t sfbus_recv_frame(uint16_t address, char* payload) { - while (rs485_recv_c() != '+') {} // Wwait for start byte +uint8_t sfbus_recv_frame(uint16_t address, char *payload) +{ + while (rs485_recv_c() != SFBUS_SOF_BYTE) + { + } // Wwait for start byte - uint8_t frm_version = rs485_recv_c(); - if (frm_version != 0) return 0; - uint8_t frm_length = rs485_recv_c(); - uint8_t frm_addrL = rs485_recv_c(); - uint8_t frm_addrH = rs485_recv_c(); + uint8_t frm_version = rs485_recv_c(); + if (frm_version != 0) + return 0; + uint8_t frm_length = rs485_recv_c(); + uint8_t frm_addrL = rs485_recv_c(); + uint8_t frm_addrH = rs485_recv_c(); - uint16_t frm_addr = frm_addrL | (frm_addrH << 8); - if (frm_addr != address) return 0; - char* _payload = payload; - for (uint8_t i = 0; i < (frm_length - 3); i++) { - *_payload = rs485_recv_c(); - _payload++; - } + uint16_t frm_addr = frm_addrL | (frm_addrH << SHIFT_1B); + if (frm_addr != address) + return 0; + char *_payload = payload; + for (uint8_t i = 0; i < (frm_length - 3); i++) + { + *_payload = rs485_recv_c(); + _payload++; + } - if (rs485_recv_c() != '$') return -1; - return frm_length; + if (rs485_recv_c() != SFBUS_EOF_BYTE) + return -1; + return frm_length; } -void sfbus_send_frame(uint16_t address, char* payload, uint8_t length) { - char framelen = length; +void sfbus_send_frame(uint16_t address, char *payload, uint8_t length) +{ + uint8_t framelen = length; - rs485_send_c(SFBUS_SOF_BYTE); // send startbyte 3 times - rs485_send_c(0); // send protocol version - rs485_send_c(framelen + 3); // send lentgh of remaining frame + rs485_send_c(SFBUS_SOF_BYTE); // send startbyte 3 times + rs485_send_c(0); // send protocol version + rs485_send_c((char)(framelen + 3)); // send lentgh of remaining frame - rs485_send_c(address & 0xFF); // target address - rs485_send_c((address >> 8) & 0xFF); + rs485_send_c((char)(address & 0xFF)); // target address + rs485_send_c((char)((address >> SHIFT_1B) & 0xFF)); - while (framelen > 0) { // send payload - rs485_send_c(*payload); - payload++; - framelen--; - } + while (framelen > 0) + { // send payload + rs485_send_c(*payload); + payload++; + framelen--; + } - rs485_send_c(SFBUS_EOF_BYTE); // send end of frame byte + rs485_send_c(SFBUS_EOF_BYTE); // send end of frame byte }