Marlin 2.0 + Arduino DUE + TMC2130

Oprogramowanie sterownika drukarki i do łączenia komputera z drukarką
stormy
Posty: 33
Rejestracja: 28 gru 2018, 12:54
Lokalizacja: Warszawa/Izabelin
Drukarka: HEVOSteel
x 8

Re: Marlin 2.0 + Arduino DUE + TMC2130

Postautor: stormy » 09 lip 2019, 14:12

No dobra, już widzę co z czym się gryzie...

Przepis na katastrofę:
1. Ściągamy czystego marlina
2. W pins.h dodajemy linijkę:

Kod: Zaznacz cały

#elif MB(DUE3DOM_LE)
  #include "pins_DUE3DOM_LE.h"        // SAM3X8E                                    env:DUE env:DUE_USB env:DUE_debug

3. W boards.h dodajemy linijkę

Kod: Zaznacz cały

#define BOARD_DUE3DOM_LE              3099  // DUE3DOM LE for Arduino DUE

4. Wgrywamy pins_DUE3DOM_LE.h do odpowiedniego katalogu
5. W Configuration.h modyfikujemy/odkumentowujemy:

Kod: Zaznacz cały

  #define MOTHERBOARD BOARD_DUE3DOM_LE
  #define REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER

  #define X_DRIVER_TYPE  TMC2130
  #define Y_DRIVER_TYPE  TMC2130
  #define Z_DRIVER_TYPE  A4988


Kompilujemy, wgrywamy, działa.

6. W Configuration.h odkumentowujemy:

Kod: Zaznacz cały

  #define PSU_CONTROL
  #define AUTO_POWER_CONTROL  // Enable automatic control of the PS_ON pin


Kompilujemy, wgrywamy i... katastrofa.
Arduino Due wisi tak, że nie da się ponownie nic do niego wgrać. Trzeba na włączonym wcisnąc przycisk "erase" a następnie "reset" i dopiero ożywa.

Czyli jest jakaś niezrozumiała kolizja między TMC2130 a AUTO_POWER_CONTROL.
I nie chodzi o piny, bo próbowałem PS_ON_PIN zmienić z 40 na np. 31 ale dalej jest to samo.

Jakieś pomysły o co chodzi?
Załączniki
pins_DUE3DOM_LE.h
(6.24 KiB) Pobrany 7 razy
pins.h
(37.79 KiB) Pobrany 7 razy
boards.h
(16.28 KiB) Pobrany 7 razy
Configuration.h
(78.95 KiB) Pobrany 9 razy
Hypercube Evolution Steel Frame (w budowie)
stormy
Posty: 33
Rejestracja: 28 gru 2018, 12:54
Lokalizacja: Warszawa/Izabelin
Drukarka: HEVOSteel
x 8

Re: Marlin 2.0 + Arduino DUE + TMC2130

Postautor: stormy » 09 lip 2019, 15:37

Przepraszam, że tak post pod postem bo blog się z tego robi, ale niestety na tym forum z niezrozumiałych dla mnie powodów nie da się edytować postów po 10 minutach...

Wszystko już jasne.

W power.cpp

Kod: Zaznacz cały

void Power::power_on() {
  lastPowerOn = millis();
  if (!powersupply_on) {
    PSU_PIN_ON();

    #if HAS_TRINAMIC
      delay(100); // Wait for power to settle
      restore_stepper_drivers();
    #endif
  }
}


I w stepper_indirection.cpp

Kod: Zaznacz cały

void restore_stepper_drivers() {
  #if AXIS_IS_TMC(X)
    stepperX.push();
  #endif


I problem polega na tym, że bezpośrednio po włączeniu zasilania wywoływana jest metoda 'push()' z biblioteki TMCStepper.
Tak po prostu na pałę, bez żadnego sprawdzenia czy jest komunikacja, czy nie. A z jakiś powodów jej nie ma, być może coś jest jeszcze nie zainicjowane, albo delay jest za krótki - tego już mi się nie chce sprawdzać.
Wystarczy zakomentować linijkę "stepperX.push();" (i ew. odpowiednio dla Y itd.) albo "restore_stepper_dirvers()" i wszystko startuje a na wyświetlaczu pojawia się komunikat "TMC Connection Error" albo normalny ekran startowy.
Do tego jeszcze oryginalne TMC nie komunikują się jeżeli nie mają podanego napięcia na Vmot (dziwne, IMHO do komunikacji powinno im wystarczyć tylko podanie Vcc).
Hypercube Evolution Steel Frame (w budowie)
tig33r
Posty: 544
Rejestracja: 15 lip 2017, 16:07
Drukarka: Hypercube Evolution
x 89

Re: Marlin 2.0 + Arduino DUE + TMC2130

Postautor: tig33r » 09 lip 2019, 15:59

To teraz załóż issue z tym na gicie marlina. Oszczędzisz problemów wielu ludziom. :)
Awatar użytkownika
rafaljot
Zasłużony
Posty: 4796
Rejestracja: 05 lis 2016, 11:57
Lokalizacja: Kraków
Drukarka: Lume, K8400, HC Evo
x 1044

