TMC2209 problem uart. MKS robin nano

Jakość druku Cię nie zadowala?
Awatar użytkownika
arkomania.pl
Postów w temacie: 7
Posty: 832
Rejestracja: 10 mar 2017, 13:08
Lokalizacja: RADOM
x 373

Re: TMC2209 problem uart. MKS robin nano

Post autor: arkomania.pl »

Można wpiąć w PA9 i PA10, wystarczy tylko to uwzględnić w pliku pins_MKS_ROBIN_NANO.h

Trochę ci się myli kiedy UART jest sprzętowy, a kiedy programowy.
Złącze PA9 i PA10 są końcówkami TX i RX jednego sprzętowego UART, ale
w przypadku mojej konfiguracji są portami skonfigurowanymi "programowo" SOFTWARE SERIAL PORT.

Zauważ, że:
PA9 stanowi zarówno TX jak i RX dla jednego kabla podłączonego do stepsticka,
podobnie jest z PA10 (TX/RX) sterującego drugim stepstickiem.


#define X_SERIAL_TX_PIN PA10
#define X_SERIAL_RX_PIN PA10

#define Y_SERIAL_TX_PIN PA9
#define Y_SERIAL_RX_PIN PA9
Pozdrawiam Arek G. arkomania
mk77
Postów w temacie: 15
Posty: 102
Rejestracja: 28 sty 2021, 18:27
x 10

Re: TMC2209 problem uart. MKS robin nano

Post autor: mk77 »

a nie jest tak że wszystkie linie TX z 4 stepów podłączam np pod PA9 i wszystkie 4 linie RX podłączam pod PA10 tylko zworkami znajdującymi się pod stepami każdy z osobna stepstick adresuję ?
Mati
Postów w temacie: 1
Posty: 505
Rejestracja: 10 maja 2020, 17:28
Lokalizacja: Okolice Poznania
Drukarka: Ender 3, V-Core2 i 3
x 169

Re: TMC2209 problem uart. MKS robin nano

Post autor: Mati »

Nie.
Awatar użytkownika
JohnJames
Postów w temacie: 14
Posty: 108
Rejestracja: 28 sie 2020, 20:56
Lokalizacja: Warszawa
Drukarka: Sapphire Pro
x 14

Re: TMC2209 problem uart. MKS robin nano

Post autor: JohnJames »

Równie dobrze przekornie można stwierdzić, że tak :mrgreen:
To zależy od wybranego rozwiązania.
Ja mam zrobione na sprzętowym serialu zgodnie z rysunkiem w dokumentacji TMC2209 - https://www.trinamic.com/fileadmin/asse ... t_V103.pdf, rysunek 4.1, lewy obrazek.
Kolega arkomania.pl ma, jak widzę, na programowym, w którym jeden pin procka służy do komunikacji z jednym stepstickiem.
Teraz już dokładnie nie pamiętam, ale jak szukałem informacji na ten temat - zostałem przytłoczony różnymi rozbieżnymi informacjami na temat sposobu realizacji komunikacji ze stepstickami. Nie znalazłem usystematyzowanego opisu, natomiast bardzo dużo różnych wykonań.
Sytuację komplikuje fakt, że ludzie mają generalnie różne płyty i wykonania stepsticków (różnie wyprowadzone TX/RX, różnie zezworowane podstawki), do których trzeba dostosować połączenia. Dlatego IMHO trzeba przede wszystkim rozumieć, co się robi w odniesieniu do sprzętu, który się posiada.
Sapphire Pro - coś tam dłubię
mk77
Postów w temacie: 15
Posty: 102
Rejestracja: 28 sty 2021, 18:27
x 10

Re: TMC2209 problem uart. MKS robin nano

Post autor: mk77 »

Ja chcę właśnie zrobić sprzętowy uart. Jeśli się da jak nie to programowy. Po prostu pobawię się dla satysfakcji i własnej nauki. Ale to kwestia rozwiązania sprzętowego. Problem który na tą chwilę mam to tak jak w swoim poście opisałem, dotyczy kompilacji marlina. Kompilator wywala mi błąd po włączeniu pewnych ustawień i nie do końca wiem dlaczego.
Konfiguracja dla 2209_standalone przeszła. Firmware się skompilował i działa w drukarce. Błędami wali przy włączeniu uart.
Awatar użytkownika
JohnJames
Postów w temacie: 14
Posty: 108
Rejestracja: 28 sie 2020, 20:56
Lokalizacja: Warszawa
Drukarka: Sapphire Pro
x 14

