|
83 | 83 |
|
84 | 84 | #if HAS_TMCX1X0
|
85 | 85 |
|
86 |
| - #if ENABLED(TMC_DEBUG) |
87 |
| - static uint32_t get_pwm_scale(TMC2130Stepper &st) { return st.PWM_SCALE(); } |
88 |
| - #endif |
| 86 | + static uint32_t get_pwm_scale(TMC2130Stepper &st) { return st.PWM_SCALE(); } |
89 | 87 |
|
90 | 88 | static TMC_driver_data get_driver_data(TMC2130Stepper &st) {
|
91 | 89 | constexpr uint8_t OT_bp = 25, OTPW_bp = 26;
|
|
144 | 142 |
|
145 | 143 | #if HAS_DRIVER(TMC2240)
|
146 | 144 |
|
147 |
| - #if ENABLED(TMC_DEBUG) |
148 |
| - static uint32_t get_pwm_scale(TMC2240Stepper &st) { return st.PWM_SCALE(); } |
149 |
| - #endif |
| 145 | + static uint32_t get_pwm_scale(TMC2240Stepper &st) { return st.PWM_SCALE(); } |
150 | 146 |
|
151 | 147 | static TMC_driver_data get_driver_data(TMC2240Stepper &st) {
|
152 | 148 | constexpr uint8_t OT_bp = 25, OTPW_bp = 26;
|
|
205 | 201 |
|
206 | 202 | #if HAS_TMC220x
|
207 | 203 |
|
208 |
| - #if ENABLED(TMC_DEBUG) |
209 |
| - static uint32_t get_pwm_scale(TMC2208Stepper &st) { return st.pwm_scale_sum(); } |
210 |
| - #endif |
| 204 | + static uint32_t get_pwm_scale(TMC2208Stepper &st) { return st.pwm_scale_sum(); } |
211 | 205 |
|
212 | 206 | static TMC_driver_data get_driver_data(TMC2208Stepper &st) {
|
213 | 207 | constexpr uint8_t OTPW_bp = 0, OT_bp = 1;
|
|
242 | 236 |
|
243 | 237 | #if HAS_DRIVER(TMC2660)
|
244 | 238 |
|
245 |
| - #if ENABLED(TMC_DEBUG) |
246 |
| - static uint32_t get_pwm_scale(TMC2660Stepper) { return 0; } |
247 |
| - #endif |
| 239 | + static uint32_t get_pwm_scale(TMC2660Stepper) { return 0; } |
248 | 240 |
|
249 | 241 | static TMC_driver_data get_driver_data(TMC2660Stepper &st) {
|
250 | 242 | constexpr uint8_t OT_bp = 1, OTPW_bp = 2;
|
|
383 | 375 | else if (st.otpw_count > 0) st.otpw_count = 0;
|
384 | 376 | }
|
385 | 377 |
|
386 |
| - #if ENABLED(TMC_DEBUG) |
387 |
| - if (need_debug_reporting) report_polled_driver_data(st, data); |
388 |
| - #endif |
| 378 | + if (need_debug_reporting) { |
| 379 | + TERN_(TMC_DEBUG, report_polled_driver_data(st, data)); |
| 380 | + } |
389 | 381 |
|
390 | 382 | return should_step_down;
|
391 | 383 | }
|
|
518 | 510 | TMC_TSTEP,
|
519 | 511 | TMC_TPWMTHRS,
|
520 | 512 | TMC_TPWMTHRS_MMS,
|
521 |
| - TMC_OTPW, |
| 513 | + TMC_DEBUG_OTPW, |
522 | 514 | TMC_OTPW_TRIGGERED,
|
523 | 515 | TMC_TOFF,
|
524 | 516 | TMC_TBL,
|
|
570 | 562 | TMC_GET_DRVCTRL,
|
571 | 563 | TMC_GET_DRVSTATUS,
|
572 | 564 | TMC_GET_SGCSCONF,
|
573 |
| - TMC_GET_SMARTEN |
| 565 | + TMC_GET_SMARTEN, |
| 566 | + TMC_GET_SG4_THRS, |
| 567 | + TMC_GET_SG4_RESULT |
574 | 568 | };
|
575 | 569 |
|
576 | 570 | template<class TMC>
|
|
598 | 592 | static void print_true_or_false(const bool tf) { SERIAL_ECHO(TRUE_FALSE(tf)); }
|
599 | 593 |
|
600 | 594 | #if HAS_DRIVER(TMC2130) || HAS_DRIVER(TMC5130)
|
| 595 | + // Additional tmc_status fields for 2130/5130 and related drivers |
601 | 596 | static void _tmc_status(TMC2130Stepper &st, const TMC_debug_enum i) {
|
602 | 597 | switch (i) {
|
603 | 598 | case TMC_PWM_SCALE: SERIAL_ECHO(st.PWM_SCALE()); break;
|
|
609 | 604 | }
|
610 | 605 | #endif
|
611 | 606 | #if HAS_TMCX1X0
|
| 607 | + // Additional tmc_parse_drv_status fields for 2130 and related drivers |
612 | 608 | static void _tmc_parse_drv_status(TMC2130Stepper &st, const TMC_drv_status_enum i) {
|
613 | 609 | switch (i) {
|
614 | 610 | case TMC_STALLGUARD: if (st.stallguard()) SERIAL_CHAR('*'); break;
|
|
621 | 617 | #endif
|
622 | 618 |
|
623 | 619 | #if HAS_DRIVER(TMC2160) || HAS_DRIVER(TMC5160)
|
| 620 | + // Additional tmc_status fields for 2160/5160 and related drivers |
624 | 621 | static void _tmc_status(TMC2160Stepper &st, const TMC_debug_enum i) {
|
625 | 622 | switch (i) {
|
626 | 623 | case TMC_PWM_SCALE: SERIAL_ECHO(st.PWM_SCALE()); break;
|
627 | 624 | case TMC_SGT: SERIAL_ECHO(st.sgt()); break;
|
628 | 625 | case TMC_STEALTHCHOP: print_true_or_false(st.en_pwm_mode()); break;
|
629 |
| - case TMC_GLOBAL_SCALER: |
630 |
| - { |
631 |
| - const uint16_t value = st.GLOBAL_SCALER(); |
632 |
| - SERIAL_ECHO(value ?: 256); |
633 |
| - SERIAL_ECHOPGM("/256"); |
634 |
| - } |
635 |
| - break; |
| 626 | + case TMC_GLOBAL_SCALER: { |
| 627 | + const uint16_t value = st.GLOBAL_SCALER(); |
| 628 | + SERIAL_ECHO(value ?: 256); |
| 629 | + SERIAL_ECHOPGM("/256"); |
| 630 | + } break; |
636 | 631 | case TMC_INTERPOLATE: print_true_or_false(st.intpol()); break;
|
637 | 632 | default: break;
|
638 | 633 | }
|
|
641 | 636 |
|
642 | 637 | #if HAS_TMC220x
|
643 | 638 |
|
| 639 | + // Additional tmc_status fields for 2208/2224/2209 drivers |
644 | 640 | static void _tmc_status(TMC2208Stepper &st, const TMC_debug_enum i) {
|
645 | 641 | switch (i) {
|
| 642 | + // PWM_SCALE |
646 | 643 | case TMC_PWM_SCALE_SUM: SERIAL_ECHO(st.pwm_scale_sum()); break;
|
647 | 644 | case TMC_PWM_SCALE_AUTO: SERIAL_ECHO(st.pwm_scale_auto()); break;
|
| 645 | + // PWM_AUTO |
648 | 646 | case TMC_PWM_OFS_AUTO: SERIAL_ECHO(st.pwm_ofs_auto()); break;
|
649 | 647 | case TMC_PWM_GRAD_AUTO: SERIAL_ECHO(st.pwm_grad_auto()); break;
|
| 648 | + // CHOPCONF |
650 | 649 | case TMC_STEALTHCHOP: print_true_or_false(st.stealth()); break;
|
651 | 650 | case TMC_INTERPOLATE: print_true_or_false(st.intpol()); break;
|
652 | 651 | default: break;
|
653 | 652 | }
|
654 | 653 | }
|
655 | 654 |
|
656 | 655 | #if HAS_DRIVER(TMC2209)
|
| 656 | + // Additional tmc_status fields for 2209 drivers |
657 | 657 | template<char AXIS_LETTER, char DRIVER_ID, AxisEnum AXIS_ID>
|
658 | 658 | static void _tmc_status(TMCMarlin<TMC2209Stepper, AXIS_LETTER, DRIVER_ID, AXIS_ID> &st, const TMC_debug_enum i) {
|
659 | 659 | switch (i) {
|
660 | 660 | case TMC_SGT: SERIAL_ECHO(st.SGTHRS()); break;
|
661 | 661 | case TMC_UART_ADDR: SERIAL_ECHO(st.get_address()); break;
|
662 | 662 | default:
|
663 |
| - TMC2208Stepper *parent = &st; |
664 |
| - _tmc_status(*parent, i); |
| 663 | + _tmc_status(static_cast<TMC2208Stepper &>(st), i); |
665 | 664 | break;
|
666 | 665 | }
|
667 | 666 | }
|
668 | 667 | #endif
|
669 | 668 |
|
| 669 | + // Additional tmc_parse_drv_status fields for 2208/2224/2209 drivers |
670 | 670 | static void _tmc_parse_drv_status(TMC2208Stepper &st, const TMC_drv_status_enum i) {
|
671 | 671 | switch (i) {
|
672 | 672 | case TMC_T157: if (st.t157()) SERIAL_CHAR('*'); break;
|
|
681 | 681 | }
|
682 | 682 |
|
683 | 683 | #if HAS_DRIVER(TMC2209)
|
| 684 | + // Additional tmc_parse_drv_status fields for 2209 drivers |
684 | 685 | static void _tmc_parse_drv_status(TMC2209Stepper &st, const TMC_drv_status_enum i) {
|
685 | 686 | switch (i) {
|
686 | 687 | case TMC_SG_RESULT: SERIAL_ECHO(st.SG_RESULT()); break;
|
687 |
| - default: _tmc_parse_drv_status(static_cast<TMC2208Stepper &>(st), i); break; |
| 688 | + default: |
| 689 | + _tmc_parse_drv_status(static_cast<TMC2208Stepper &>(st), i); |
| 690 | + break; |
688 | 691 | }
|
689 | 692 | }
|
690 | 693 | #endif
|
691 | 694 |
|
692 | 695 | #endif // HAS_TMC220x
|
693 | 696 |
|
694 | 697 | #if HAS_DRIVER(TMC2240)
|
695 |
| - static void _tmc_parse_drv_status(TMC2240Stepper, const TMC_drv_status_enum) { } |
| 698 | + |
| 699 | + // Additional tmc_parse_drv_status fields for 2240 drivers |
| 700 | + static void _tmc_parse_drv_status(TMC2240Stepper &st, const TMC_drv_status_enum i) { |
| 701 | + switch (i) { |
| 702 | + case TMC_S2VSA: if (st.s2vsa()) SERIAL_CHAR('*'); break; |
| 703 | + case TMC_S2VSB: if (st.s2vsb()) SERIAL_CHAR('*'); break; |
| 704 | + case TMC_STEALTHCHOP: print_true_or_false(st.stealth()); break; |
| 705 | + case TMC_FSACTIVE: if (st.fsactive()) SERIAL_CHAR('*'); break; |
| 706 | + case TMC_DRV_CS_ACTUAL: if (st.CS_ACTUAL()) SERIAL_CHAR('*'); break; |
| 707 | + case TMC_STALLGUARD: if (st.stallguard()) SERIAL_CHAR('*'); break; |
| 708 | + //case TMC_OT: if (st.ot()) SERIAL_CHAR('*'); break; |
| 709 | + case TMC_DEBUG_OTPW: print_true_or_false(st.otpw()); break; |
| 710 | + //case TMC_S2GA: if (st.s2ga()) SERIAL_CHAR('*'); break; |
| 711 | + //case TMC_S2GB: if (st.s2gb()) SERIAL_CHAR('*'); break; |
| 712 | + //case TMC_OLA: if (st.ola()) SERIAL_CHAR('*'); break; |
| 713 | + //case TMC_OLB: if (st.olb()) SERIAL_CHAR('*'); break; |
| 714 | + case TMC_SG_RESULT: SERIAL_ECHO(st.SG_RESULT()); break; |
| 715 | + case TMC_STST: if (!st.stst()) SERIAL_CHAR('*'); break; |
| 716 | + default: break; // other... |
| 717 | + } |
| 718 | + } |
| 719 | + |
| 720 | + // Additional tmc_status fields for 2240 drivers |
696 | 721 | static void _tmc_status(TMC2240Stepper &st, const TMC_debug_enum i) {
|
697 | 722 | switch (i) {
|
| 723 | + // PWM_SCALE |
698 | 724 | case TMC_PWM_SCALE_SUM: SERIAL_ECHO(st.pwm_scale_sum()); break;
|
699 | 725 | case TMC_PWM_SCALE_AUTO: SERIAL_ECHO(st.pwm_scale_auto()); break;
|
| 726 | + // PWM_AUTO |
700 | 727 | case TMC_PWM_OFS_AUTO: SERIAL_ECHO(st.pwm_ofs_auto()); break;
|
701 | 728 | case TMC_PWM_GRAD_AUTO: SERIAL_ECHO(st.pwm_grad_auto()); break;
|
| 729 | + // CHOPCONF |
702 | 730 | case TMC_STEALTHCHOP: print_true_or_false(st.stealth()); break;
|
703 | 731 | case TMC_INTERPOLATE: print_true_or_false(st.intpol()); break;
|
704 | 732 | default: break;
|
705 | 733 | }
|
706 | 734 | }
|
707 |
| - #endif |
| 735 | + |
| 736 | + #endif // TMC2240 |
708 | 737 |
|
709 | 738 | #if HAS_DRIVER(TMC2660)
|
710 | 739 | static void _tmc_parse_drv_status(TMC2660Stepper, const TMC_drv_status_enum) { }
|
|
740 | 769 | case TMC_CURRENT: SERIAL_ECHO(st.getMilliamps()); break;
|
741 | 770 | case TMC_RMS_CURRENT: SERIAL_ECHO(st.rms_current()); break;
|
742 | 771 | case TMC_MAX_CURRENT: SERIAL_ECHO(p_float_t(st.rms_current() * 1.41, 0)); break;
|
743 |
| - case TMC_IRUN: |
744 |
| - SERIAL_ECHO(st.irun()); |
745 |
| - SERIAL_ECHOPGM("/31"); |
746 |
| - break; |
747 |
| - case TMC_IHOLD: |
748 |
| - SERIAL_ECHO(st.ihold()); |
749 |
| - SERIAL_ECHOPGM("/31"); |
750 |
| - break; |
| 772 | + case TMC_IRUN: SERIAL_ECHO(st.irun()); SERIAL_ECHOPGM("/31"); break; |
| 773 | + case TMC_IHOLD: SERIAL_ECHO(st.ihold()); SERIAL_ECHOPGM("/31"); break; |
751 | 774 | case TMC_CS_ACTUAL: print_cs_actual(st); break;
|
752 | 775 | case TMC_VSENSE: print_vsense(st); break;
|
753 | 776 | case TMC_MICROSTEPS: SERIAL_ECHO(st.microsteps()); break;
|
|
759 | 782 | if (tpwmthrs_val) SERIAL_ECHO(tpwmthrs_val); else SERIAL_CHAR('-');
|
760 | 783 | } break;
|
761 | 784 | #endif
|
762 |
| - case TMC_OTPW: print_true_or_false(st.otpw()); break; |
| 785 | + case TMC_DEBUG_OTPW: print_true_or_false(st.otpw()); break; |
763 | 786 | #if ENABLED(MONITOR_DRIVER_STATUS)
|
764 | 787 | case TMC_OTPW_TRIGGERED: print_true_or_false(st.getOTPW()); break;
|
765 | 788 | #endif
|
|
782 | 805 | case TMC_CURRENT: SERIAL_ECHO(st.getMilliamps()); break;
|
783 | 806 | case TMC_RMS_CURRENT: SERIAL_ECHO(st.rms_current()); break;
|
784 | 807 | case TMC_MAX_CURRENT: SERIAL_ECHO(p_float_t(st.rms_current() * 1.41, 0)); break;
|
785 |
| - case TMC_IRUN: |
786 |
| - SERIAL_ECHO(st.cs()); |
787 |
| - SERIAL_ECHOPGM("/31"); |
788 |
| - break; |
| 808 | + case TMC_IRUN: SERIAL_ECHO(st.cs()); SERIAL_ECHOPGM("/31"); break; |
789 | 809 | case TMC_VSENSE: SERIAL_ECHO(st.vsense() ? F("1=.165") : F("0=.310")); break;
|
790 | 810 | case TMC_MICROSTEPS: SERIAL_ECHO(st.microsteps()); break;
|
791 |
| - //case TMC_OTPW: print_true_or_false(st.otpw()); break; |
| 811 | + //case TMC_DEBUG_OTPW: print_true_or_false(st.otpw()); break; |
792 | 812 | //case TMC_OTPW_TRIGGERED: print_true_or_false(st.getOTPW()); break;
|
793 | 813 | case TMC_SGT: SERIAL_ECHO(st.sgt()); break;
|
794 | 814 | case TMC_TOFF: SERIAL_ECHO(st.toff()); break;
|
|
798 | 818 | default: _tmc_status(st, i); break;
|
799 | 819 | }
|
800 | 820 | }
|
801 |
| - #endif |
| 821 | + #endif // TMC2660 |
802 | 822 |
|
803 | 823 | template <typename TMC>
|
804 | 824 | static void tmc_parse_drv_status(TMC &st, const TMC_drv_status_enum i) {
|
805 | 825 | SERIAL_CHAR('\t');
|
806 | 826 | switch (i) {
|
807 |
| - case TMC_DRV_CODES: st.printLabel(); break; |
808 |
| - case TMC_STST: if (!st.stst()) SERIAL_CHAR('*'); break; |
809 |
| - case TMC_OLB: if (st.olb()) SERIAL_CHAR('*'); break; |
810 |
| - case TMC_OLA: if (st.ola()) SERIAL_CHAR('*'); break; |
811 |
| - case TMC_S2GB: if (st.s2gb()) SERIAL_CHAR('*'); break; |
812 |
| - case TMC_S2GA: if (st.s2ga()) SERIAL_CHAR('*'); break; |
813 |
| - case TMC_DRV_OTPW: if (st.otpw()) SERIAL_CHAR('*'); break; |
814 |
| - case TMC_OT: if (st.ot()) SERIAL_CHAR('*'); break; |
| 827 | + case TMC_DRV_CODES: st.printLabel(); break; |
| 828 | + case TMC_STST: if (!st.stst()) SERIAL_CHAR('*'); break; |
| 829 | + case TMC_OLB: if (st.olb()) SERIAL_CHAR('*'); break; |
| 830 | + case TMC_OLA: if (st.ola()) SERIAL_CHAR('*'); break; |
| 831 | + case TMC_S2GB: if (st.s2gb()) SERIAL_CHAR('*'); break; |
| 832 | + case TMC_S2GA: if (st.s2ga()) SERIAL_CHAR('*'); break; |
| 833 | + case TMC_DRV_OTPW: if (st.otpw()) SERIAL_CHAR('*'); break; |
| 834 | + case TMC_OT: if (st.ot()) SERIAL_CHAR('*'); break; |
815 | 835 | case TMC_DRV_STATUS_HEX: {
|
816 | 836 | const uint32_t drv_status = st.DRV_STATUS();
|
817 |
| - SERIAL_CHAR('\t'); |
818 |
| - st.printLabel(); |
819 |
| - SERIAL_CHAR('\t'); |
820 |
| - print_hex_long(drv_status, ':', true); |
| 837 | + SERIAL_CHAR('\t'); st.printLabel(); SERIAL_CHAR('\t'); print_hex_long(drv_status, ':', true); |
821 | 838 | if (drv_status == 0xFFFFFFFF || drv_status == 0) SERIAL_ECHOPGM("\t Bad response!");
|
822 | 839 | SERIAL_EOL();
|
823 |
| - break; |
824 |
| - } |
| 840 | + } break; |
825 | 841 | default: _tmc_parse_drv_status(st, i); break;
|
826 | 842 | }
|
827 | 843 | }
|
|
936 | 952 | TMC_REPORT("tstep\t", TMC_TSTEP);
|
937 | 953 | TMC_REPORT("PWM thresh.", TMC_TPWMTHRS);
|
938 | 954 | TMC_REPORT("[mm/s]\t", TMC_TPWMTHRS_MMS);
|
939 |
| - TMC_REPORT("OT prewarn", TMC_OTPW); |
| 955 | + TMC_REPORT("OT prewarn", TMC_DEBUG_OTPW); |
940 | 956 | #if ENABLED(MONITOR_DRIVER_STATUS)
|
941 | 957 | TMC_REPORT("triggered\n OTP\t", TMC_OTPW_TRIGGERED);
|
942 | 958 | #endif
|
|
954 | 970 | TMC_REPORT(" -start\t", TMC_HSTRT);
|
955 | 971 | TMC_REPORT("Stallguard thrs", TMC_SGT);
|
956 | 972 | TMC_REPORT("uStep count", TMC_MSCNT);
|
| 973 | + |
957 | 974 | DRV_REPORT("DRVSTATUS", TMC_DRV_CODES);
|
958 | 975 | #if HAS_TMCX1X0_OR_2240 || HAS_TMC220x
|
959 | 976 | DRV_REPORT("sg_result", TMC_SG_RESULT);
|
|
974 | 991 | DRV_REPORT("150C\t", TMC_T150);
|
975 | 992 | DRV_REPORT("143C\t", TMC_T143);
|
976 | 993 | DRV_REPORT("120C\t", TMC_T120);
|
| 994 | + #endif |
| 995 | + #if HAS_TMC220x || HAS_DRIVER(TMC2240) |
977 | 996 | DRV_REPORT("s2vsa\t", TMC_S2VSA);
|
978 | 997 | DRV_REPORT("s2vsb\t", TMC_S2VSB);
|
979 | 998 | #endif
|
980 |
| - DRV_REPORT("Driver registers:\n",TMC_DRV_STATUS_HEX); |
| 999 | + DRV_REPORT("Driver registers:\n", TMC_DRV_STATUS_HEX); |
981 | 1000 | SERIAL_EOL();
|
982 | 1001 | }
|
983 | 1002 |
|
|
1018 | 1037 | }
|
1019 | 1038 | SERIAL_CHAR('\t');
|
1020 | 1039 | }
|
| 1040 | + |
1021 | 1041 | #endif // HAS_TRINAMIC_CONFIG
|
1022 | 1042 |
|
1023 | 1043 | #if HAS_DRIVER(TMC2660)
|
|
0 commit comments