Re: Marlin 2.0 + Arduino DUE + TMC2130

Postautor: rafaljot » 09 lip 2019, 16:00

Hmmm. @stormy, No bo u mnie było odwrotnie tmc na soft a wyświetlacz na sprzętowym. No i tu może być klucz do wyjaśnienia zagadki.
Powiedz jeszcze jaką masz wersję Arduino IDE (rozumiem, że linux)

To możesz spróbować przepiąć SPI od TMC na jakieś wolne piny. i dodać w configu:
TMC_SW_MOSI
TMC_SW_MISO
TMC_SW_SCK

może obejdzie się bez modyfikacji innych plików. Z ciekawości sprawdzę, czy jakieś waity nie będą mieć wpływu również na inicjację wyświetlacza z przy sprzętowym SPI
Ostatnio zmieniony 09 lip 2019, 16:07 przez rafaljot, łącznie zmieniany 2 razy.
Prusa i3 mk3s bear upgrade
Photon
Lume+
Velleman Vertex K8400x2
HyperCube Evolution ST 250
Anycubik Kossel Plus
Awatar użytkownika
rafaljot
Zasłużony
Posty: 4796
Rejestracja: 05 lis 2016, 11:57
Lokalizacja: Kraków
Drukarka: Lume, K8400, HC Evo
x 1044

Re: Marlin 2.0 + Arduino DUE + TMC2130

Postautor: rafaljot » 09 lip 2019, 16:04

To jeszcze dodam. Pewnie, jak wszyscy, masz klona Arduino DUE. Warto zanim wszystko poskładasz wykonać tę poprawkę:

https://forum.arduino.cc/index.php?topic=256771.60
https://copperhilltech.com/blog/arduino ... res-reset/
http://forum.freetronics.com/viewtopic.php?f=45&t=6055

Mam dwa DUE. W jednym zrobiłem bo włączał się co drugi raz. W drugim tego nie zrobiłem ale widzę że raz na jakiś czas dostaje dziwnego szału przy uruchomieniu.

ja mam u siebie tak jak tu:
Obrazek
Prusa i3 mk3s bear upgrade
Photon
Lume+
Velleman Vertex K8400x2
HyperCube Evolution ST 250
Anycubik Kossel Plus
stormy
Posty: 33
Rejestracja: 28 gru 2018, 12:54
Lokalizacja: Warszawa/Izabelin
Drukarka: HEVOSteel
x 8

Re: Marlin 2.0 + Arduino DUE + TMC2130

Postautor: stormy » 09 lip 2019, 16:59

@tig33r:
Oczywiście już jest. https://github.com/MarlinFirmware/Marlin/issues/14558

@rafaljot:
1. Mam Arduino IDE 1.8.9 na linuxie (ale to nie ma znaczenia - patrz pkt 4)
2. Nie chcę przepinać SPI od TMC bo na DUE3DOM LE jest to zrobione na PCB (poza tym to bez sensu i nic nie da - patrz pkt 4)
3. Arduino Due mam oryginalne
4. Dalsze testy i kombinowania nie mają już sensu, bo to jest ewidentny bug w Marlinie.

Quick&Dirty fix to po prostu zakomentowanie tych push'ów, bo one nie są i tak konieczne. Tak na szybko zrobiłem i wszystko działa.
Elegancki fix to było by zrobienie porządnej, zgodnej ze sztuką obsługi błędów komunikacji z TMC2130 w metodzie "restore_stepper_drivers()".
tig33r
Hypercube Evolution Steel Frame (w budowie)
stormy
Posty: 33
Rejestracja: 28 gru 2018, 12:54
Lokalizacja: Warszawa/Izabelin
Drukarka: HEVOSteel
x 8

Re: Marlin 2.0 + Arduino DUE + TMC2130

Postautor: stormy » 11 lip 2019, 14:03

Mały update:

Nie pisałem tutaj o tym, ale oprócz zgłoszenia issue #14558 opisałem problem w komentarzu do innego issue - https://github.com/MarlinFirmware/Marlin/issues/12144

W efekcie jeden z devloperów przyznał, że problem istnieje i "[...]we just have to not go into an infinite loop if the steppers are un-powered, whether at boot or any other time.[...]"
Zaź samo issue #14558 uzyskało statusy "Bug: confirmed!" oraz "Needs patch" więc jest nadzieja, że to zostanie szybko poprawione.
Hypercube Evolution Steel Frame (w budowie)

Wróć do „Firmware'y i hosty”

Kto jest online

Użytkownicy przeglądający to forum: Cypis i 3 gości