소스 검색

Fix extra TMC serial begin calls (#17351)

Simon Jouet 5 년 전
부모
커밋
192c7c27b9
No account linked to committer's email address
1개의 변경된 파일27개의 추가작업 그리고 16개의 파일을 삭제
  1. 27
    16
      Marlin/src/module/stepper/trinamic.cpp

+ 27
- 16
Marlin/src/module/stepper/trinamic.cpp 파일 보기

@@ -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

Loading…
취소
저장