Johhny Firmware sync
This commit is contained in:
parent
1224705edc
commit
c83b1833bc
@ -1316,6 +1316,8 @@ void loop()
|
||||
manage_inactivity();
|
||||
checkHitEndstops();
|
||||
lcd_update();
|
||||
|
||||
tmc2130_check_overtemp();
|
||||
}
|
||||
|
||||
void get_command()
|
||||
@ -6092,4 +6094,4 @@ void bed_analysis(float x_dimension, float y_dimension, int x_points_num, int y_
|
||||
|
||||
}
|
||||
|
||||
#endif
|
||||
#endif
|
||||
|
@ -294,7 +294,7 @@ bool SdBaseFile::getFilename(char* name) {
|
||||
return true;
|
||||
}
|
||||
//------------------------------------------------------------------------------
|
||||
void SdBaseFile::getpos(fpos_t* pos) {
|
||||
void SdBaseFile::getpos(filepos_t* pos) {
|
||||
pos->position = curPosition_;
|
||||
pos->cluster = curCluster_;
|
||||
}
|
||||
@ -925,7 +925,7 @@ bool SdBaseFile::openRoot(SdVolume* vol) {
|
||||
* \return The byte if no error and not at eof else -1;
|
||||
*/
|
||||
int SdBaseFile::peek() {
|
||||
fpos_t pos;
|
||||
filepos_t pos;
|
||||
getpos(&pos);
|
||||
int c = read();
|
||||
if (c >= 0) setpos(&pos);
|
||||
@ -1492,7 +1492,7 @@ bool SdBaseFile::seekSet(uint32_t pos) {
|
||||
return false;
|
||||
}
|
||||
//------------------------------------------------------------------------------
|
||||
void SdBaseFile::setpos(fpos_t* pos) {
|
||||
void SdBaseFile::setpos(filepos_t* pos) {
|
||||
curPosition_ = pos->position;
|
||||
curCluster_ = pos->cluster;
|
||||
}
|
||||
|
@ -35,12 +35,12 @@
|
||||
* \brief internal type for istream
|
||||
* do not use in user apps
|
||||
*/
|
||||
struct fpos_t {
|
||||
struct filepos_t {
|
||||
/** stream position */
|
||||
uint32_t position;
|
||||
/** cluster for position */
|
||||
uint32_t cluster;
|
||||
fpos_t() : position(0), cluster(0) {}
|
||||
filepos_t() : position(0), cluster(0) {}
|
||||
};
|
||||
|
||||
// use the gnu style oflag in open()
|
||||
@ -196,11 +196,11 @@ class SdBaseFile {
|
||||
/** get position for streams
|
||||
* \param[out] pos struct to receive position
|
||||
*/
|
||||
void getpos(fpos_t* pos);
|
||||
void getpos(filepos_t* pos);
|
||||
/** set position for streams
|
||||
* \param[out] pos struct with value for new position
|
||||
*/
|
||||
void setpos(fpos_t* pos);
|
||||
void setpos(filepos_t* pos);
|
||||
//----------------------------------------------------------------------------
|
||||
bool close();
|
||||
bool contiguousRange(uint32_t* bgnBlock, uint32_t* endBlock);
|
||||
|
@ -385,10 +385,6 @@
|
||||
#define MOTOR_CURRENT_PWM_XY_PIN 46
|
||||
#define MOTOR_CURRENT_PWM_Z_PIN 45
|
||||
#define MOTOR_CURRENT_PWM_E_PIN 44
|
||||
//Motor current PWM conversion, PWM value = MotorCurrentSetting * 255 / range
|
||||
#define MOTOR_CURRENT_PWM_RANGE 2000
|
||||
#define DEFAULT_PWM_MOTOR_CURRENT {1300, 1300, 1300}
|
||||
//#define DEFAULT_PWM_MOTOR_CURRENT {1100, 1100, 1300}
|
||||
#define SDPOWER -1
|
||||
#define SDSS 53
|
||||
#define LED_PIN 13
|
||||
|
@ -633,6 +633,61 @@ ISR(TIMER1_COMPA_vect)
|
||||
}
|
||||
}
|
||||
#ifdef HAVE_TMC2130_DRIVERS
|
||||
uint32_t tmc2130_read(uint8_t chipselect, uint8_t address)
|
||||
{
|
||||
uint32_t val32;
|
||||
uint8_t val0;
|
||||
uint8_t val1;
|
||||
uint8_t val2;
|
||||
uint8_t val3;
|
||||
uint8_t val4;
|
||||
|
||||
//datagram1 - read request (address + dummy write)
|
||||
SPI.beginTransaction(SPISettings(1000000, MSBFIRST, SPI_MODE3));
|
||||
digitalWrite(chipselect,LOW);
|
||||
SPI.transfer(address);
|
||||
SPI.transfer(0);
|
||||
SPI.transfer(0);
|
||||
SPI.transfer(0);
|
||||
SPI.transfer(0);
|
||||
digitalWrite(chipselect, HIGH);
|
||||
SPI.endTransaction();
|
||||
|
||||
//datagram2 - response
|
||||
SPI.beginTransaction(SPISettings(1000000, MSBFIRST, SPI_MODE3));
|
||||
digitalWrite(chipselect,LOW);
|
||||
val0 = SPI.transfer(0);
|
||||
val1 = SPI.transfer(0);
|
||||
val2 = SPI.transfer(0);
|
||||
val3 = SPI.transfer(0);
|
||||
val4 = SPI.transfer(0);
|
||||
digitalWrite(chipselect, HIGH);
|
||||
SPI.endTransaction();
|
||||
|
||||
#ifdef TMC_DBG_READS
|
||||
MYSERIAL.print("SPIRead 0x");
|
||||
MYSERIAL.print(address,HEX);
|
||||
MYSERIAL.print(" Status:");
|
||||
MYSERIAL.print(val0 & 0b00000111,BIN);
|
||||
MYSERIAL.print(" ");
|
||||
MYSERIAL.print(val1,BIN);
|
||||
MYSERIAL.print(" ");
|
||||
MYSERIAL.print(val2,BIN);
|
||||
MYSERIAL.print(" ");
|
||||
MYSERIAL.print(val3,BIN);
|
||||
MYSERIAL.print(" ");
|
||||
MYSERIAL.print(val4,BIN);
|
||||
#endif
|
||||
|
||||
val32 = (uint32_t)val1<<24 | (uint32_t)val2<<16 | (uint32_t)val3<<8 | (uint32_t)val4;
|
||||
|
||||
#ifdef TMC_DBG_READS
|
||||
MYSERIAL.print(" 0x");
|
||||
MYSERIAL.println(val32,HEX);
|
||||
#endif
|
||||
return val32;
|
||||
}
|
||||
|
||||
void tmc2130_write(uint8_t chipselect, uint8_t address,uint8_t wval1,uint8_t wval2,uint8_t wval3,uint8_t wval4)
|
||||
{
|
||||
uint32_t val32;
|
||||
@ -738,6 +793,36 @@ ISR(TIMER1_COMPA_vect)
|
||||
{
|
||||
tmc2130_write(cs,0x13,0x00,0x00,0x00,0x00); // TMC LJ -> Adds possibility to swtich from stealthChop to spreadCycle automatically
|
||||
}
|
||||
|
||||
void tmc2130_disable_motor(uint8_t driver)
|
||||
{
|
||||
uint8_t cs[4] = { X_TMC2130_CS, Y_TMC2130_CS, Z_TMC2130_CS, E0_TMC2130_CS };
|
||||
tmc2130_write(cs[driver],0x6C,0,01,0,0);
|
||||
}
|
||||
|
||||
void tmc2130_check_overtemp()
|
||||
{
|
||||
const static char TMC_OVERTEMP_MSG[] PROGMEM = "TMC DRIVER OVERTEMP ";
|
||||
uint8_t cs[4] = { X_TMC2130_CS, Y_TMC2130_CS, Z_TMC2130_CS, E0_TMC2130_CS };
|
||||
static uint32_t checktime = 0;
|
||||
//drivers_disabled[0] = 1; //TEST
|
||||
|
||||
if( millis() - checktime > 1000 ) {
|
||||
for(int i=0;i<4;i++) {
|
||||
uint32_t drv_status = tmc2130_read(cs[i], 0x6F); //0x6F DRV_STATUS
|
||||
|
||||
if(drv_status & ((uint32_t)1<<26)) { // BIT 26 - over temp prewarning ~120C (+-20C)
|
||||
SERIAL_ERRORRPGM(TMC_OVERTEMP_MSG);
|
||||
SERIAL_ECHOLN(i);
|
||||
|
||||
for(int x=0; x<4;x++) tmc2130_disable_motor(x);
|
||||
kill(TMC_OVERTEMP_MSG);
|
||||
}
|
||||
}
|
||||
|
||||
checktime = millis();
|
||||
}
|
||||
}
|
||||
|
||||
#endif //HAVE_TMC2130_DRIVERS
|
||||
|
||||
|
@ -88,6 +88,10 @@ void digipot_current(uint8_t driver, int current);
|
||||
void microstep_init();
|
||||
void microstep_readings();
|
||||
|
||||
#ifdef HAVE_TMC2130_DRIVERS
|
||||
void tmc2130_check_overtemp();
|
||||
#endif
|
||||
|
||||
#ifdef BABYSTEPPING
|
||||
void babystep(const uint8_t axis,const bool direction); // perform a short step with a single stepper motor, outside of any convention
|
||||
#endif
|
||||
|
@ -24,7 +24,7 @@
|
||||
*------------------------------------*/
|
||||
|
||||
// Steps per unit {X,Y,Z,E}
|
||||
#define DEFAULT_AXIS_STEPS_PER_UNIT {100,100,3200/8,161.3*16}
|
||||
#define DEFAULT_AXIS_STEPS_PER_UNIT {100,100,3200/8,161.3}
|
||||
|
||||
// Endstop inverting
|
||||
const bool X_MIN_ENDSTOP_INVERTING = false; // set to true to invert the logic of the endstop.
|
||||
@ -186,8 +186,8 @@ const bool Z_MIN_ENDSTOP_INVERTING = false; // set to true to invert the logic o
|
||||
// Motor Current settings for RAMBo mini PWM value = MotorCurrentSetting * 255 / range
|
||||
#if MOTHERBOARD == 102 || MOTHERBOARD == 302 || MOTHERBOARD == 300
|
||||
#define MOTOR_CURRENT_PWM_RANGE 2000
|
||||
#define DEFAULT_PWM_MOTOR_CURRENT {270, 830, 450} // {XY,Z,E}
|
||||
#define DEFAULT_PWM_MOTOR_CURRENT_LOUD {540, 830, 500} // {XY,Z,E}
|
||||
#define DEFAULT_PWM_MOTOR_CURRENT {650, 750, 750} // {XY,Z,E}
|
||||
#define DEFAULT_PWM_MOTOR_CURRENT_LOUD {650, 750, 750} // {XY,Z,E}
|
||||
#endif
|
||||
|
||||
/*------------------------------------
|
||||
|
Loading…
Reference in New Issue
Block a user