Browse Source

update

master
zhaohe 2 years ago
parent
commit
01e7a6ad1d
  1. 12
      chip/chip.c
  2. 15
      chip/delay.c
  3. 4
      chip/iflytop_no_os.c
  4. 2
      chip/log.c
  5. 14
      components/tmc/ic/ztmc4361A.cpp
  6. 5
      components/tmc/ic/ztmc4361A.hpp

12
chip/chip.c

@ -1,19 +1,25 @@
#include "chip.h"
#include <stdbool.h>
#include <stdint.h>
#include <stdlib.h>
uint8_t g_port_exit_critical_count;
void sys_critical_enter(void) {
// NVIC_EnableIRQ
// NVIC_GetEnableIRQ
// NVIC_DisableIRQ
void chip_critical_enter(void) {
if (g_port_exit_critical_count == 0) {
__disable_irq();
// NVIC_DisableIRQ();
}
g_port_exit_critical_count++;
}
void sys_critical_exit(void) {
void chip_critical_exit(void) {
g_port_exit_critical_count--;
if (g_port_exit_critical_count == 0) {
// NVIC_EnableIRQ();
__enable_irq();
}
}

15
chip/delay.c

@ -6,8 +6,9 @@
static TIM_HandleTypeDef *m_dhtim;
void chip_delay_init(TIM_HandleTypeDef *htim) { m_dhtim = htim; }
void chip_delay_us(uint32_t n) {
uint16_t counter = 0;
void _chip_delay_us(uint32_t n) {
volatile uint32_t counter = 0;
__HAL_TIM_SET_COUNTER(m_dhtim, 0);
HAL_TIM_Base_Start(m_dhtim);
while (counter < n) {
@ -15,6 +16,16 @@ void chip_delay_us(uint32_t n) {
}
HAL_TIM_Base_Stop(m_dhtim);
}
void chip_delay_us(uint32_t n) {
uint32_t us = n % 1000;
uint32_t ms = n / 1000;
if (us > 0) {
_chip_delay_us(us);
}
for (uint32_t i = 0; i < ms; i++) {
_chip_delay_us(1000);
}
}
void chip_delay_ms(uint32_t n) {
uint32_t i;
for (i = 0; i < n; i++) {

4
chip/iflytop_no_os.c

@ -1,6 +1,8 @@
#include "iflytop_no_os.h"
void iflytop_no_os_init(iflytop_no_os_cfg_t* os) {
chip_delay_init(os->delayhtim);
ifly_loggger_init(os->debuguart);
}

2
chip/log.c

@ -6,7 +6,7 @@
static UART_HandleTypeDef *m_huart;
bool g_enable_log;
bool g_enable_log = true;
/*********************************************************************
* @fn _write

14
components/tmc/ic/ztmc4361A.cpp

@ -179,8 +179,8 @@ void TMC4361A::initialize(cfg_t *cfg) {
driverIC_reset();
setAcceleration(100000);
setDeceleration(100000);
setAcceleration(500000);
setDeceleration(500000);
enableIC(true);
chip_delay_us(300 * 1000);
@ -351,5 +351,13 @@ void TMC4361A::driverIC_setMotorShaft(bool reverse) {
DRIVER_ID_FIELD_WRITE(TMC2160_GCONF, TMC2160_SHAFT_MASK, TMC2160_SHAFT_SHIFT, val);
}
uint32_t TMC4361A::driverIC_readICVersion() {
int32_t value = driverIC_readInt(TMC2160_IOIN___OUTPUT);
return (value & TMC2160_VERSION_MASK) >> TMC2160_VERSION_SHIFT;
}
void TMC4361A::driverIC_setIHOLD_IRUN(uint8_t ihold, uint8_t irun, uint16_t iholddelay) {
driverIC_writeInt(TMC2160_IHOLD_IRUN, (iholddelay << TMC2160_IHOLDDELAY_SHIFT) | (irun << TMC2160_IRUN_SHIFT) | (ihold << TMC2160_IHOLD_SHIFT));
}
#endif
#endif
#endif

5
components/tmc/ic/ztmc4361A.hpp

@ -128,6 +128,9 @@ class TMC4361A : public IStepperMotor {
void tmc4361AConfigCallback(ConfigState state);
void readWriteArray(uint8_t *data, size_t length);
void setIHOLD_IRUN(uint8_t ihold, uint8_t irun, uint16_t iholddelay) { driverIC_setIHOLD_IRUN(ihold, irun, iholddelay); }
void setMotorShaft(bool reverse) { driverIC_setMotorShaft(reverse); }
private:
uint32_t haspassedms(uint32_t now, uint32_t last);
// void callOnEventCallback(StepperMotorEvent event);
@ -135,11 +138,11 @@ class TMC4361A : public IStepperMotor {
void driverIC_reset();
void driverIC_enableIC(bool enable);
void driverIC_setIHOLD_IRUN(uint8_t ihold, uint8_t irun, uint16_t iholddelay);
uint32_t driverIC_readICVersion();
void driverIC_writeDatagram(uint8_t address, uint8_t x1, uint8_t x2, uint8_t x3, uint8_t x4);
void driverIC_writeInt(uint8_t address, int32_t value);
int32_t driverIC_readInt(uint8_t address);
void driverIC_setMotorShaft(bool reverse);
uint32_t driverIC_readICVersion();
};
} // namespace iflytop

Loading…
Cancel
Save