Marlin 2.0 + Arduino DUE + TMC2130

Oprogramowanie sterownika drukarki i do łączenia komputera z drukarką
stormy
Konto z ograniczeniami
Postów w temacie: 8
Posty: 35
Rejestracja: 28 gru 2018, 12:54
Lokalizacja: Warszawa/Izabelin
Drukarka: HEVOSteel
x 8

Re: Marlin 2.0 + Arduino DUE + TMC2130

Post autor: stormy »

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 235 razy
pins.h
(37.79 KiB) Pobrany 230 razy
boards.h
(16.28 KiB) Pobrany 230 razy
Configuration.h
(78.95 KiB) Pobrany 232 razy
Hypercube Evolution Steel Frame (w budowie)
stormy
Konto z ograniczeniami
Postów w temacie: 8
Posty: 35
Rejestracja: 28 gru 2018, 12:54
Lokalizacja: Warszawa/Izabelin
Drukarka: HEVOSteel
x 8

Re: Marlin 2.0 + Arduino DUE + TMC2130

Post autor: stormy »

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
Konto z ograniczeniami
Postów w temacie: 2
Posty: 629
Rejestracja: 15 lip 2017, 16:07
Drukarka: Hypercube Evolution
x 100

Re: Marlin 2.0 + Arduino DUE + TMC2130

Post autor: tig33r »

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

Re: Marlin 2.0 + Arduino DUE + TMC2130

Post autor: Berg »

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 Berg, łącznie zmieniany 2 razy.
Awatar użytkownika
Berg
Zasłużony
Postów w temacie: 6
Posty: 7563
Rejestracja: 05 lis 2016, 11:57
Lokalizacja: Kraków
Drukarka: Lume, K8400, HC Evo
x 2661

Re: Marlin 2.0 + Arduino DUE + TMC2130

Post autor: Berg »

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
stormy
Konto z ograniczeniami
Postów w temacie: 8
Posty: 35
Rejestracja: 28 gru 2018, 12:54
Lokalizacja: Warszawa/Izabelin
Drukarka: HEVOSteel
x 8

Re: Marlin 2.0 + Arduino DUE + TMC2130

Post autor: stormy »

@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
Konto z ograniczeniami
Postów w temacie: 8
Posty: 35
Rejestracja: 28 gru 2018, 12:54
Lokalizacja: Warszawa/Izabelin
Drukarka: HEVOSteel
x 8

Re: Marlin 2.0 + Arduino DUE + TMC2130

Post autor: stormy »

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)
Basia M.
Konto z ograniczeniami
Postów w temacie: 2
Posty: 12
Rejestracja: 29 paź 2019, 21:55
x 5

Re: Marlin 2.0 + Arduino DUE + TMC2130

Post autor: Basia M. »

Dobry wieczór Szanownym forumowiczom.

Czytam to forum od długiego już czasu, ale dziś chciałabym się dopytać w temacie, na który nie znalazłam sama odpowiedzi.

Od kilku miesięcy staram się złożyć drukarkę 3D wg. schematu Hypercube Evolution.
Mechanikę mam już zasadniczo złożoną...... ale poległam na oprogramowaniu.

Dysponuję Arduino DUE + SmartRamps, oraz sterownikami 2208 - dlatego piszę w tym wątku, poniekąd pokrewnym.

Chciałabym uruchomić TMC2208 via UART, korzystając z Marlina 2.0
Same sterowniki są już przygotowane ( jest to wersja fysetc V1.2 ).

Wiem, że:
- potrzebuję uruchomić je via TMCStepper by teemuatlut
- wiem, że istnieje biblioteka soft_uart dla Due Atmel ATSAM3X8E
- wiem też, że istnieje gałąź TMCStepper due_sw_uart (niestety nierozwijana ostatnio :( )

Nie wiem niestety, jak to wszystko pożenić - nieszczególnie znam się na konfigurowaniu bibliotek.

Czy mogę prosić o pomoc, albo skierowanie do lepszych źródeł?



Aha - jeszcze jedno - wiem, że mam dostępne co najmniej dwa porty sprzętowe UART, zasadniczo może to by wystarczyło dla obsługi XY, a Z i E puściłabym w trybie TMC2208_STANDALONE ?

--
Basia M.
Holgin
Postów w temacie: 1
Posty: 939
Rejestracja: 06 sty 2019, 18:07
Lokalizacja: Wrocław
Drukarka: Prusa A8
x 479

Re: Marlin 2.0 + Arduino DUE + TMC2130

Post autor: Holgin »

Nie wiem na czym stoi rozwój SW_UART na DUE aktualnie, ale kilka miesięcy temu zrezygnowałem z Arduino DUE na rzecz LPC1768 właśnie z tego powodu, tj braku obsługi softowego UARTa na DUE. Pamiętaj, że jeden port sprzętowy jest używany przez USB.

Oś Z spokojnie może chodzić w trybie Standalone, ale nie wiem jak ekstruder - wiele osób raportowało problemy z ekstruderem na TMC i wtedy fajnie jest pokombinować z konfiguracją.
Awatar użytkownika
Berg
Zasłużony
Postów w temacie: 6
Posty: 7563
Rejestracja: 05 lis 2016, 11:57
Lokalizacja: Kraków
Drukarka: Lume, K8400, HC Evo
x 2661

Re: Marlin 2.0 + Arduino DUE + TMC2130

Post autor: Berg »

@Basia M. Na początek spokojnie możesz uruchomić wszystko bez UART. W zasadzie w tej drukarce ten UART nic specjalnie Ci nie da.
Ustawisz prąd stepstików potencjometrem tak by silniki były ciepłe lub obliczając właściwy vref i będzie śmigać.
Możesz też spokojnie założyć wątek o swojej drukarce tu:
viewforum.php?f=63
ODPOWIEDZ

Wróć do „Firmware'y i hosty”