cfg-lexel_2S.h
// Lexel 2S config options for Anduril
#include "hwdef-Lexel_2S.h"
// ../../bin/level_calc.py 1 65 7135 1 0.8 150
// ... mixed with this:
// ../../bin/level_calc.py 2 150 7135 4 0.33 150 FET 1 10 1500
#define RAMP_LENGTH 150
#define PWM1_LEVELS 1,1,2,2,3,3,4,4,5,6,7,8,9,10,12,13,14,15,17,19,20,22,24,26,29,31,34,36,39,42,45,48,51,55,59,62,66,70,75,79,84,89,93,99,104,110,115,121,127,134,140,147,154,161,168,176,184,192,200,209,217,226,236,245,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,0
#define PWM2_LEVELS 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,3,4,5,7,8,9,11,12,14,15,17,19,20,22,24,25,27,29,31,33,35,37,39,41,43,45,48,50,52,55,57,59,62,64,67,70,72,75,78,81,84,87,90,93,96,99,102,105,109,112,115,119,122,126,129,133,137,141,144,148,152,156,160,165,169,173,177,182,186,191,195,200,205,209,214,219,224,229,234,239,244,250,255
#define MAX_1x7135 65
This file has been truncated. show original
fsm-adc.c
static inline uint8_t calc_voltage_divider(uint16_t value) {
// use 10.6 fixed-point to get sufficient precision
uint16_t adc_per_volt = ((ADC_44<<6) - (ADC_22<<6)) / (44-22);
// incoming value is a 10-bit ADC reading (0..1024 = 0..1.1V), so shift it to match
uint8_t result = ((value<<6) / adc_per_volt) + VOLTAGE_FUDGE_FACTOR;
return result;
}
hwdef-Lexel_2S.h
#ifndef HWDEF_LEXEL_2S_H
#define HWDEF_LEXEL_2S_H
/* Lexel 2S Fet+1 driver layout
* ----
* Reset - PB5 |1 8|- VCC
* eswitch - PB3 |2 7|- PB2 - Voltage divider
* PB4 |3 6|- PB1 - FET
* GND -|4 5|- PB0 - 1x7135
* ----
This file has been truncated. show original