Re: TMC2209 problem uart. MKS robin nano

Post autor: JohnJames »

mk77 pisze:Konfiguracja dla 2209_standalone przeszła. Firmware się skompilował i działa w drukarce. Błędami wali przy włączeniu uart.
Możesz zobaczyć, jak jest u mnie https://github.com/bkiziuk/Marlin/tree/bugfix-2.0.x
Ostatnio kompilowane dwa dni temu, na wersji bugfix-2.0.x.
Sapphire Pro - coś tam dłubię
Awatar użytkownika
azael
Postów w temacie: 2
Posty: 97
Rejestracja: 19 sty 2021, 12:00
Lokalizacja: Silesia
Drukarka: Voron 2.4r2
x 21

Re: TMC2209 problem uart. MKS robin nano

Post autor: azael »

@mk7, w pliku ..\Marlin\src\pins\stm32f1\pins_MKS_ROBIN_NANO.h zakomentuj:

Kod: Zaznacz cały

#define  X_SLAVE_ADDRESS 0
#define  Y_SLAVE_ADDRESS 1
#define  Z_SLAVE_ADDRESS 2
#define E0_SLAVE_ADDRESS 3
masz to już ustawione w conf.adv, sprawdź czy Ci kompilacja wywali się w tym samym miejscu.

Jeżeli masz niezakomentowane pozostałe definicje adresów "#define X2_SLAVE_ADDRESS"... itd. to je zakomentuj albo ustaw wartość na "-1"

Kod: Zaznacz cały

  #define X2_SLAVE_ADDRESS -1
  #define Y2_SLAVE_ADDRESS -1
  #define Z2_SLAVE_ADDRESS -1
  #define Z3_SLAVE_ADDRESS -1
  #define Z4_SLAVE_ADDRESS -1
...
skoVoronek 2.4
mk77
Postów w temacie: 15
Posty: 102
Rejestracja: 28 sty 2021, 18:27
x 10

Re: TMC2209 problem uart. MKS robin nano

Post autor: mk77 »

Dzięki za podpowiedź, wieczorem w domu posprawdzam to.
mk77
Postów w temacie: 15
Posty: 102
Rejestracja: 28 sty 2021, 18:27
x 10

Re: TMC2209 problem uart. MKS robin nano

Post autor: mk77 »

Marlina mam dokładnie tą wersję https://github.com/le3tspeak/Marlin-2.0 ... Robin-Nano

Przywróciłem do stanu pierwotnego 3 pliki Configuration.h, Configuration_adv.h oraz pins_MKS_ROBIN_NANO.h aby nie było wątpliwości że zostały jakieś śmieci z wcześniejszego dłubania.
To zaczynam od nowa

W pliku Configuration.h
włączyłem

Kod: Zaznacz cały

#define CUSTOM_STEPPER_DRIVERS
co odblokowało sekcję

Kod: Zaznacz cały

#if ENABLED(CUSTOM_STEPPER_DRIVERS)
  #define DRIVER_X TMC2209
  #define DRIVER_Y TMC2209
  #define DRIVER_Z TMC2209
  #define DRIVER_E0 TMC2209

  #define INVERT_Z 
  #define INVERT_E0 
#endif
Kompilator w tym miejscu wyrzuca coś takiego

Kod: Zaznacz cały

Marlin\src\HAL\STM32F1\../../inc/SanityCheck.h:2294:4: error: #error "TMC2208 or TMC2209 on X requires X_HARDWARE_SERIAL or X_SERIAL_(RX|TX)_PIN."
   #error "TMC2208 or TMC2209 on X requires X_HARDWARE_SERIAL or X_SERIAL_(RX|TX)_PIN."

Marlin\src\HAL\STM32F1\../../inc/SanityCheck.h:2334:6: error: #error "X COOLSTEP settings must be defined in Configuration_adv.h."
     #error "X COOLSTEP settings must be defined in Configuration_adv.h."

Marlin\src\HAL\STM32F1\../../inc/SanityCheck.h:2340:6: error: #error "Y COOLSTEP settings must be defined in Configuration_adv.h."
     #error "Y COOLSTEP settings must be defined in Configuration_adv.h."

