logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

Arduino Mega 2560 – kopiowanie pamięci Flash drukarki 3D do drugiej płytki, brak działania

delta85 11 Lis 2025 18:32 531 16
REKLAMA
  • #1 21748407
    delta85
    Poziom 16  
    Posty: 327
    Ocena: 9
    Witam
    Chciałem przygotować sobie zapasową płytkę Arduino Mega 2560 do drukarki 3D Prusa, z oprogramowaniem Marlin 1.1 do obsługi tejże drukarki.
    Mam zapasową płytkę Arduino Mega 2560. Samo wgranie do niej programu Marlin nie jest problemem, można to zrobić przy pomocy Arduino IDE. Gorzej jest z dostosowaniem różnych ustawień Marlin-a dla konkretnej drukarki.
    Nie bardzo wiem co konkretnie zmienić i w którym miejscu.
    Dlatego żeby sobie ułatwić to pomyślałem że zgram zawartość pamięci Flash z płytki zamontowanej w drukarce i wgram ją do dodatkowej płytki.
    Płytki te nie są zabezpieczone Lock bitami bo zczytuję zawartość procesora i wgrywam do drugiej płytki, ale po wgraniu tej zawartości do drugiej płytki po skasowaniu całej poprzedniej zawartości i zamontowaniu jej w drukarce wyświetlacz tylko się zaswieca ale nie pokazuje żadnych wartości. Drukarką nie można sterować.
    Oprogramowanie Marlin 1.1 jest wolnym oprogramowaniem (open source) więc kopiowanie jest chyba dozwolone.
    Do tego zczytywania i wgrywania używałem programów: mkAVR Calculator, Bascom AVR oraz XLoader. W każdym przypadku zczytywanie i wgrywanie kończyło się pomyślnie, nie było komunikatów o błędach, ale mimo to płytka Arduino Mega 2560 w drukarce nie pracuje, nie uruchamia się.
    Proszę o pomoc dziękując jednocześnie za przeczytanie tego posta do końca. A jeszcze bardziej będę wdzięczny za pomoc w rozwiązaniu mojego problemu.
    Pozdrawiam
  • REKLAMA
  • #2 21748502
    elktrod
    Poziom 41  
    Posty: 5281
    Pomógł: 786
    Ocena: 1391
    Tak opisałeś, że wynika z tego iż masz dwa problemy:
    1. Nie działa Ci kopia procesora (płytki)? No to widocznie jednak jest coś nie tak z dostępnością do możliwości kopiowania?
    2. Nie bardzo wiesz co konkretnie zmienić w kodzie pod BASCOM ? No to też nie bardzo idzie Ci pomóc bo i w czym? Napisałeś: "Gorzej jest z dostosowaniem różnych ustawień Marlina dla konkretnej drukarki." - A sam nie podałeś tych ustawień ani jaką masz konkretną drukarkę więc też nie idzie Ci pomóc bo i w czym?

    Z tego co widzę w internecie to projekt Marlina dla drukarek 3D jest w ciągłej fazie rozwojowej i obecnie stabilną wersją jest chyba 2.1.2 więc dlaczego zajmujesz się wersją 1.1?
  • #3 21748541
    gps79
    Poziom 37  
    Posty: 2212
    Pomógł: 495
    Ocena: 798
    Cześć,
    Aby poprawnie wykonać klona płytki Marlina musisz wykonać kopię:
    1) pamięci Flash (tu siedzi program)
    2) pamięci EEPROM (tu są ustawienia drukarki)
    3) Fusebity (konfiguracja mikrokontrolera)
    Najprościej zrobisz to programem mkAVR Calculator, lub moim ulubionym AVRDUDESS (dwa s na końcu). Arduino IDE nie jest dobre do sczytywania i wgrywania zawartości mikrokontrolera.
    Jeśli nowa płytka nie jest zepsutym klonem Mega 2560, to będzie działać, bo poza trzema w/w punktami nic więcej się nie konfiguruje w mikrokontrolerze.

    Jeśli nadal coś nie działa, to wrzuć tu na forum pliki, które zgrałeś ze starego Atmega 2560, podaj jakie tam masz fusebity i wrzuć zdjęcia starej i nowej płytki. Będziemy się zastanawiać, co dalej.
  • #4 21748708
    jarewa
    Poziom 35  
    Posty: 3145
    Pomógł: 229
    Ocena: 532
    Nie musi zgrywać EEPROM jak nie zgra a wgra program to przy pierwszym uruchomieniu mu wykrzyczy o braku i zapisze standardowe ustawienia, w działającej płytce gdzie zgrywasz podłącz się przez uart i zaczytaj ustawienia gcode M503 zapisz wszystko co "wypluje" i jeszcze M115 .

    Jak będziesz miał odczyt z M503 to już będzie z górki, poustawiaj wszystko na drugiej zgodnie z tym co dostałeś.
  • #5 21748892
    delta85
    Poziom 16  
    Posty: 327
    Ocena: 9
    Witam ponownie.
    No więc tak -
    gps79 - tak właśnie robię jak piszesz. W mkAVR Calculator ze starej płytki kopiuję pamięć Flash, pamięć EEPROM i w tym samym programie zapisuję to do nowej płytki po wcześniejszym wyczyszczeniu obu pamięci. Po tym w nowej płytce ustawiam zapamiętane wcześniej Fusebity.
    Nowa płytka wygląda na nie uszkodzoną bo programem Arduino bez problemu wgrywają się przykładowe szkice z Arduino.

    To widok obu płytek. Czerwone strzałki pokazują diody LED. Na starej płytce ta dioda świeci światłem ciągłym, na nowej po wgraniu skopiowanej zawartości FLASH dioda ta miga

    Dwie płytki Arduino Mega 2560 obok siebie z zaznaczonymi diodami LED.

    A tutaj ustawienia Fusebit-ów

    Zrzuty ekranu ustawień fusebitów dla mikrokontrolera ATmega2560 w mkAVR Calculator

    Mam problem z podaniem tutaj tych plików hex i epp.

    jarewa - bardzo Ci dziękuję za sugestie, ale nigdy nie korzystałem z UART i nie bardzo się w tym orientuję. Z tego co doczytałem to używa się do tego konwertera USB-UART którego w tej chwili nie posiadam.
    Załączniki:
    • FLASH.hex (614.33 KB) Musisz być zalogowany, aby pobrać ten załącznik.
  • REKLAMA
  • #7 21748900
    jarewa
    Poziom 35  
    Posty: 3145
    Pomógł: 229
    Ocena: 532
    No jak nie posiadasz jak plytka ma w sobie tylko kablem USB podłączyć do komputera poustawiać porty i jakimś programem Repetier odczytać
  • #8 21748922
    lopr_pol
    Poziom 32  
    Posty: 1725
    Pomógł: 164
    Ocena: 491
    To już nie prościej skompilować sobie ze źródeł marlina gotowy wsad?
  • #9 21748931
    jarewa
    Poziom 35  
    Posty: 3145
    Pomógł: 229
    Ocena: 532
    Surowy ze źródeł to juz nie jest tak prosto, sporo ustawien jest zaszytych w programie juz skompilowane nie do odczytu. Jakby gdzies byly pliki źródłowe konfiguracji tego co ma to bylo by prościej, ale teraz sie domyślaj kto co ustawił i jak.
  • REKLAMA
  • #10 21748941
    elktrod
    Poziom 41  
    Posty: 5281
    Pomógł: 786
    Ocena: 1391
    delta85 napisał:
    Po tym w nowej płytce ustawiam zapamiętane wcześniej Fusebity.

    Zapewne po ustawieniu zapisujesz je także na nową płytkę a nie tylko ustawiasz? To tak gwoli ścisłości...
    Albowiem nadal szukam przyczyny dlaczego to dokładna kopia o ile taką jest czyli dokładną kopią nie działa Ci tak jak oryginał?
  • #11 21748976
    delta85
    Poziom 16  
    Posty: 327
    Ocena: 9
    Oczywiście Fusebity zapisuję, nie że tylko ustawiam.

    Dodano po 6 [minuty]:

    jarewa - podłączałem obie płytki kablem USB, zainstalowałem Repetier-a i oto co mi pokazały logi

    Stara płytka

    Okno z informacjami o drukarce 3D Prusa z firmware Marlin

    Nowa płytka

    Okno Repetier z informacją o drukarce: typ unknown, 1 ekstruder, 10 linii wysłanych
    Załączniki:
    • Log nowa płytka.txt (57 Bajtów) Musisz być zalogowany, aby pobrać ten załącznik.
    • Log stara płytka.txt (2.04 KB) Musisz być zalogowany, aby pobrać ten załącznik.
  • #13 21749028
    jarewa
    Poziom 35  
    Posty: 3145
    Pomógł: 229
    Ocena: 532
    Ja bardzo dużo ze na nowej coś ci marlin nie działa daj tam m502 i m500 i sprawdz jeszcze raz
  • REKLAMA
  • #16 21749116
    gps79
    Poziom 37  
    Posty: 2212
    Pomógł: 495
    Ocena: 798
    Cześć,
    Przejrzałem Twoje pliki. Plik EEPROM wygląda dobrze, fusebity również, natomiast plik z Flashem nie zawiera kodu, a jedynie dwukrotną kopię Bootloader-a. Zatem szacuję, że Twoja aplikacja (mkAVR Calculator) nie zadziałała zgodnie z założeniami.

    Jako, że mam Marlina (choć w nieco starszej wersji), to opiszę tutaj procedurę zgrania flasha do pliku, która działa u mnie i powinna również u Ciebie:
    1. Podłącz drukarkę do portu USB.
    2. Uruchom AVRDUDESS
    3. Wybierz programator "Atmel AVR ISP v2" oraz port COM, do którego podłączyła się drukarka (u mnie był to COM7)
    Zrzut ekranu z AVRDUDESS z wybranym programatorem Atmel AVR ISP v2 i portem COM7
    4. Kliknij "Detect" i jednocześnie kliknij przycisk reset na płytce Mega2560 (programowanie działa tylko w trybie bootloadera, a bootloader jest aktywny jedynie przez chwilę po resecie płytki).
    Aplikacja powinna rozpoznać mikrokontroler. W logu na dole okna dostaniesz odpowiednią informację lub napis "avrdude error: timeout", jeśli nie zdążyłeś równomiernie kliknąć w obu miejscach.
    Zrzut ekranu z AVRDUDESS z wybranym mikrokontrolerem ATmega2560 i przyciskiem Detect
    5. Zgraj zawartość pamięci flash w formacie Intel HEX, zaznaczając "Read" i klikając "Go" i resetując w tym samym czasie płytkę Mega2560
    Zrzut ekranu z AVRDUDESS pokazujący konfigurację do odczytu flash i EEPROM
    Zrzut ekranu z terminala pokazujący odczyt pamięci flash mikrokontrolera Atmega2560
    6. Dla pewności zgraj zawartość pamięci EEPROM do pliku, jak wyżej.
    Tak zgrane pliki możesz wgrać na nową płytkę wybierając w kroku 5 i 6 "Write" zamiast "Read".
  • #17 21749618
    delta85
    Poziom 16  
    Posty: 327
    Ocena: 9
    gps79 - zrobiłem tak jak zasugerowałaś i w końcu udało mi się zrobić tę kopię Marlin-a i wgrać go do nowej płytki.
    Gdyby nie Twoja informacja że skopiowany kod tak naprawdę nie zawiera właściwego kodu to pewnie nic by z tego nie było bo jakoś nie zwróciłem na to uwagi. Bo nie mając komunikatów o błędach (co wydaje się trochę dziwne) nie myślałem o tym.
    Dziękuję kolegom za zainteresowanie tematem.
    Szczególnie podziękowania przesyłam dla kolegi gps79.
    Problem rozwiązany.
    Temat można zamknąć.
    Pozdrawiam

Podsumowanie tematu

LABEL_AI_GENERATED
Użytkownik posiada zapasową płytkę Arduino Mega 2560 i chce skopiować zawartość pamięci Flash z oryginalnej płytki zamontowanej w drukarce 3D Prusa z oprogramowaniem Marlin 1.1 do zapasowej płytki, aby uniknąć ręcznej konfiguracji ustawień firmware. Pomimo braku zabezpieczeń lock bitów i poprawnego zczytania oraz wgrania zawartości pamięci, po podłączeniu zapasowej płytki do drukarki wyświetlacz się zapala, ale nie wyświetla żadnych wartości, a drukarka nie reaguje na sterowanie. Problem dotyczy prawdopodobnie niepełnego lub niepoprawnego skopiowania pamięci Flash, co może wynikać z różnic w konfiguracji lub konieczności uwzględnienia dodatkowych obszarów pamięci (np. EEPROM, bootloader). Oprogramowanie Marlin 1.1 jest open source, więc kopiowanie firmware jest dozwolone, jednak wymaga odpowiedniego podejścia do migracji ustawień i pamięci urządzenia.
Podsumowanie AI na podstawie dyskusji. Może zawierać błędy.
REKLAMA