Kanał - ATNEL tech-forum
Wszystkie działy
Najnowsze wątki



Teraz jest 19 cze 2026, o 10:55


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 8 ] 
Autor Wiadomość
PostNapisane: 3 sty 2018, o 01:33 
Offline
Nowy

Dołączył(a): 12 lis 2014
Posty: 1
Lokalizacja: Wrocław
Pomógł: 0

Witam.
Mam wgrany BLS do uC.
Obrazek

Obrazek

Następnie wgrywam z powodzeniem HEX ( działa po RS232 i po WIFI).

Obrazek

Kolejna próba wysłania pliku HEX kończy się niepowodzeniem. Proszę o pomoc w znalezieniu błędu.

Obrazek



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 3 sty 2018, o 05:02 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 26 lut 2014
Posty: 210
Lokalizacja: Poznań
Pomógł: 12

Aby bootloader działał musi być odpowiednio zmodyfikowany wgrywany program który chcesz obsługiwać BLSesem.
A z kodu widzę że wgrywasz czysty wsad jaki jest w książce. Musisz bardziej dokładnie zapoznać się z poradnikami Mirka w tym
zakresie.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 3 sty 2018, o 07:34 
Offline
Nowy

Dołączył(a): 23 wrz 2015
Posty: 17
Pomógł: 0

Musisz na pewno odpowiednio ustawić fusebity, tu link do poradnika Mirka :
https://www.youtube.com/watch?v=J3kPNmb3wV4, jak dobrze kojarzę tam jest wyjaśnione co i jak, jak nie będzie to do AVPlayer ( który znajduje się na stronie atnel ) wrzuć hasło bootloader i wyskoczą Ci wszystkie poradniki na ten temat. Miłego oglądania.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 3 sty 2018, o 09:00 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 29 mar 2015
Posty: 38
Pomógł: 9

A czy w kodzie który próbujesz wgrać masz odbiór stringa resetującego mikrokontroler AT+RST?

Bo to jest prawdopodobnie powód timeoutu przy następnej próbie zaprogramowania uC.

Krótki test wciśnij wgraj i naciśnij reset na uC.


Autor postu otrzymał pochwałę


Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 3 sty 2018, o 10:31 
Offline
Użytkownik

Dołączył(a): 31 lip 2016
Posty: 154
Pomógł: 4

Witam.
Posiadam Atmegę328 i sprawdzałem wgrywanie tego samego pliku.
Mogę wgrywać tyle razy ile mi się podoba.
Wgrywam przez RS-232 i bootloader.
W bootloader zakładka hardware RESET mam zaznaczone: Reset on i RTS



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 3 sty 2018, o 12:51 
Offline
Użytkownik

Dołączył(a): 11 sty 2015
Posty: 27
Pomógł: 1

Odznacz ptaka "use string"



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 3 sty 2018, o 18:31 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 23 paź 2014
Posty: 1041
Lokalizacja: Trójmiasto
Pomógł: 190

Mam wrażenie że kolega nie do końca łapie całą ideę bootloadera.
Owy bootloader to jest osobny program zapisany na końcu pamięci flash (dokładne miejsce wyznacza się ustawieniami fusbitów).
I teraz zasada jest taka jeśli w pamięci uC jest wgrany tylko bootloader bez docelowego programu to procek czeka cały czas na dane po UARCIE bo jedynym programem w uC jest właśnie bootloader - więc jest on aktywny cały czas.
Natomiast gdy w pamięci uC ląduje już napisany przez Ciebie program wówczas po starcie uC bootloader jest aktywny przez czas jaki podałeś na początku jego kompilacji w sekcji "Wait time after restart (sec)". Jeśli w ciągu tego czasu po UARCIE nie nadlecą właściwe dane uruchamiany jest program główny. Właśnie dla tego nie możesz nic ponownie wgrać bo w procku w tym monecie działa Twój program a nie bootloader. W momencie gdy chcesz wgrać (gdy klikasz "Upload hex") musisz szybko zresetować procka by ten uruchomił bootloadera.
Jeśli byś chciał móc wgrywać bez ręcznego resetowania procka to w swoim programie musisz dodać opcje samoresetu - poprostu w Twoim programie musi być "ciągłe nasłuchiwanie" UARTA specyficznego ciągu znaków (opcja software reset w MkBootloader). W odpowiedzi na odebrany ciąg robisz aktywację watchdoga z najkrótszym czasem zadziałania i czekasz aż watchdog zrobi robotę czyli zresetuje procka, a co za tym idzie wymusi start bootloadera i cały proces programowania poleci jak trzeba.
Reasumując bootloader jest aktywny tylko przez czas timeoutu zaraz po starcie procka chyba że jest jedynym kodem wgranym na uC. Z czasem timeoutu też nie można przesadzać bo jednocześnie opóźnia to start docelowego programu procka. Dasz za długi timeout to przy każdym uruchomieniu procek będzie czekał na dane po UARCIE więc przy użytkowaniu urządzenia w którym procek będzie siedział może być to uciążliwe, natomiast za krótki czas może być problematyczny np przy programowaniu przez bluetootch - czas zestawienia połączenia przez moduły musi być krótszy niż timeout bootloadera.
Pooglądaj dobrze poradniki Mirka w tym temacie, jak również poczytaj dokładnie co jest napisane na stronie atnel http://www.atnel.pl/mkbootloader.html

------------------------ [ Dodano po: 2 minutach ]

zorro napisał(a):
W bootloader zakładka hardware RESET mam zaznaczone: Reset on i RTS
Opcja ta ma sens gdy masz podpięty do resetu swojego procka sygnał RTS z portu RS232(oczywiście uwzględniając konwersję napięć jeśli konieczna), wówczas MkBootloader właśnie przy pomocy tego sygnału wymusi reset procka.


Autor postu otrzymał pochwałę


Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 4 sty 2018, o 01:37 
Offline
Użytkownik

Dołączył(a): 25 lip 2013
Posty: 2606
Pomógł: 129

Bardzo czytelny opis, przyda się potomnym :)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
Wyświetl posty nie starsze niż:  Sortuj wg  
Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 8 ] 

Strefa czasowa: UTC + 1


Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 2 gości


Nie możesz rozpoczynać nowych wątków
Nie możesz odpowiadać w wątkach
Nie możesz edytować swoich postów
Nie możesz usuwać swoich postów
Nie możesz dodawać załączników

Szukaj:
Skocz do:  
Sitemap
Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
phpBB SEO