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.
Znaleziono 8 wyników
Wróć do „Marlin 2.0 + Arduino DUE + TMC2130”
- 11 lip 2019, 14:03
- Forum: Firmware'y i hosty
- Temat: Marlin 2.0 + Arduino DUE + TMC2130
- Odpowiedzi: 21
- Odsłony: 11859
- 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()".
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()".
- 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
I w stepper_indirection.cpp
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).
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
}
}
Kod: Zaznacz cały
void restore_stepper_drivers() {
#if AXIS_IS_TMC(X)
stepperX.push();
#endif
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).
- 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ę:
3. W boards.h dodajemy linijkę
4. Wgrywamy pins_DUE3DOM_LE.h do odpowiedniego katalogu
5. W Configuration.h modyfikujemy/odkumentowujemy:
Kompilujemy, wgrywamy, działa.
6. W Configuration.h odkumentowujemy:
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?
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
Kod: Zaznacz cały
#define BOARD_DUE3DOM_LE 3099 // DUE3DOM LE for Arduino DUE
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
6. W Configuration.h odkumentowujemy:
Kod: Zaznacz cały
#define PSU_CONTROL
#define AUTO_POWER_CONTROL // Enable automatic control of the PS_ON pin
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?
- 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
Nie, TMC chodzą na sprzętowym SPI, a LCD chodzi na pinach 43-47 czyli pewnie na SoftSPI.rafaljot pisze:Problemem może być to że tmc i wyświetlacz chodzą na wspólnym SPI, o ile tka to masz zrobione.
@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.
- 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ę:
- zmodyfikowąłem boards.h dodając lilnijkę:
- dograłem plik pins_DUE3DOM_LE.h (załączam)
- w Configuration.h wpisałem
i odkomentowałem:
Cała reszta została nietknięta.
O oto efekt: Natomiast ciekawostka jest taka, że zrobiłem jeszcze jeden eksperyment i dopisałem do tego czystego configa
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.
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
Kod: Zaznacz cały
#define BOARD_DUE3DOM_LE 3099 // DUE3DOM LE for Arduino DUE
- w Configuration.h wpisałem
Kod: Zaznacz cały
#define MOTHERBOARD BOARD_DUE3DOM_LE
Kod: Zaznacz cały
#define REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER
O oto efekt: 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
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.
- 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
a dla porównania z TMC2130Stepper:
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:
to wszytko działa pięknie, a jak tylko te 2 linijki zmienię na:
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ą.
@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
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
@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
Kod: Zaznacz cały
#define X_DRIVER_TYPE TMC2130
#define Y_DRIVER_TYPE TMC2130
#define Z_DRIVER_TYPE A4988
Całkowicie powtarzalne, więc to MUSI być coś związanego z tą biblioteką.
- 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?
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?