Browse Source

Fix extra TMC serial begin calls (#17351)

Simon Jouet 5 years ago
parent
commit
192c7c27b9
No account linked to committer's email address
1 changed files with 27 additions and 16 deletions
  1. 27
    16
      Marlin/src/module/stepper/trinamic.cpp

+ 27
- 16
Marlin/src/module/stepper/trinamic.cpp View File

331
     #endif
331
     #endif
332
   #endif
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
   void tmc_serial_begin() {
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
     #if AXIS_HAS_UART(X)
346
     #if AXIS_HAS_UART(X)
336
       #ifdef X_HARDWARE_SERIAL
347
       #ifdef X_HARDWARE_SERIAL
337
-        X_HARDWARE_SERIAL.begin(TMC_BAUD_RATE);
348
+        HW_SERIAL_BEGIN(X);
338
       #else
349
       #else
339
         stepperX.beginSerial(TMC_BAUD_RATE);
350
         stepperX.beginSerial(TMC_BAUD_RATE);
340
       #endif
351
       #endif
341
     #endif
352
     #endif
342
     #if AXIS_HAS_UART(X2)
353
     #if AXIS_HAS_UART(X2)
343
       #ifdef X2_HARDWARE_SERIAL
354
       #ifdef X2_HARDWARE_SERIAL
344
-        X2_HARDWARE_SERIAL.begin(TMC_BAUD_RATE);
355
+        HW_SERIAL_BEGIN(X2);
345
       #else
356
       #else
346
         stepperX2.beginSerial(TMC_BAUD_RATE);
357
         stepperX2.beginSerial(TMC_BAUD_RATE);
347
       #endif
358
       #endif
348
     #endif
359
     #endif
349
     #if AXIS_HAS_UART(Y)
360
     #if AXIS_HAS_UART(Y)
350
       #ifdef Y_HARDWARE_SERIAL
361
       #ifdef Y_HARDWARE_SERIAL
351
-        Y_HARDWARE_SERIAL.begin(TMC_BAUD_RATE);
362
+        HW_SERIAL_BEGIN(Y);
352
       #else
363
       #else
353
         stepperY.beginSerial(TMC_BAUD_RATE);
364
         stepperY.beginSerial(TMC_BAUD_RATE);
354
       #endif
365
       #endif
355
     #endif
366
     #endif
356
     #if AXIS_HAS_UART(Y2)
367
     #if AXIS_HAS_UART(Y2)
357
       #ifdef Y2_HARDWARE_SERIAL
368
       #ifdef Y2_HARDWARE_SERIAL
358
-        Y2_HARDWARE_SERIAL.begin(TMC_BAUD_RATE);
369
+        HW_SERIAL_BEGIN(Y2);
359
       #else
370
       #else
360
         stepperY2.beginSerial(TMC_BAUD_RATE);
371
         stepperY2.beginSerial(TMC_BAUD_RATE);
361
       #endif
372
       #endif
362
     #endif
373
     #endif
363
     #if AXIS_HAS_UART(Z)
374
     #if AXIS_HAS_UART(Z)
364
       #ifdef Z_HARDWARE_SERIAL
375
       #ifdef Z_HARDWARE_SERIAL
365
-        Z_HARDWARE_SERIAL.begin(TMC_BAUD_RATE);
376
+        HW_SERIAL_BEGIN(Z);
366
       #else
377
       #else
367
         stepperZ.beginSerial(TMC_BAUD_RATE);
378
         stepperZ.beginSerial(TMC_BAUD_RATE);
368
       #endif
379
       #endif
369
     #endif
380
     #endif
370
     #if AXIS_HAS_UART(Z2)
381
     #if AXIS_HAS_UART(Z2)
371
       #ifdef Z2_HARDWARE_SERIAL
382
       #ifdef Z2_HARDWARE_SERIAL
372
-        Z2_HARDWARE_SERIAL.begin(TMC_BAUD_RATE);
383
+        HW_SERIAL_BEGIN(Z2);
373
       #else
384
       #else
374
         stepperZ2.beginSerial(TMC_BAUD_RATE);
385
         stepperZ2.beginSerial(TMC_BAUD_RATE);
375
       #endif
386
       #endif
376
     #endif
387
     #endif
377
     #if AXIS_HAS_UART(Z3)
388
     #if AXIS_HAS_UART(Z3)
378
       #ifdef Z3_HARDWARE_SERIAL
389
       #ifdef Z3_HARDWARE_SERIAL
379
-        Z3_HARDWARE_SERIAL.begin(TMC_BAUD_RATE);
390
+        HW_SERIAL_BEGIN(Z3);
380
       #else
391
       #else
381
         stepperZ3.beginSerial(TMC_BAUD_RATE);
392
         stepperZ3.beginSerial(TMC_BAUD_RATE);
382
       #endif
393
       #endif
383
     #endif
394
     #endif
384
     #if AXIS_HAS_UART(Z4)
395
     #if AXIS_HAS_UART(Z4)
385
       #ifdef Z4_HARDWARE_SERIAL
396
       #ifdef Z4_HARDWARE_SERIAL
386
-        Z4_HARDWARE_SERIAL.begin(TMC_BAUD_RATE);
397
+        HW_SERIAL_BEGIN(Z4);
387
       #else
398
       #else
388
         stepperZ4.beginSerial(TMC_BAUD_RATE);
399
         stepperZ4.beginSerial(TMC_BAUD_RATE);
389
       #endif
400
       #endif
390
     #endif
401
     #endif
391
     #if AXIS_HAS_UART(E0)
402
     #if AXIS_HAS_UART(E0)
392
       #ifdef E0_HARDWARE_SERIAL
403
       #ifdef E0_HARDWARE_SERIAL
393
-        E0_HARDWARE_SERIAL.begin(TMC_BAUD_RATE);
404
+        HW_SERIAL_BEGIN(E0);
394
       #else
405
       #else
395
         stepperE0.beginSerial(TMC_BAUD_RATE);
406
         stepperE0.beginSerial(TMC_BAUD_RATE);
396
       #endif
407
       #endif
397
     #endif
408
     #endif
398
     #if AXIS_HAS_UART(E1)
409
     #if AXIS_HAS_UART(E1)
399
       #ifdef E1_HARDWARE_SERIAL
410
       #ifdef E1_HARDWARE_SERIAL
400
-        E1_HARDWARE_SERIAL.begin(TMC_BAUD_RATE);
411
+        HW_SERIAL_BEGIN(E1);
401
       #else
412
       #else
402
         stepperE1.beginSerial(TMC_BAUD_RATE);
413
         stepperE1.beginSerial(TMC_BAUD_RATE);
403
       #endif
414
       #endif
404
     #endif
415
     #endif
405
     #if AXIS_HAS_UART(E2)
416
     #if AXIS_HAS_UART(E2)
406
       #ifdef E2_HARDWARE_SERIAL
417
       #ifdef E2_HARDWARE_SERIAL
407
-        E2_HARDWARE_SERIAL.begin(TMC_BAUD_RATE);
418
+        HW_SERIAL_BEGIN(E2);
408
       #else
419
       #else
409
         stepperE2.beginSerial(TMC_BAUD_RATE);
420
         stepperE2.beginSerial(TMC_BAUD_RATE);
410
       #endif
421
       #endif
411
     #endif
422
     #endif
412
     #if AXIS_HAS_UART(E3)
423
     #if AXIS_HAS_UART(E3)
413
       #ifdef E3_HARDWARE_SERIAL
424
       #ifdef E3_HARDWARE_SERIAL
414
-        E3_HARDWARE_SERIAL.begin(TMC_BAUD_RATE);
425
+        HW_SERIAL_BEGIN(E3);
415
       #else
426
       #else
416
         stepperE3.beginSerial(TMC_BAUD_RATE);
427
         stepperE3.beginSerial(TMC_BAUD_RATE);
417
       #endif
428
       #endif
418
     #endif
429
     #endif
419
     #if AXIS_HAS_UART(E4)
430
     #if AXIS_HAS_UART(E4)
420
       #ifdef E4_HARDWARE_SERIAL
431
       #ifdef E4_HARDWARE_SERIAL
421
-        E4_HARDWARE_SERIAL.begin(TMC_BAUD_RATE);
432
+        HW_SERIAL_BEGIN(E4);
422
       #else
433
       #else
423
         stepperE4.beginSerial(TMC_BAUD_RATE);
434
         stepperE4.beginSerial(TMC_BAUD_RATE);
424
       #endif
435
       #endif
425
     #endif
436
     #endif
426
     #if AXIS_HAS_UART(E5)
437
     #if AXIS_HAS_UART(E5)
427
       #ifdef E5_HARDWARE_SERIAL
438
       #ifdef E5_HARDWARE_SERIAL
428
-        E5_HARDWARE_SERIAL.begin(TMC_BAUD_RATE);
439
+        HW_SERIAL_BEGIN(E5);
429
       #else
440
       #else
430
         stepperE5.beginSerial(TMC_BAUD_RATE);
441
         stepperE5.beginSerial(TMC_BAUD_RATE);
431
       #endif
442
       #endif
432
     #endif
443
     #endif
433
     #if AXIS_HAS_UART(E6)
444
     #if AXIS_HAS_UART(E6)
434
       #ifdef E6_HARDWARE_SERIAL
445
       #ifdef E6_HARDWARE_SERIAL
435
-        E6_HARDWARE_SERIAL.begin(TMC_BAUD_RATE);
446
+        HW_SERIAL_BEGIN(E6);
436
       #else
447
       #else
437
         stepperE6.beginSerial(TMC_BAUD_RATE);
448
         stepperE6.beginSerial(TMC_BAUD_RATE);
438
       #endif
449
       #endif
439
     #endif
450
     #endif
440
     #if AXIS_HAS_UART(E7)
451
     #if AXIS_HAS_UART(E7)
441
       #ifdef E7_HARDWARE_SERIAL
452
       #ifdef E7_HARDWARE_SERIAL
442
-        E7_HARDWARE_SERIAL.begin(TMC_BAUD_RATE);
453
+        HW_SERIAL_BEGIN(E7);
443
       #else
454
       #else
444
         stepperE7.beginSerial(TMC_BAUD_RATE);
455
         stepperE7.beginSerial(TMC_BAUD_RATE);
445
       #endif
456
       #endif

Loading…
Cancel
Save