Autor: tmf
Redakcja: Dondu
Wstęp do XMEGA: Spis treści
Zapewne po napisaniu pierwszej aplikacji na XMEGA przyjdzie ci ochota na kolejną. A tu przykre rozczarowanie – jak ponownie wejść w bootloader i uploadować nowy kod?
Problem w tym, że po RESET MCU wchodzi w bootloader, który stwierdza, że w pamięci FLASH znajduje się kod aplikacji i go automatycznie uruchamia, w efekcie nie da się ponownie połączyć z MCU przy pomocy FLIP.
Ale nie martw się – jest rozwiązanie tego problemu.
Każdy mikrokontroler rodziny XMEGA (części ATMega zresztą też), ma specjalny pin, którego stan informuje, czy ma być uruchomiony bootloader, czy aplikacja.
Tak naprawdę w tym pinie nie ma nic specjalnego, ot prawie zwykły pin I/O. Jeśli podczas RESET-u MCU będzie on znajdował się w stanie niskim, to bootloader nie uruchomi aplikacji, lecz będzie oczekiwał na polecenia np. z programu FLIP.
Który to pin? Odpowiedź na to pytanie zależy od użytego MCU, a znajdziemy ją w dokumencie Atmela: Atmel AVR1916: USB DFU Boot Loader for XMEGA
Ale uważaj, w wersji tego dokumentu z dnia pisania tego artykuły był błąd:
Wystarczy więc, że podczas włączenia zasilania zewrzemy pin PE5 do masy, a uruchomi się bootloader i będziemy mogli przeprogramować mikrokontroler.
Sprytne, prawda? W praktyce wystarczy na chwilę wyciągnąć wtyczkę USB i włożyć ją ponownie (o ile zasilamy MCU z USB), lub też na chwilę aktywować RESET, zwierając go do masy, co oszczędzi nam nadwyrężania gniazda USB, które i bez tego wygląda licho.
I to tyle. Mamy pierwszy program za sobą, a XMEGA radośnie miga diodami.
Wstęp do XMEGA: Spis treści
No tak, a co z wersją bez "U" w nazwie? :) tam nie ma USB i Flip już nic nie pomoże.
OdpowiedzUsuńDlaczego miałby nie pomóc? Nie mają USB, ale mają inne interfejsy przez które można je zaprogramować przez FLIP. Tyle, że sens niewielki bo: z U są tańsze (pomimo, że dają więcej), są wygodniejsze, bo wystarczy połączyć kabelek USB i mamy komunikację + zasilanie.
OdpowiedzUsuńMam takie pytanie. Czy jeśli posiadam ATxmega128A3U, z wgranym bootloaderem USB, i zaprogramuję ją poprzez standardowy programator PDI, to bootloader zostanie wykasowany przy czyszczeniu chipu? Czy znajduje się on w innej części pamięci i nic mu nie grozi?
OdpowiedzUsuńZależy, ale zasadniczo bootloader zostaie skasowany i trzeba będzie go wczytać ponownie.
OdpowiedzUsuńczyli każde zaprogramowanie zmusza do wgrywania bootloadera !
OdpowiedzUsuńgorzej nie można ?
Można to ominąć, ale po co? Jeśli programujesz przy pomocy programatora, to po co ci bootloader? Nawet jeśli z jakiegoś powodu jest niezbędny, to można za jednym programowanie programować i aplikację i bootloader, nawet tego nie zauważysz. Więc to w niczym nie przeszkadza.
Usuńdzięki za odpowiedź, przydałby się tutek, lub instrukcja jak to zrobić, z góry dzięki
UsuńPanowie, skąd wziąć ten bootloader dla Xmegi? szukam na stronie Atmela i nigdzie nie mogę znaleźć :/
OdpowiedzUsuńPanowie, skąd wziąć ten bootloader dla Xmegi? szukam na stronie Atmela i nigdzie nie mogę znaleźć :/
OdpowiedzUsuńPodana fraza - http://www.atmel.com/search.aspx?filter=0&output=xml_no_dtd&ie=UTF-8&oe=UTF-8 ... - nie została odnaleziona.
OdpowiedzUsuńUSB - mocno zniechęca na razie bez bootloadera :) jednorazówka