fix clangd and comments
This commit is contained in:
2
.clangd
2
.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"
|
||||
|
||||
@@ -6,12 +6,12 @@
|
||||
* https://github.com/dennis9819/splitflap_v1
|
||||
*/
|
||||
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include <avr/io.h>
|
||||
#include <avr/wdt.h>
|
||||
#include <avr/interrupt.h>
|
||||
#include <util/delay.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include <avr/iom8.h>
|
||||
|
||||
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -8,7 +8,8 @@
|
||||
|
||||
#include "rs485.h"
|
||||
|
||||
void rs485_init() {
|
||||
void rs485_init()
|
||||
{
|
||||
// init I/O
|
||||
DDRD &= ~(1 << PD0); // BUS_DIR & TX is OUTPUT
|
||||
DDRD |= (1 << PD2) | (1 << PD1); // BUS_DIR & TX is OUTPUT
|
||||
@@ -20,71 +21,84 @@ void rs485_init() {
|
||||
UCSRC |= (1 << URSEL) | (1 << UCSZ0) | (1 << UCSZ1); // 8bit data format
|
||||
}
|
||||
|
||||
void dbg(char data) {
|
||||
void dbg(char data)
|
||||
{
|
||||
while (!(UCSRA & (1 << UDRE)))
|
||||
;
|
||||
UDR = data;
|
||||
}
|
||||
|
||||
|
||||
|
||||
void rs485_send_c(char 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
|
||||
{
|
||||
}; // 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++) {
|
||||
void rs485_send_str(char *data)
|
||||
{
|
||||
for (unsigned int i = 0; i < sizeof(data); i++)
|
||||
{
|
||||
rs485_send_c(data[i]);
|
||||
}
|
||||
}
|
||||
|
||||
char rs485_recv_c() {
|
||||
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;
|
||||
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;
|
||||
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++) {
|
||||
for (uint8_t i = 0; i < (frm_length - 3); i++)
|
||||
{
|
||||
*_payload = rs485_recv_c();
|
||||
_payload++;
|
||||
}
|
||||
|
||||
if (rs485_recv_c() != '$') return -1;
|
||||
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((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
|
||||
while (framelen > 0)
|
||||
{ // send payload
|
||||
rs485_send_c(*payload);
|
||||
payload++;
|
||||
framelen--;
|
||||
|
||||
Reference in New Issue
Block a user