Пример #1
0
 def __init__(self, config):
     # Setup mcu communication
     self.fields = tmc.FieldHelper(Fields, SignedFields, FieldFormatters)
     self.mcu_tmc = tmc_uart.MCU_TMC_uart(config, Registers, self.fields)
     # Register commands
     cmdhelper = tmc.TMCCommandHelper(config, self.mcu_tmc)
     cmdhelper.setup_register_dump(ReadRegisters, self.read_translate)
     # Setup basic register values
     self.fields.set_field("pdn_disable", True)
     self.fields.set_field("mstep_reg_select", True)
     self.fields.set_field("multistep_filt", True)
     tmc2130.TMCCurrentHelper(config, self.mcu_tmc)
     mh = tmc.TMCMicrostepHelper(config, self.mcu_tmc)
     self.get_microsteps = mh.get_microsteps
     self.get_phase = mh.get_phase
     tmc.TMCStealthchopHelper(config, self.mcu_tmc, TMC_FREQUENCY)
     # Allow other registers to be set from the config
     set_config_field = self.fields.set_config_field
     set_config_field(config, "toff", 3)
     set_config_field(config, "hstrt", 5)
     set_config_field(config, "hend", 0)
     set_config_field(config, "TBL", 2)
     set_config_field(config, "IHOLDDELAY", 8)
     set_config_field(config, "TPOWERDOWN", 20)
     set_config_field(config, "PWM_OFS", 36)
     set_config_field(config, "PWM_GRAD", 14)
     set_config_field(config, "pwm_freq", 1)
     set_config_field(config, "pwm_autoscale", True)
     set_config_field(config, "pwm_autograd", True)
     set_config_field(config, "PWM_REG", 8)
     set_config_field(config, "PWM_LIM", 12)
Пример #2
0
 def __init__(self, config):
     # Setup mcu communication
     self.fields = tmc.FieldHelper(Fields, SignedFields, FieldFormatters)
     self.mcu_tmc = MCU_TMC_SPI(config, Registers, self.fields)
     # Allow virtual endstop to be created
     diag1_pin = config.get('diag1_pin', None)
     tmc.TMCEndstopHelper(config, self.mcu_tmc, diag1_pin)
     # Register commands
     cmdhelper = tmc.TMCCommandHelper(config, self.mcu_tmc)
     cmdhelper.setup_register_dump(self.query_registers)
     # Setup basic register values
     TMCCurrentHelper(config, self.mcu_tmc)
     mh = tmc.TMCMicrostepHelper(config, self.mcu_tmc)
     self.get_microsteps = mh.get_microsteps
     self.get_phase = mh.get_phase
     tmc.TMCStealthchopHelper(config, self.mcu_tmc, TMC_FREQUENCY)
     # Allow other registers to be set from the config
     set_config_field = self.fields.set_config_field
     set_config_field(config, "toff", 4)
     set_config_field(config, "hstrt", 0)
     set_config_field(config, "hend", 7)
     set_config_field(config, "TBL", 1)
     set_config_field(config, "intpol", True, "interpolate")
     set_config_field(config, "IHOLDDELAY", 8)
     set_config_field(config, "TPOWERDOWN", 0)
     set_config_field(config, "PWM_AMPL", 128)
     set_config_field(config, "PWM_GRAD", 4)
     set_config_field(config, "pwm_freq", 1)
     set_config_field(config, "pwm_autoscale", True)
     set_config_field(config, "sgt", 0)
