Elektroda.pl
Elektroda.pl
X

Search our partners

Find the latest content on electronic components. Datasheets.com
Elektroda.pl
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

Wgrywanie bootloader'a do ATMega328, przy użyciu Arduino Uno, w roli ISP

Hetzer 09 Apr 2013 20:33 32841 6
IGE-XAO
  • Nagrywanie Bootload’era na układzie ATMega328, przy użyciu Arduino Uno, jako programatora ISP.
    Wgrywanie bootloader'a do ATMega328, przy użyciu Arduino Uno, w roli ISP Wgrywanie bootloader'a do ATMega328, przy użyciu Arduino Uno, w roli ISP Wgrywanie bootloader'a do ATMega328, przy użyciu Arduino Uno, w roli ISP

    Autor konstruował pewne zdalnie sterowane urządzenie, które wymagało, aby Arduino działało przez 24 godziny na dobę, siedem dni w tygodniu, jednak nie chciał w nim montować całego, wartego $32 Arduino Uno. Autor zdecydował się więc na kupno kilku elementów i wykonanie własnego Arduino. Najważniejszym punktem zakupów było kupno mikrokontrolera. Możemy wybierać spośród następujących mikroprocesorów:
    -ATMega328P-PU z Optiboot ~ $5.50 (Sparkfun) / $5.19 (Digikey)
    -ATMega328P-PU ~ $3.16 (Digikey)
    -ATMega328-PU ~ $2.88 (Digikey)

    Autor oczywiście wybrał... Najtańszą możliwość. Popełniając tym samym ogromny błąd. Po krótkich poszukiwaniach informacji na ten temat, okazało się, że najprostszym rozwiązaniem byłby wybór opcji pierwszej, czyli ATMega328P-PU z Optiboot. Podłącza się go tak samo, jak normalne Arduino, w przeciwieństwie do pozostałych układów, które wymagają dodatkowych modyfikacji.

    Pozostałe dwa układy nie zawierają czegoś nazywanego Bootloader’em. Bootloader jest czymś w rodzaju małego programu, który musi zostać na samym początku załadowany do układu. Umożliwia on wgrywanie kodu bez użycia żadnych dodatkowych urządzeń.

    A więc, jeśli chcesz zrobić cokolwiek z użyciem tych układów, najpierw musisz nagrać na nich bootloader. Jak pewnie zauważyłeś, różnica pomiędzy układem drugim i trzecim polega tylko na literce P, występującej po numerze 328. Literka P symbolizuje pico, które zaś jest skrótem od picopower, technologii firmy ATMEL, która pozwala na działanie mikrokontrolera przy zużyciu znacznie mniejszej mocy.

    A więc, jeśli szukasz mikrokontrolera do swojego Arduino, UNO, lepiej upewnij się, czy posiada on funkcję picopower. Autor kupił 3 „zwykłe” układy, więc kiedy się o tym dowiedział, był załamany. W takim wypadku, konieczne jest dokonanie kilku modyfikacji w plikach Arduino, aby układ zadziałał.

    W tym artykule właśnie te modyfikacje zostaną przedstawione.

    Krok 1: Materiały
    Wgrywanie bootloader'a do ATMega328, przy użyciu Arduino Uno, w roli ISP Wgrywanie bootloader'a do ATMega328, przy użyciu Arduino Uno, w roli ISP
    Będziemy potrzebowali następujących materiałów:
    -1x przewód USB, do połączenia PC-Arduino
    -1x Arduino UNO (autor użył R1)
    -1x Atmega328-PU
    -1x mała płytka uniwersalna
    -1x kwarc 16MHz (ten użyty w projekcie ma pojemność 20pF)
    -2x ceramiczne kondensatory o pojemności 22pF
    -Oraz kilka zworek…

    Krok 2: Ustawianie Arduino, jako programator ISP
    Wgrywanie bootloader'a do ATMega328, przy użyciu Arduino Uno, w roli ISP
    Na początku należy wydać odpowiednie polecenie naszej platformie Arduino UNO (w przypadku autora Arduino UNO R1), tak aby wiedziała ona, że cokolwiek będziemy do niej przesyłać, nie ma trafić do niej, a do naszego mikrokontrolera znajdującego się w niej. Innymi słowy, wykorzystujemy nasze Arduino, jako prosty transmiter. Do tego celu autor użył oprogramowania Arduino (IDE) w wersji 1.0.1.

    1. Podłącz twój moduł Arduino UNO poprzez interfejs USB do twojego komputera. (BEZ ŻADNYCH DODATKOWYCH POŁĄCZEŃ, TYLKO USB)
    2. Otwórz IDE
    3. Open > Example > ArduinoISP
    4. Wybierz Arduino UNO z menu Tools > Board
    5. Wybierz swój port szeregowy z menu Tools > Board (w przypadku autora był to port COM3, jednak można wybrać inny)
    6. Zastosuj ustawienia
    To może zająć chwilę. Kiedy proces dobiegnie końca, zamknij IDE I odłącz twoje Arduino. Teraz należy przygotować oprogramowanie i sprzęt.

    Krok 3: Przygotowywanie sprzętu
    Wgrywanie bootloader'a do ATMega328, przy użyciu Arduino Uno, w roli ISP
    Jest to bardzo łatwy krok, po prostu postępuj zgodnie ze schematem, aby podłączyć każdy element.

    Krok 4: Przygotowywanie oprogramowania
    Wgrywanie bootloader'a do ATMega328, przy użyciu Arduino Uno, w roli ISP Wgrywanie bootloader'a do ATMega328, przy użyciu Arduino Uno, w roli ISP Wgrywanie bootloader'a do ATMega328, przy użyciu Arduino Uno, w roli ISP
    Niestety, ta część już nie jest prosta, postępuj tylko zgodnie ze wskazówkami instrukcji. Autor zamieścił 2 pliki, które należy podmienić. Postępuj według następującej instrukcji, aby tego dokonać.

    0. Upewnij się, że IDE jest zamknięty
    1. Skopiuj cały folder zawierający twój IDE.
    2. Otwórz nowy folder.
    3. Przejdź do …\ arduino-1.0.1 BURN BOOTS\hardware\tools\avr\etc.
    4. Znajdź plik, nazywający się avrdude.conf .
    5. Zamień go na zamieszczony przez autora plik. (Najpierw trzeba go rozpakować.)
    6. Przejdź do ...\arduino-1.0.1 BURN BOOTS\hardware\arduino .
    7. Znajdź plik o nazwie boards.txt .
    8. Zamień go na zamieszczony przez autora plik.
    9. Zamknij wszystko.

    boards.txt
    avrdude.conf

    Świetnie! Teraz pozostalo tylko wgrać nasz bootloader i nasz tani mikrokontroler powinien działać tako samo, jak każdy inny, normalny układ.

    Krok 5: Ostatni krok! Nagrywanie Bootloader’a
    Wgrywanie bootloader'a do ATMega328, przy użyciu Arduino Uno, w roli ISP Wgrywanie bootloader'a do ATMega328, przy użyciu Arduino Uno, w roli ISP Wgrywanie bootloader'a do ATMega328, przy użyciu Arduino Uno, w roli ISP
    Kiedy będziemy mieli wszystko podłączone, należy otworzyć IDE z folderu, który utworzyliśmy (kopia).
    1. Wybierz Arduino328 z menu Tools > Board
    2. Wybierz twój port szeregowy (ten sam, co poprzednio)
    3. Uruchom Arduino w trybie programatora ISP w menu Tools > Programmer
    4. Wybierz Burn Bootloader
    Proces ten zajmie około 30 sekund. Gotowe! Teraz możesz używać taniej wersji układu (bez funkcji pico) ATMega328, tak samo jak zwykłego Arduino.

    Źródło:Link

    Cool? Ranking DIY
    Can you write similar article? Send message to me and you will get SD card 64GB.
    About Author
    Hetzer
    Level 13  
    Offline 
    Hetzer wrote 123 posts with rating 49, helped 0 times. Live in city Września. Been with us since 2012 year.
  • IGE-XAO
  • #2
    mkpl
    Level 37  
    Czy tylko ja mam wrażenie, że wgranie czegokolwiek bez użycia Arduino IDE jest trudniejsze niż postawienie totalnie uceglonego telefonu?. Opis niczym instrukcja do odpalenia promu kosmicznego.

    Myślę, że dla większości ludzi a przynajmniej forumowych kolegów bardziej przydatny był by opis aby wgrać xxx.hex i jakie fusebity ustawić.
  • IGE-XAO
  • #3
    Dawidoos
    Level 14  
    Ja kiedyś próbowałem wgrać bootloader do Attiny13 tym sposobem. Udało się, ale kombinowania było całkiem sporo.
    Teraz używam USBasp z Arduino - wszystko śmiga bez żadnych problemów.
  • #4
    seba_x
    Level 31  
    Ręce opadają, żeby zaprogramować procka tyle kombinacji i jeszcze to :

    Hetzer wrote:

    Autor oczywiście wybrał... Najtańszą możliwość. Popełniając tym samym ogromny błąd.....
    Pozostałe dwa układy nie zawierają czegoś nazywanego Bootloader’em.


    A kupiłby sobie najtańszy programator np USBasp i programował co tylko się da bez cudowania z ardrutino :lol:
  • #6
    seba_x
    Level 31  
    dj_volt wrote:
    seba_x wrote:

    A kupiłby sobie najtańszy programator np USBasp i programował co tylko się da bez cudowania z ardrutino :lol:


    Poprawka: 4 oporniki, wtyk DB25, kawałek kabla. Warunek - port LPT w kompie. Taniej już się nie da zaprogramować uP!
    :)
    Link


    Wiem że tak można . Zważywszy na to że autor szukał uP z wgranym botloaderem to raczej miałby problem z polutowaniem kabelków do portu równoległego i co najważniejsze miałby problem z odnalezieniem go w komputerze.
  • #7
    markoz7874
    Level 31  
    seba_x wrote:

    Wiem że tak można . Zważywszy na to że autor szukał uP z wgranym botloaderem to raczej miałby problem z polutowaniem kabelków do portu równoległego i co najważniejsze miałby problem z odnalezieniem go w komputerze.

    bez jaj :)
    Cyt. "Autor zdecydował się więc na kupno kilku elementów i wykonanie własnego Arduino"
    A to oznacza ze cos tam na temat elektroniki już wie.
    Faktem jest, że jak ktoś coś pozna, to później wykorzystuje to do wszystkiego, zapominając o prostszych rozwiązaniach.
    Ale zamiast tylko krytykować, może ktoś z Was napisałby podobną instrukcję krok po kroku jak wgrać bootloadera do ATMega328 przy użyciu USBasp lub LPT i kilku oporników?
    Dla niezasobnych, zaczynających przygodę z Arduino, taka wiedza na pewno by się przydała.