Znaleziono 8 wyników

autor: stormy
11 lip 2019, 14:03
Forum: Firmware'y i hosty
Temat: Marlin 2.0 + Arduino DUE + TMC2130
Odpowiedzi: 21
Odsłony: 11859

Re: Marlin 2.0 + Arduino DUE + TMC2130

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.
autor: stormy
09 lip 2019, 16:59
Forum: Firmware'y i hosty
Temat: Marlin 2.0 + Arduino DUE + TMC2130
Odpowiedzi: 21
Odsłony: 11859

Re: Marlin 2.0 + Arduino DUE + TMC2130

@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()".
autor: stormy
09 lip 2019, 15:37
Forum: Firmware'y i hosty
Temat: Marlin 2.0 + Arduino DUE + TMC2130
Odpowiedzi: 21
Odsłony: 11859

Re: Marlin 2.0 + Arduino DUE + TMC2130

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).
autor: stormy
09 lip 2019, 14:12
Forum: Firmware'y i hosty
Temat: Marlin 2.0 + Arduino DUE + TMC2130
Odpowiedzi: 21
Odsłony: 11859

Re: Marlin 2.0 + Arduino DUE + TMC2130

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?
autor: stormy
09 lip 2019, 13:18
Forum: Firmware'y i hosty
Temat: Marlin 2.0 + Arduino DUE + TMC2130
Odpowiedzi: 21
Odsłony: 11859

Re: Marlin 2.0 + Arduino DUE + TMC2130

rafaljot pisze:Problemem może być to że tmc i wyświetlacz chodzą na wspólnym SPI, o ile tka to masz zrobione.
Nie, TMC chodzą na sprzętowym SPI, a LCD chodzi na pinach 43-47 czyli pewnie na SoftSPI.

@Marvin27:
Nie i nie planuję.
Obecnie mam zwykły termistor taki jak fabrycznie był w klonie V6 od TDI-CAD.
Będę pewnie zmieniał na PT1000, ale niestety w PL nie da się tego kupić w małej obudowie a nie mogę teraz nic zamówić z Aliexpress.
autor: stormy
08 lip 2019, 18:56
Forum: Firmware'y i hosty
Temat: Marlin 2.0 + Arduino DUE + TMC2130
Odpowiedzi: 21
Odsłony: 11859

Re: Marlin 2.0 + Arduino DUE + TMC2130

@rafaljot:
Bez wyświetlacza też jest źle, więc to nie kolizja z wyświetlaczem.
W ogóle to Arduino tak się po tym blokuje, że bez wciśnięcia przycisku "Erase" nie jest możliwe wgranie czegokolwiek.
Na początku mocno mnie to nastraszyło, bo myślałem, że uwaliło się Due.

Co do twojej prośby:
- ściągnąłem czystego Marlina 2.0
- zmodyfikowałem pins.h dodając linijkę:

Kod: Zaznacz cały

#elif MB(DUE3DOM_LE)
  #include "pins_DUE3DOM_LE.h"        // SAM3X8E                                    env:DUE env:DUE_USB env:DUE_debug
  
- zmodyfikowąłem boards.h dodając lilnijkę:

Kod: Zaznacz cały

#define BOARD_DUE3DOM_LE              3099  // DUE3DOM LE for Arduino DUE
- dograłem plik pins_DUE3DOM_LE.h (załączam)
- w Configuration.h wpisałem

Kod: Zaznacz cały

  #define MOTHERBOARD BOARD_DUE3DOM_LE
i odkomentowałem:

Kod: Zaznacz cały

#define REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER
Cała reszta została nietknięta.

O oto efekt:
IMG_20190708_182421.jpg
Natomiast ciekawostka jest taka, że zrobiłem jeszcze jeden eksperyment i dopisałem do tego czystego configa

Kod: Zaznacz cały

#define X_DRIVER_TYPE  TMC2130
#define Y_DRIVER_TYPE  TMC2130
#define Z_DRIVER_TYPE  A4988
i Arduino się uruchomiło (co prawda wypisując na dole wyświetlacza komunikat TMC communication error, ale to szczegół).

