|
@@ -331,115 +331,126 @@ enum StealthIndex : uint8_t { STEALTH_AXIS_XY, STEALTH_AXIS_Z, STEALTH_AXIS_E };
|
331
|
331
|
#endif
|
332
|
332
|
#endif
|
333
|
333
|
|
|
334
|
+ enum TMCAxis : uint8_t { X, Y, Z, X2, Y2, Z2, Z3, Z4, E0, E1, E2, E3, E4, E5, E6, E7, TOTAL };
|
|
335
|
+
|
334
|
336
|
void tmc_serial_begin() {
|
|
337
|
+ struct {
|
|
338
|
+ const void *ptr[TMCAxis::TOTAL];
|
|
339
|
+ bool began(const TMCAxis a, const void * const p) {
|
|
340
|
+ LOOP_L_N(i, a) if (p == ptr[i]) return true;
|
|
341
|
+ ptr[a] = p; return false;
|
|
342
|
+ };
|
|
343
|
+ } sp_helper;
|
|
344
|
+ #define HW_SERIAL_BEGIN(A) do{ if (sp_helper.began(TMCAxis::A, &A##_HARDWARE_SERIAL)) \
|
|
345
|
+ A##_HARDWARE_SERIAL.begin(TMC_BAUD_RATE); }while(0)
|
335
|
346
|
#if AXIS_HAS_UART(X)
|
336
|
347
|
#ifdef X_HARDWARE_SERIAL
|
337
|
|
- X_HARDWARE_SERIAL.begin(TMC_BAUD_RATE);
|
|
348
|
+ HW_SERIAL_BEGIN(X);
|
338
|
349
|
#else
|
339
|
350
|
stepperX.beginSerial(TMC_BAUD_RATE);
|
340
|
351
|
#endif
|
341
|
352
|
#endif
|
342
|
353
|
#if AXIS_HAS_UART(X2)
|
343
|
354
|
#ifdef X2_HARDWARE_SERIAL
|
344
|
|
- X2_HARDWARE_SERIAL.begin(TMC_BAUD_RATE);
|
|
355
|
+ HW_SERIAL_BEGIN(X2);
|
345
|
356
|
#else
|
346
|
357
|
stepperX2.beginSerial(TMC_BAUD_RATE);
|
347
|
358
|
#endif
|
348
|
359
|
#endif
|
349
|
360
|
#if AXIS_HAS_UART(Y)
|
350
|
361
|
#ifdef Y_HARDWARE_SERIAL
|
351
|
|
- Y_HARDWARE_SERIAL.begin(TMC_BAUD_RATE);
|
|
362
|
+ HW_SERIAL_BEGIN(Y);
|
352
|
363
|
#else
|
353
|
364
|
stepperY.beginSerial(TMC_BAUD_RATE);
|
354
|
365
|
#endif
|
355
|
366
|
#endif
|
356
|
367
|
#if AXIS_HAS_UART(Y2)
|
357
|
368
|
#ifdef Y2_HARDWARE_SERIAL
|
358
|
|
- Y2_HARDWARE_SERIAL.begin(TMC_BAUD_RATE);
|
|
369
|
+ HW_SERIAL_BEGIN(Y2);
|
359
|
370
|
#else
|
360
|
371
|
stepperY2.beginSerial(TMC_BAUD_RATE);
|
361
|
372
|
#endif
|
362
|
373
|
#endif
|
363
|
374
|
#if AXIS_HAS_UART(Z)
|
364
|
375
|
#ifdef Z_HARDWARE_SERIAL
|
365
|
|
- Z_HARDWARE_SERIAL.begin(TMC_BAUD_RATE);
|
|
376
|
+ HW_SERIAL_BEGIN(Z);
|
366
|
377
|
#else
|
367
|
378
|
stepperZ.beginSerial(TMC_BAUD_RATE);
|
368
|
379
|
#endif
|
369
|
380
|
#endif
|
370
|
381
|
#if AXIS_HAS_UART(Z2)
|
371
|
382
|
#ifdef Z2_HARDWARE_SERIAL
|
372
|
|
- Z2_HARDWARE_SERIAL.begin(TMC_BAUD_RATE);
|
|
383
|
+ HW_SERIAL_BEGIN(Z2);
|
373
|
384
|
#else
|
374
|
385
|
stepperZ2.beginSerial(TMC_BAUD_RATE);
|
375
|
386
|
#endif
|
376
|
387
|
#endif
|
377
|
388
|
#if AXIS_HAS_UART(Z3)
|
378
|
389
|
#ifdef Z3_HARDWARE_SERIAL
|
379
|
|
- Z3_HARDWARE_SERIAL.begin(TMC_BAUD_RATE);
|
|
390
|
+ HW_SERIAL_BEGIN(Z3);
|
380
|
391
|
#else
|
381
|
392
|
stepperZ3.beginSerial(TMC_BAUD_RATE);
|
382
|
393
|
#endif
|
383
|
394
|
#endif
|
384
|
395
|
#if AXIS_HAS_UART(Z4)
|
385
|
396
|
#ifdef Z4_HARDWARE_SERIAL
|
386
|
|
- Z4_HARDWARE_SERIAL.begin(TMC_BAUD_RATE);
|
|
397
|
+ HW_SERIAL_BEGIN(Z4);
|
387
|
398
|
#else
|
388
|
399
|
stepperZ4.beginSerial(TMC_BAUD_RATE);
|
389
|
400
|
#endif
|
390
|
401
|
#endif
|
391
|
402
|
#if AXIS_HAS_UART(E0)
|
392
|
403
|
#ifdef E0_HARDWARE_SERIAL
|
393
|
|
- E0_HARDWARE_SERIAL.begin(TMC_BAUD_RATE);
|
|
404
|
+ HW_SERIAL_BEGIN(E0);
|
394
|
405
|
#else
|
395
|
406
|
stepperE0.beginSerial(TMC_BAUD_RATE);
|
396
|
407
|
#endif
|
397
|
408
|
#endif
|
398
|
409
|
#if AXIS_HAS_UART(E1)
|
399
|
410
|
#ifdef E1_HARDWARE_SERIAL
|
400
|
|
- E1_HARDWARE_SERIAL.begin(TMC_BAUD_RATE);
|
|
411
|
+ HW_SERIAL_BEGIN(E1);
|
401
|
412
|
#else
|
402
|
413
|
stepperE1.beginSerial(TMC_BAUD_RATE);
|
403
|
414
|
#endif
|
404
|
415
|
#endif
|
405
|
416
|
#if AXIS_HAS_UART(E2)
|
406
|
417
|
#ifdef E2_HARDWARE_SERIAL
|
407
|
|
- E2_HARDWARE_SERIAL.begin(TMC_BAUD_RATE);
|
|
418
|
+ HW_SERIAL_BEGIN(E2);
|
408
|
419
|
#else
|
409
|
420
|
stepperE2.beginSerial(TMC_BAUD_RATE);
|
410
|
421
|
#endif
|
411
|
422
|
#endif
|
412
|
423
|
#if AXIS_HAS_UART(E3)
|
413
|
424
|
#ifdef E3_HARDWARE_SERIAL
|
414
|
|
- E3_HARDWARE_SERIAL.begin(TMC_BAUD_RATE);
|
|
425
|
+ HW_SERIAL_BEGIN(E3);
|
415
|
426
|
#else
|
416
|
427
|
stepperE3.beginSerial(TMC_BAUD_RATE);
|
417
|
428
|
#endif
|
418
|
429
|
#endif
|
419
|
430
|
#if AXIS_HAS_UART(E4)
|
420
|
431
|
#ifdef E4_HARDWARE_SERIAL
|
421
|
|
- E4_HARDWARE_SERIAL.begin(TMC_BAUD_RATE);
|
|
432
|
+ HW_SERIAL_BEGIN(E4);
|
422
|
433
|
#else
|
423
|
434
|
stepperE4.beginSerial(TMC_BAUD_RATE);
|
424
|
435
|
#endif
|
425
|
436
|
#endif
|
426
|
437
|
#if AXIS_HAS_UART(E5)
|
427
|
438
|
#ifdef E5_HARDWARE_SERIAL
|
428
|
|
- E5_HARDWARE_SERIAL.begin(TMC_BAUD_RATE);
|
|
439
|
+ HW_SERIAL_BEGIN(E5);
|
429
|
440
|
#else
|
430
|
441
|
stepperE5.beginSerial(TMC_BAUD_RATE);
|
431
|
442
|
#endif
|
432
|
443
|
#endif
|
433
|
444
|
#if AXIS_HAS_UART(E6)
|
434
|
445
|
#ifdef E6_HARDWARE_SERIAL
|
435
|
|
- E6_HARDWARE_SERIAL.begin(TMC_BAUD_RATE);
|
|
446
|
+ HW_SERIAL_BEGIN(E6);
|
436
|
447
|
#else
|
437
|
448
|
stepperE6.beginSerial(TMC_BAUD_RATE);
|
438
|
449
|
#endif
|
439
|
450
|
#endif
|
440
|
451
|
#if AXIS_HAS_UART(E7)
|
441
|
452
|
#ifdef E7_HARDWARE_SERIAL
|
442
|
|
- E7_HARDWARE_SERIAL.begin(TMC_BAUD_RATE);
|
|
453
|
+ HW_SERIAL_BEGIN(E7);
|
443
|
454
|
#else
|
444
|
455
|
stepperE7.beginSerial(TMC_BAUD_RATE);
|
445
|
456
|
#endif
|