Marlin\src\HAL\STM32F1\../../inc/SanityCheck.h:2346:6: error: #error "Z COOLSTEP settings must be defined in Configuration_adv.h."
     #error "Z COOLSTEP settings must be defined in Configuration_adv.h."

Marlin\src\HAL\STM32F1\../../inc/SanityCheck.h:2358:6: error: #error "E0 COOLSTEP settings must be defined in Configuration_adv.h."
     #error "E0 COOLSTEP settings must be defined in Configuration_adv.h."
W takim razie w pliku pins_MKS_ROBIN_NANO.h

włączam

Kod: Zaznacz cały

#define HARDWARE_SERIAL
i odblokowuję sekcję

Kod: Zaznacz cały

#if ENABLED(HARDWARE_SERIAL)
    #define X_HARDWARE_SERIAL  Serial1
    #define Y_HARDWARE_SERIAL  Serial1
    #define Z_HARDWARE_SERIAL  Serial1
    #define E0_HARDWARE_SERIAL Serial1

    #define  X_SLAVE_ADDRESS 0    
    #define  Y_SLAVE_ADDRESS 1    
    #define  Z_SLAVE_ADDRESS 2    
    #define E0_SLAVE_ADDRESS 3    

    #define X_SERIAL_TX_PIN                   PA9
    #define X_SERIAL_RX_PIN                   PA10
    
    #define Y_SERIAL_TX_PIN                   PA9
    #define Y_SERIAL_RX_PIN                   PA10
    
    #define Z_SERIAL_TX_PIN                   PA9
    #define Z_SERIAL_RX_PIN                   PA10

    #define E0_SERIAL_TX_PIN                  PA9
    #define E0_SERIAL_RX_PIN                  PA10
#endif
Kolejny build i wywala już tylko komunikat o COOLSTEP
No to włączam w pliku Configuration.h

Kod: Zaznacz cały

#define COOLSTEP
bo w Configuration_adv.h nie mam tej zmiennej ale jest taka sekcja, która się uaktywnia

Kod: Zaznacz cały

#if ENABLED(COOLSTEP)
    #if AXIS_HAS_COOLSTEP(X)
      #define X_COOLSTEP_SPEED_THRESHOLD        5
      #define X_COOLSTEP_LOWER_LOAD_THRESHOLD   0
      #define X_COOLSTEP_UPPER_LOAD_THRESHOLD   0
      #define X_COOLSTEP_SEUP                   0
      #define X_COOLSTEP_SEDN                   0
      #define X_COOLSTEP_SEIMIN                 0
    #endif

    #if AXIS_HAS_COOLSTEP(Y)
      #define Y_COOLSTEP_SPEED_THRESHOLD        5
      #define Y_COOLSTEP_LOWER_LOAD_THRESHOLD   0
      #define Y_COOLSTEP_UPPER_LOAD_THRESHOLD   0
      #define Y_COOLSTEP_SEUP                   0
      #define Y_COOLSTEP_SEDN                   0
      #define Y_COOLSTEP_SEIMIN                 0
    #endif

    #if AXIS_HAS_COOLSTEP(Z)
      #define Z_COOLSTEP_SPEED_THRESHOLD        5
      #define Z_COOLSTEP_LOWER_LOAD_THRESHOLD   0
      #define Z_COOLSTEP_UPPER_LOAD_THRESHOLD   0
      #define Z_COOLSTEP_SEUP                   0
      #define Z_COOLSTEP_SEDN                   0
      #define Z_COOLSTEP_SEIMIN                 0
    #endif

    #if AXIS_HAS_COOLSTEP(E0)
      #define E0_COOLSTEP_SPEED_THRESHOLD       5
      #define E0_COOLSTEP_LOWER_LOAD_THRESHOLD  0
      #define E0_COOLSTEP_UPPER_LOAD_THRESHOLD  0
      #define E0_COOLSTEP_SEUP                  0
      #define E0_COOLSTEP_SEDN                  0
      #define E0_COOLSTEP_SEIMIN                0
    #endif
  #endif
Kolejny build i kompilator wywala to

Kod: Zaznacz cały

In file included from buildroot/share/PlatformIO/scripts/common-dependencies.h:47:0:
buildroot/share/PlatformIO/scripts/../../../../Marlin/src/core/drivers.h:153:40: error: missing binary operator before token "("
 #define _OR_EAH(N,T)    || AXIS_HAS_##T(E##N)
                                        ^
