Skip to content

Commit fbb51bf

Browse files
committed
Try ITP timer new mode
1 parent 65a9376 commit fbb51bf

5 files changed

Lines changed: 31 additions & 78 deletions

File tree

uCNC/src/core/parser.c

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1496,7 +1496,6 @@ static uint8_t parser_exec_command(parser_state_t *new_state, parser_words_t *wo
14961496
{
14971497
#if (defined(AXIS_X) && defined(AXIS_Y))
14981498
case G17:
1499-
itp_set_step_mode(ITP_STEP_MODE_DEFAULT);
15001499
a = AXIS_X;
15011500
b = AXIS_Y;
15021501
offset_a = AXIS_X;
@@ -1505,7 +1504,6 @@ static uint8_t parser_exec_command(parser_state_t *new_state, parser_words_t *wo
15051504
#endif
15061505
#if (defined(AXIS_X) && defined(AXIS_Z))
15071506
case G18:
1508-
itp_set_step_mode(ITP_STEP_MODE_REALTIME);
15091507
#ifdef ENABLE_G39_H_MAPPING
15101508
if (new_state->groups.height_map_active)
15111509
{

uCNC/src/hal/boards/esp32/boardmap_devkit_s3.h

Lines changed: 21 additions & 53 deletions
Original file line numberDiff line numberDiff line change
@@ -37,16 +37,16 @@ extern "C"
3737
#endif
3838

3939
// // Setup step pins
40-
// #define STEP3_BIT 18 // assigns STEP3 pin
41-
// #define STEP2_BIT 17 // assigns STEP2 pin
42-
// #define STEP1_BIT 16 // assigns STEP1 pin
43-
// #define STEP0_BIT 15 // assigns STEP0 pin
40+
#define STEP3_BIT 18 // assigns STEP3 pin
41+
#define STEP2_BIT 17 // assigns STEP2 pin
42+
#define STEP1_BIT 16 // assigns STEP1 pin
43+
#define STEP0_BIT 15 // assigns STEP0 pin
4444

45-
// // // Setup dir pins
46-
// #define DIR3_BIT 9 // assigns DIR2 pin
47-
// #define DIR2_BIT 10 // assigns DIR2 pin
48-
// #define DIR1_BIT 11 // assigns DIR1 pin
49-
// #define DIR0_BIT 12 // assigns DIR0 pin
45+
// // Setup dir pins
46+
#define DIR3_BIT 9 // assigns DIR2 pin
47+
#define DIR2_BIT 10 // assigns DIR2 pin
48+
#define DIR1_BIT 11 // assigns DIR1 pin
49+
#define DIR0_BIT 12 // assigns DIR0 pin
5050

5151
// // Setup control input pins
5252
// #define ESTOP_BIT 2
@@ -60,12 +60,12 @@ extern "C"
6060
// #define CS_RES_PULLUP
6161

6262
// // Setup limit pins
63-
// #define LIMIT_Z_BIT 6 // assigns LIMIT_Z pin
64-
// #define LIMIT_Z_ISR // assigns LIMIT_Z ISR
65-
// #define LIMIT_Y_BIT 5 // assigns LIMIT_Y pin
66-
// #define LIMIT_Y_ISR // assigns LIMIT_Y ISR
67-
// #define LIMIT_X_BIT 4 // assigns LIMIT_X pin
68-
// #define LIMIT_X_ISR // assigns LIMIT_X ISR
63+
#define LIMIT_Z_BIT 6 // assigns LIMIT_Z pin
64+
#define LIMIT_Z_ISR // assigns LIMIT_Z ISR
65+
#define LIMIT_Y_BIT 5 // assigns LIMIT_Y pin
66+
#define LIMIT_Y_ISR // assigns LIMIT_Y ISR
67+
#define LIMIT_X_BIT 4 // assigns LIMIT_X pin
68+
#define LIMIT_X_ISR // assigns LIMIT_X ISR
6969

7070
// // Setup probe pin
7171
#define PROBE_BIT 7
@@ -83,19 +83,19 @@ extern "C"
8383
// #define UART_PORT 0
8484

8585
// // Setup PWM
86-
// #define PWM0_BIT 1 // assigns PWM0 pin
87-
// #define PWM0_TIMER 0
88-
// #define PWM0_CHANNEL 0
86+
#define PWM0_BIT 1 // assigns PWM0 pin
87+
#define PWM0_TIMER 0
88+
#define PWM0_CHANNEL 0
8989

9090
// Setup generic IO Pins
9191
// spindle dir
92-
// #define DOUT0_BIT 2
92+
#define DOUT0_BIT 2
9393

9494
// // coolant
9595
// #define DOUT2_BIT 34
9696

9797
// // Stepper enable pin. For Grbl on Uno board a single pin is used
98-
// #define STEP0_EN_BIT 8
98+
#define STEP0_EN_BIT 8
9999

100100
// Setup the Step Timer used has the heartbeat for µCNC
101101
// Timer 1 is used by default
@@ -112,41 +112,9 @@ extern "C"
112112
// #define SERVO0_BIT 33
113113
// #define I2C_CLK_BIT 22
114114
// #define I2C_DATA_BIT 21
115-
#define DOUT49_BIT 8
116-
117-
#define IC74HC595_CUSTOM_SHIFT_IO // Enables custom MCU data shift transmission. In ESP32 that is via I2S
118-
#define IC74HC595_I2S_WS 4
119-
#define IC74HC595_I2S_CLK 5
120-
#define IC74HC595_I2S_DATA 18
121-
// #define IC74HC595_I2S_PORT 0
122-
// uses 3 x 74HS595 but for I2S use this value has to be set to 4 (I2S sends data as 32-bit (4bytes))
123-
#define IC74HC595_COUNT 4
124-
125-
#define STEP0_EN_IO_OFFSET 0
126-
#define STEP0_IO_OFFSET 1
127-
#define DIR0_IO_OFFSET 2
128-
#define STEP1_EN_IO_OFFSET 3
129-
#define STEP1_IO_OFFSET 4
130-
#define DIR1_IO_OFFSET 5
131-
#define STEP2_EN_IO_OFFSET 6
132-
#define STEP2_IO_OFFSET 7
133-
#define DIR2_IO_OFFSET 8
134-
#define STEP3_EN_IO_OFFSET 9
135-
#define STEP3_IO_OFFSET 10
136-
#define DIR3_IO_OFFSET 11
137-
#define STEP4_EN_IO_OFFSET 12
138-
#define STEP4_IO_OFFSET 13
139-
#define DIR4_IO_OFFSET 14
140-
#define PWM0_IO_OFFSET 16
141-
#define PWM1_IO_OFFSET 17
142-
#define PWM2_IO_OFFSET 18
143-
#define PWM3_IO_OFFSET 19
144-
#define PWM4_IO_OFFSET 20
145-
#define DOUT0_IO_OFFSET 22
146-
#define DOUT2_IO_OFFSET 23
147115

148116
#ifdef __cplusplus
149117
}
150118
#endif
151119

152-
#endif
120+
#endif

uCNC/src/hal/boards/esp32/boardmap_mks_dlc32_s3.h

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -68,9 +68,9 @@ extern "C"
6868
// #define DOUT10_BIT 17
6969

7070
#define IC74HC595_CUSTOM_SHIFT_IO // Enables custom MCU data shift transmission. In ESP32 that is via I2S
71-
#define IC74HC595_I2S_WS 8
72-
#define IC74HC595_I2S_CLK 9
73-
#define IC74HC595_I2S_DATA 10
71+
#define IC74HC595_I2S_WS 4
72+
#define IC74HC595_I2S_CLK 5
73+
#define IC74HC595_I2S_DATA 18
7474
// #define IC74HC595_I2S_PORT 0
7575
// uses 1 x 74HS595 but for I2S use this value has to be set to 4 (I2S sends data as 32-bit (4bytes))
7676
#define IC74HC595_COUNT 4

uCNC/src/hal/mcus/esp32s3/mcu_esp32s3.c

Lines changed: 6 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -82,26 +82,12 @@ void mcu_core0_wirelesscoms_init(void *arg)
8282

8383
MCU_CALLBACK void mcu_itp_isr(void *arg)
8484
{
85-
ESP_LOGD("itp", "loop");
86-
#ifdef IC74HC595_CUSTOM_SHIFT_IO
87-
uint32_t mode = I2S_MODE;
88-
if (mode == ITP_STEP_MODE_REALTIME)
89-
{
90-
signal_timer.us_step = 8;
91-
mcu_gen_step();
92-
mcu_gen_pwm();
93-
mcu_gen_servo();
94-
#if defined(MCU_HAS_ONESHOT_TIMER) && defined(ENABLE_RT_SYNC_MOTIONS)
95-
mcu_gen_oneshot();
96-
#endif
97-
// signal_timer.us_step -= (int)signal_timer.us_step;
98-
99-
WRITE_PERI_REG(I2S_CONF_SIGLE_DATA_REG(IC74HC595_I2S_PORT), __atomic_load_n((uint32_t *)&ic74hc595_i2s_pins, __ATOMIC_RELAXED));
100-
}
101-
#else
85+
// run twice per timer isr (step up and step down at limit speed)
86+
mcu_gen_step();
87+
mcu_gen_pwm();
88+
mcu_gen_servo();
10289
#if defined(MCU_HAS_ONESHOT_TIMER) && defined(ENABLE_RT_SYNC_MOTIONS)
10390
mcu_gen_oneshot();
104-
#endif
10591
#endif
10692

10793
timer_group_clr_intr_status_in_isr(ITP_TIMER_TG, ITP_TIMER_IDX);
@@ -177,6 +163,7 @@ void mcu_init(void)
177163
*/
178164

179165
#ifndef IC74HC595_CUSTOM_SHIFT_IO
166+
signal_timer.us_step = (1000000/ITP_SAMPLE_RATE);
180167
// inititialize ITP timer
181168
timer_config_t itpconfig = {0};
182169
itpconfig.divider = 2;
@@ -190,7 +177,7 @@ void mcu_init(void)
190177
Also, if auto_reload is set, this value will be automatically reload on alarm */
191178
timer_set_counter_value(ITP_TIMER_TG, ITP_TIMER_IDX, 0x00000000ULL);
192179
/* Configure the alarm value and the interrupt on alarm. */
193-
timer_set_alarm_value(ITP_TIMER_TG, ITP_TIMER_IDX, (uint64_t)(getApbFrequency() / (ITP_SAMPLE_RATE * 2)));
180+
timer_set_alarm_value(ITP_TIMER_TG, ITP_TIMER_IDX, (uint64_t)(getApbFrequency() / ITP_SAMPLE_RATE));
194181
// register PWM isr
195182
timer_isr_register(ITP_TIMER_TG, ITP_TIMER_IDX, mcu_itp_isr, NULL, 0, NULL);
196183
timer_enable_intr(ITP_TIMER_TG, ITP_TIMER_IDX);

uCNC/src/hal/mcus/esp32s3/mcumap_esp32s3.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ extern "C"
5050
#endif
5151
// defines the maximum and minimum step rates
5252
#ifndef F_STEP_MAX
53-
#define F_STEP_MAX 200000UL
53+
#define F_STEP_MAX 125000UL
5454
#endif
5555
#ifndef F_STEP_MIN
5656
#define F_STEP_MIN 1

0 commit comments

Comments
 (0)