Пример #3
0
 def __init__(self, config):
     # Setup mcu communication
     self.fields = tmc.FieldHelper(Fields, SignedFields, FieldFormatters)
     self.mcu_tmc = tmc2130.MCU_TMC_SPI(config, Registers, self.fields)
     # Allow virtual endstop to be created
     diag1_pin = config.get('diag1_pin', None)
     tmc.TMCEndstopHelper(config, self.mcu_tmc, diag1_pin)
     # Register commands
     cmdhelper = tmc.TMCCommandHelper(config, self.mcu_tmc)
     cmdhelper.setup_register_dump(self.query_registers)
     # Setup basic register values
     mh = tmc.TMCMicrostepHelper(config, self.mcu_tmc)
     self.get_microsteps = mh.get_microsteps
     self.get_phase = mh.get_phase
     tmc.TMCStealthchopHelper(config, self.mcu_tmc, TMC_FREQUENCY)
     #   CHOPCONF
     set_config_field = self.fields.set_config_field
     set_config_field(config, "toff", 3)
     set_config_field(config, "hstrt", 5)
     set_config_field(config, "hend", 2)
     set_config_field(config, "fd3", 0)
     set_config_field(config, "disfdcc", 0)
     set_config_field(config, "chm", 0)
     set_config_field(config, "tbl", 2)
     set_config_field(config, "vhighfs", 0)
     set_config_field(config, "vhighchm", 0)
     set_config_field(config, "tpfd", 4)
     set_config_field(config, "intpol", True, "interpolate")
     set_config_field(config, "dedge", 0)
     set_config_field(config, "diss2g", 0)
     set_config_field(config, "diss2vs", 0)
     #   COOLCONF
     set_config_field(config, "semin", 0)  # page 52
     set_config_field(config, "seup", 0)
     set_config_field(config, "semax", 0)
     set_config_field(config, "sedn", 0)
     set_config_field(config, "seimin", 0)
     set_config_field(config, "sgt", 0)
     set_config_field(config, "sfilt", 0)
     #   IHOLDIRUN
     TMC5160CurrentHelper(config, self.mcu_tmc)
     set_config_field(config, "IHOLDDELAY", 6)
     #   PWMCONF
     set_config_field(config, "PWM_OFS", 30)
     set_config_field(config, "PWM_GRAD", 0)
     set_config_field(config, "pwm_freq", 1)
     set_config_field(config, "pwm_autoscale", True)
     set_config_field(config, "pwm_autograd", True)
     set_config_field(config, "freewheel", 0)
     set_config_field(config, "PWM_REG", 4)
     set_config_field(config, "PWM_LIM", 12)
     #   TPOWERDOWN
     set_config_field(config, "TPOWERDOWN", 10)
Пример #4
0
    def __init__(self, config):
        # Setup mcu communication
        self.fields = tmc.FieldHelper(Fields, SignedFields, FieldFormatters)
        self.mcu_tmc = MCU_TMC2660_SPI(config, Registers, self.fields)
        # Register commands
        cmdhelper = tmc.TMCCommandHelper(config, self.mcu_tmc)
        cmdhelper.setup_register_dump(self.query_registers)

        # DRVCTRL
        mh = tmc.TMCMicrostepHelper(config, self.mcu_tmc)
        self.get_microsteps = mh.get_microsteps
        self.get_phase = mh.get_phase
        set_config_field = self.fields.set_config_field
        set_config_field(config, "DEDGE", 0)
        set_config_field(config, "INTPOL", True, 'interpolate')
        # CHOPCONF
        set_config_field(config, "TBL", 2)
        set_config_field(config, "RNDTF", 0)
        set_config_field(config, "HDEC", 0)
        set_config_field(config, "CHM", 0)
        set_config_field(config, "HEND", 3)
        set_config_field(config, "HSTRT", 3)
        set_config_field(config, "TOFF", 4)
        if not self.fields.get_field("CHM"):
            if (self.fields.get_field("HSTRT") +
                    self.fields.get_field("HEND")) > 15:
                raise config.error("driver_HEND + driver_HSTRT must be <= 15")
        # SMARTEN
        set_config_field(config, "SEIMIN", 0)
        set_config_field(config, "SEDN", 0)
        set_config_field(config, "SEMAX", 0)
        set_config_field(config, "SEUP", 0)
        set_config_field(config, "SEMIN", 0)

        # SGSCONF
        set_config_field(config, "SFILT", 1)
        set_config_field(config, "SGT", 0)
        TMC2660CurrentHelper(config, self.mcu_tmc)

        # DRVCONF
        set_config_field(config, "SLPH", 0)
        set_config_field(config, "SLPL", 0)
        set_config_field(config, "DISS2G", 0)
        set_config_field(config, "TS2G", 3)
        self.fields.set_field("RDSEL", 0)  # needed for phase calculations
        self.fields.set_field("SDOFF", 0)  # only step/dir mode supported
