Program Listing for File btn99x0_half_bridge.hpp¶
↰ Return to documentation for file (src/btn99x0_half_bridge.hpp)
#ifndef BTN99X0_HALF_BRIDGE_HPP_
#define BTN99X0_HALF_BRIDGE_HPP_
#include "Arduino.h"
#include "btn99x0_types.hpp"
namespace btn99x0
{
class HalfBridge
{
public:
HalfBridge(ic_variant_t ic_variant, io_pins_t io_pins, hw_conf_t hw_conf);
~HalfBridge();
/* Control */
void begin();
void disable();
void enable();
/* Configuration */
void set_pwm(uint8_t duty);
void set_pwm_in_percentage(uint8_t duty_in_pct);
error_t set_slew_rate(slew_rate_level_t sr_level);
/* Experimental value setting */
void set_ktis(float ktis_amps_per_kelvin);
void set_dk(uint16_t dk);
/* Diagnosis */
double get_load_current_in_amps();
double get_temperature_in_kelvin();
error_t get_diagnosis();
private:
static constexpr float fault_current_amps = 0.00251;
static const ic_experimental_const_t btn9970lv_typical_exp_const;
static const ic_experimental_const_t btn9990lv_typical_exp_const;
io_pins_t io_pins;
ic_experimental_const_t exp_const;
hw_conf_t hw_conf;
/* Inhibit value tracking for special functions state machine */
uint8_t inhibit_pin_value;
void set_inhibit_pin(uint8_t value);
double calculate_current_at_sense_resistor_in_amps();
void calculate_sense_resistor_offset_current();
ic_experimental_const_t get_typical_experimental_constants(ic_variant_t ic_variant);
};
}
#endif /* BTN99X0_HALF_BRIDGE_HPP_ */