buildroot/share/PlatformIO/scripts/../../../../Marlin/src/core/drivers.h:154:28: note: in expansion of macro '_OR_EAH'
 #define E_AXIS_HAS(T)   (0 _OR_EAH(0,T) _OR_EAH(1,T) _OR_EAH(2,T) _OR_EAH(3,T) _OR_EAH(4,T) _OR_EAH(5,T) _OR_EAH(6,T) _OR_EAH(7,T))

buildroot/share/PlatformIO/scripts/../../../../Marlin/src/core/drivers.h:158:70: note: in expansion of macro 'E_AXIS_HAS'
                           || AXIS_HAS_##T(Z3) || AXIS_HAS_##T(Z4) || E_AXIS_HAS(T) )

buildroot/share/PlatformIO/scripts/../../../../Marlin/src/core/drivers.h:169:5: note: in expansion of macro 'ANY_AXIS_HAS'
 #if ANY_AXIS_HAS(COOLSTEP)

CalledProcessError: Command 'arm-none-eabi-g++.exe -DTARGET_STM32F1 -D__MARLIN_FIRMWARE__ -DHAVE_SW_SERIAL -DMCU_STM32F103VE -DSS_TIMER=4 -w -dM -E -x c++ buildroot/share/PlatformIO/scripts/common-dependencies.h' returned non-zero exit status 1.:
  File "C:\users\mk\.platformio\penv\lib\site-packages\platformio\builder\main.py", line 175:
    env.SConscript(item, exports="env")
  File "C:\Users\MK\.platformio\packages\tool-scons\scons-local-4.1.0\SCons\Script\SConscript.py", line 591:
    return _SConscript(self.fs, *files, **subst_kw)
  File "C:\Users\MK\.platformio\packages\tool-scons\scons-local-4.1.0\SCons\Script\SConscript.py", line 280:

  File "D:\3D druk\Sapphire pro\Firmware\Marlin\Marlin-2.0.X-MKS-Robin-Nano-MKS-Robin-Nano\buildroot\share\PlatformIO\scripts\common-dependencies.py", line 280:
    apply_features_config()
  File "D:\3D druk\Sapphire pro\Firmware\Marlin\Marlin-2.0.X-MKS-Robin-Nano-MKS-Robin-Nano\buildroot\share\PlatformIO\scripts\common-dependencies.py", line 112:
    if not env.MarlinFeatureIsEnabled(feature):
  File "C:\Users\MK\.platformio\packages\tool-scons\scons-local-4.1.0\SCons\Util.py", line 658:
    return self.method(*nargs, **kwargs)
  File "D:\3D druk\Sapphire pro\Firmware\Marlin\Marlin-2.0.X-MKS-Robin-Nano-MKS-Robin-Nano\buildroot\share\PlatformIO\scripts\common-dependencies.py", line 256:
    load_marlin_features()
  File "D:\3D druk\Sapphire pro\Firmware\Marlin\Marlin-2.0.X-MKS-Robin-Nano-MKS-Robin-Nano\buildroot\share\PlatformIO\scripts\common-dependencies.py", line 244:
    define_list = subprocess.check_output(cmd, shell=True).splitlines()
  File "C:\Users\MK\.platformio\python3\lib\subprocess.py", line 411:
    **kwargs).stdout
  File "C:\Users\MK\.platformio\python3\lib\subprocess.py", line 512:
    output=stdout, stderr=stderr)

Czyli po włączeniu COOLSTEP wracam do tego samego błędu co wcześniej pisałem ale bez włączenia tego COOLSTEP nie przechodzi build.
Podejrzewam że muszę wpisać odpowiednie parametry w tej sekcji od COOLSTEP tylko nie mam pojęcia co tam wpisać.
Awatar użytkownika
azael
Postów w temacie: 2
Posty: 97
Rejestracja: 19 sty 2021, 12:00
Lokalizacja: Silesia
Drukarka: Voron 2.4r2
x 21

Re: TMC2209 problem uart. MKS robin nano

Post autor: azael »

To, wg mnie, nie jest problem sekcji COOLSTEP, tylko składni kompilowanego kodu. W programowaniu jetem za krótki żeby wysznupać o co chodzi dokładnie.
Jak chcesz mogę Ci udostępnić moje konfigi z UART do 2209, tylko że one są "soft serial".
skoVoronek 2.4
ODPOWIEDZ

Wróć do „Kalibracja, problemy”