REDAC HybridController
Firmware for LUCIDAC/REDAC Teensy
Loading...
Searching...
No Matches
mblock_int.h
Go to the documentation of this file.
1// Copyright (c) 2024 anabrid GmbH
2// Contact: https://www.anabrid.com/licensing/
3// SPDX-License-Identifier: MIT OR GPL-2.0-or-later
4
5#include <algorithm>
6#include <bitset>
7
8#include <block/mblock_int.h>
9
10#include <chips/AD840X.h>
11#include <chips/DAC60508.h>
12#include <chips/SR74HC16X.h>
13#include <chips/SR74HCT595.h>
14#include <entity/hardware.h>
15
16namespace blocks {
17
19
21protected:
28
29public:
30 explicit MIntBlockHAL_V_1_0_X(bus::addr_t block_address);
31
32 bool init() override;
33
34 bool write_ic(uint8_t idx, float ic) override;
35 bool write_time_factor_switches(std::bitset<8> switches) override;
36
37 std::bitset<8> read_overload_flags() override;
38 void reset_overload_flags() override;
39
40};
41
43protected:
46
47public:
48 explicit MIntBlockHAL_V_1_1_X(bus::addr_t block_address);
49
50 bool write_ic(uint8_t idx, float ic) override;
51 bool write_time_factor_switches(std::bitset<8> switches) override;
52
53 virtual bool write_limiters_enable(std::bitset<8> limiters);
54 virtual bool write_time_factor_switches_and_limiters_enable(std::bitset<8> switches,
55 std::bitset<8> limiters);
56
57 virtual bool write_time_factor_gain(uint8_t idx, uint8_t gain);
58};
59
60class MIntBlock_V_1_1_X : public MIntBlock {
61public:
63
64 [[nodiscard]] utils::status write_to_hardware() override;
65 void reset(entities::ResetAction action) override;
66
67 [[nodiscard]] const std::array<IntegratorCalibration, NUM_INTEGRATORS> &get_calibration() const;
68 [[nodiscard]] blocks::IntegratorCalibration get_calibration(uint8_t int_idx) const;
69 utils::status write_calibration_to_hardware();
70
71 bool calibrate(platform::Cluster *cluster, carrier::Carrier *carrier) override;
72
73protected:
75
76 std::array<IntegratorCalibration, NUM_INTEGRATORS> calibration{};
77
78 bool _gain_calibration(bool use_slow_integration);
79};
80
81} // namespace blocks
std::bitset< 8 > read_overload_flags() override
const functions::TriggerFunction f_overload_flags_reset
Definition mblock_int.h:27
MIntBlockHAL_V_1_0_X(bus::addr_t block_address)
bool write_ic(uint8_t idx, float ic) override
const functions::SR74HCT595 f_time_factor
Definition mblock_int.h:23
const functions::DAC60508 f_ic_dac
Definition mblock_int.h:22
const functions::SR74HC16X f_overload_flags
Definition mblock_int.h:26
bool write_time_factor_switches(std::bitset< 8 > switches) override
const functions::TriggerFunction f_time_factor_sync
Definition mblock_int.h:24
const functions::TriggerFunction f_time_factor_reset
Definition mblock_int.h:25
void reset_overload_flags() override
virtual bool write_time_factor_gain(uint8_t idx, uint8_t gain)
virtual bool write_limiters_enable(std::bitset< 8 > limiters)
functions::AD8403 f_time_factor_gain_4_7
Definition mblock_int.h:45
bool write_time_factor_switches(std::bitset< 8 > switches) override
functions::AD8403 f_time_factor_gain_0_3
Definition mblock_int.h:44
MIntBlockHAL_V_1_1_X(bus::addr_t block_address)
bool write_ic(uint8_t idx, float ic) override
virtual bool write_time_factor_switches_and_limiters_enable(std::bitset< 8 > switches, std::bitset< 8 > limiters)
std::array< IntegratorCalibration, NUM_INTEGRATORS > calibration
Definition mblock_int.h:76
utils::status write_calibration_to_hardware()
void reset(entities::ResetAction action) override
MIntBlockHAL_V_1_1_X * hardware
Definition mblock_int.h:74
MIntBlock_V_1_1_X(SLOT slot, MIntBlockHAL_V_1_1_X *hardware)
bool _gain_calibration(bool use_slow_integration)
const std::array< IntegratorCalibration, NUM_INTEGRATORS > & get_calibration() const
utils::status write_to_hardware() override
bool calibrate(platform::Cluster *cluster, carrier::Carrier *carrier) override
The AD8403 is a four channel, 8 bit digital potentiometer.
Definition AD840X.h:35
The DAC60508 is the 12-Bit 8-channel DAC, used in the MInt-Block for the initial conditions.
Definition DAC60508.h:17
The SR74HCT595 is an 8-Bit Shift Register with 3-State Output Registers.
Definition SR74HCT595.h:15
A trigger function exploits the fact that setting an address on the bus triggers an action (TODO: Is ...
Definition functions.h:33
Definition daq.h:14