Пример #5
0
    def __init__(self, config):
        # Setup mcu communication
        self.fields = tmc.FieldHelper(Fields, SignedFields, FieldFormatters)
        self.fields.set_field("SDOFF", 0)  # Access DRVCTRL in step/dir mode
        self.mcu_tmc = MCU_TMC2660_SPI(config, Registers, self.fields)
        # Allow virtual pins to be created
        tmc.TMCVirtualPinHelper(config, self.mcu_tmc)
        # Register commands
        cmdhelper = tmc.TMCCommandHelper(config, self.mcu_tmc)
        cmdhelper.setup_register_dump(ReadRegisters)

        # DRVCTRL
        mh = tmc.TMCMicrostepHelper(config, self.mcu_tmc)
        self.get_microsteps = mh.get_microsteps
        self.get_phase = mh.get_phase
        # CHOPCONF
        set_config_field = self.fields.set_config_field
        set_config_field(config, "TBL", 2)
        set_config_field(config, "RNDTF", 0)
        set_config_field(config, "HDEC", 0)
        set_config_field(config, "CHM", 0)
        set_config_field(config, "HEND", 3)
        set_config_field(config, "HSTRT", 3)
        set_config_field(config, "toff", 4)
        if not self.fields.get_field("CHM"):
            if (self.fields.get_field("HSTRT") +
                    self.fields.get_field("HEND")) > 15:
                raise config.error("driver_HEND + driver_HSTRT must be <= 15")
        # SMARTEN
        set_config_field(config, "SEIMIN", 0)
        set_config_field(config, "SEDN", 0)
        set_config_field(config, "SEMAX", 0)
        set_config_field(config, "SEUP", 0)
        set_config_field(config, "SEMIN", 0)

        # SGSCONF
        set_config_field(config, "SFILT", 1)
        set_config_field(config, "SGT", 0)
        TMC2660CurrentHelper(config, self.mcu_tmc)

        # DRVCONF
        set_config_field(config, "SLPH", 0)
        set_config_field(config, "SLPL", 0)
        set_config_field(config, "DISS2G", 0)
        set_config_field(config, "TS2G", 3)
Пример #6
0
    def __init__(self, config):
        # Setup mcu communication
        self.fields = tmc.FieldHelper(Fields, SignedFields, FieldFormatters)
        self.mcu_tmc = MCU_TMC_SPI(config, Registers, self.fields)
        # Setup Current
        cur_helper = TMCCurrentHelper(config, self.mcu_tmc)
        # Allow virtual pins to be created
        diag1_pin = config.get('diag1_pin', None)
        tmc.TMCVirtualPinHelper(config, self.mcu_tmc, diag1_pin, cur_helper)
        # Register commands
        cmdhelper = tmc.TMCCommandHelper(config, self.mcu_tmc)
        cmdhelper.setup_register_dump(ReadRegisters)
        # Setup basic register values
        mh = tmc.TMCMicrostepHelper(config, self.mcu_tmc)
        self.get_microsteps = mh.get_microsteps
        self.get_phase = mh.get_phase
        tmc.TMCStealthchopHelper(config, self.mcu_tmc, TMC_FREQUENCY)
        # Allow other registers to be set from the config
        set_config_field = self.fields.set_config_field
        set_config_field(config, "toff", 4)
        set_config_field(config, "TBL", 1)
        set_config_field(config, "IHOLDDELAY", 8)
        set_config_field(config, "TPOWERDOWN", 0)
        set_config_field(config, "PWM_AMPL", 128)
        set_config_field(config, "PWM_GRAD", 4)
        set_config_field(config, "pwm_freq", 1)
        set_config_field(config, "pwm_autoscale", True)
        set_config_field(config, "sgt", 0)

        # CHOPCONF
        ch_modes = {'SpreadCycle': 0, 'ConstantOff': 1}
        chm = config.getchoice(
            'chopper_mode', ch_modes, "SpreadCycle")
        self.fields.set_field("chm", chm)
        if chm == ch_modes['SpreadCycle']:
            set_config_field(config, "hstrt", 0)
            set_config_field(config, "hend", 7)
        else:
            tfd = config.getint('driver_TFD', 0, minval=0, maxval=15)
            self.fields.set_field('hstrt', tfd)
            self.fields.set_field('fd3', (tfd >> 3) & 1)
            hend = config.getint('driver_OFFSET', 0)
            self.fields.set_field('hend', hend)
        set_config_field(config, "disfdcc", False)
        set_config_field(config, "rndtf", False)
        set_config_field(config, "vhighfs", False)
        set_config_field(config, "vhighchm", False)
        set_config_field(config, "sync", 0)
        set_config_field(config, "dedge", False)
        set_config_field(config, "diss2g", False)

        # COOLCONF
        set_config_field(config, "semin", 0)
        seup_choices = {'1': 0, '2': 1, '4': 2, '8': 3}
        seup = config.getchoice("seup", seup_choices, '1')
        self.fields.set_field("seup", seup)
        set_config_field(config, "semax", 0)
        sedn_choices = {'32': 0, '8': 1, '2': 2, '1': 3}
        sedn = config.getchoice("sedn", sedn_choices, '32')
        self.fields.set_field("sedn", sedn)
        set_config_field(config, "seimin", 0)
        set_config_field(config, "sfilt", False)

        TMC2130_EXTRA(config, self)