Następny krok - wgranie do tego nowszego Marlina (mój był z 10.04.2019) mojego konfiga. Efekt - wisi.
Więc wygląda na to, że coś z czymś się gryzie.
Muszę teraz pracowicie linijka po linijce sprawdzić co z czym koliduje.
Najbardziej upierdliwe jest to, że po każdej nieudanej próbie muszę wymontować Due bo inaczej nie mogę się dostać do przycisku "erase" a bez jego wciśnięcia nie da się wgrać niczego ani przez Programing port ani przez Native USB.
autor: stormy
08 lip 2019, 13:01
Forum: Firmware'y i hosty
Temat: Marlin 2.0 + Arduino DUE + TMC2130
Odpowiedzi: 21
Odsłony: 11859

Re: Marlin 2.0 + Arduino DUE + TMC2130

Dzięki za odzew.

@bialy_worek:
TMCStepper nie wspiera SAM.

Tak wygląda library.properties

Kod: Zaznacz cały

name=TMCStepper
version=0.4.5
author=teemuatlut
maintainer=teemuatlut
sentence=Arduino library for Trinamic stepper drivers
paragraph=Easily configure your Trinamic stepper motor drivers
category=Device Control
url=https://github.com/teemuatlut/TMCStepper
architectures=avr
a dla porównania z TMC2130Stepper:

Kod: Zaznacz cały

name=TMC2130Stepper
version=2.5.1
author=teemuatlut
maintainer=teemuatlut
sentence=Arduino library for Trinamic TMC2130 stepper drivers
paragraph=Easily configure your TMC2130 stepper motor drivers
category=Device Control
url=https://github.com/teemuatlut/TMC2130Stepper
architectures=avr,sam
Nie chciałbym się cofać do 1.9 bo 2.0 do momentu upgrade stepsticków działało świetnie.

@rafaljot
Mam graficzny 12864 i bez problemu działa z Marlinem 2.0 na SAM.
Kompiluje w Arduino IDE na Linuxie.

Ale to wszystko nie może być problemem, bo do momentu zmiany stepsticka wszystko działało pięknie.

Jeżeli w Configuration.h mam:

Kod: Zaznacz cały

#define X_DRIVER_TYPE  A4988
#define Y_DRIVER_TYPE  A4988
#define Z_DRIVER_TYPE  A4988
to wszytko działa pięknie, a jak tylko te 2 linijki zmienię na:

Kod: Zaznacz cały

#define X_DRIVER_TYPE  TMC2130
#define Y_DRIVER_TYPE  TMC2130
#define Z_DRIVER_TYPE  A4988
to jest podane ostrzeżenie o niekompatybilnej architekturze i Arduino nie startuje (tak, nie startuje, to nie jest tylko kwestia wyświetlacza, nie da się z nim połączyć przez USB) - dokładnie jak to opisano tutaj: https://github.com/MarlinFirmware/Marlin/issues/1214
Całkowicie powtarzalne, więc to MUSI być coś związanego z tą biblioteką.
autor: stormy
07 lip 2019, 15:32
Forum: Firmware'y i hosty
Temat: Marlin 2.0 + Arduino DUE + TMC2130
Odpowiedzi: 21
Odsłony: 11859

Marlin 2.0 + Arduino DUE + TMC2130

Mam problem z uruchomieniem zestawu Marlin bugfix-2.0.x + Due3Dom LE + TMC2130.

Do obsługi TMC2130 Marlin 2.0 wymaga biblioteki TMCStepper.
Jednak po zainstalowaniu tej biblioteki przy kompilacji jest ostrzeżenie:
"UWAGA: biblioteka TMCStepper działa na architekturze(/architekturach) (avr) i może nie być kompatybilna z obecną płytką która działa na architekturze(/architekturach) (sam)."
Używam tej biblioteki: https://github.com/teemuatlut/TMCStepper
Oczywiście z tak skompilowanym firmware drukarka nie startuje (pusty wyświetlacz).

A architekturą SAM jest kompatybilna biblioteka TMC2130Stepper, ale ona nie działa z Marlin 2.0 bo ten od wersji 1.1.9 działa tylko z TMCStepper.

Znalazłem podobny problem: https://github.com/MarlinFirmware/Marlin/issues/12144 ale nie doczekał się sensownego rozwiązania.

Jakieś pomysły? Ktoś używa Marlina na Due3Dom z TMC2130?

Wróć do „Marlin 2.0 + Arduino DUE + TMC2130”