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



Teraz jest 2 lut 2025, o 09:51


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 18 ] 
Autor Wiadomość
PostNapisane: 3 paź 2016, o 00:19 
Offline
Nowy

Dołączył(a): 02 paź 2016
Posty: 10
Pomógł: 0

Witam,

Tak jak przedstawiłem w temacie, mój problem polega na tym, że nie mogę wgrać działającego bootloadera do mojej Atmegi. Dysponuje procesorem Atmega640, do którego chciałbym wgrać bootloader. Całą operacje utworzenia kodu jak i wgrania go za pomocą programu MkBootlader przeprowadziłem zgodnie z filmem instruktażowym, który stworzył Mirek, jednak pojawia się pewien problem, z którym już przez kilka dni nie mogę sobie poradzić. Teraz przedstawię problem. Po wgraniu bootladera, za pomocą programu MkBootloader sprawdzam czy program odpowiada ( przycisk "Info"). Odpowiedz jest prawidłowa, wiec w tej kwestii wszystko się zgadza. Problem jednak pojawia się, gdy chce wgrać wsad. Po wgraniu wsadu otrzymuje komunikat, że wszystko się poprawnie wgrało, jednak fizycznie wsad ten nie wgrał się do procesora. Objawem tego jest to że w terminalu widzę przesyłane ciągle znaki zapytania oraz gdy sprawdzam za pomocą swojego programatora co jest zapisane w pamięci to fizycznie kod mojego wsadu nie jest zapisany. Jeżeli chodzi o kod to dokonałem w nim tylko zmian, które umożliwią mi korzystanie z UART1 ( zmieniłem po prostu 0 w nazwach rejestru na 1 ). Nigdzie indziej nie ingerowałem w kod. Taktowanie mojego procesora to 8Mhz ( próbowałem tego taktowania z kwarcu jak i z wewnętrznego oscylatora).
Proszę bardzo o pomoc, gdyż wydaje mi się że zrobiłem wszystko co mogłem aby znaleźć błąd, a przyznam szczerze, że bardzo mi zależy na zrobieniu tego. W załączniku załączam pliki: main.c oraz makefile. Dziękuje za pomoc


Załączniki:

Aby zobaczyć załączniki musisz się zalogować. Tylko zalogowani użytkownicy mogą oglądać i pobierać załączniki.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 3 paź 2016, o 07:14 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 14 lut 2014
Posty: 279
Lokalizacja: Kraków
Pomógł: 4

A jakie masz fusbity? Szczególnie BOOTRST?

_________________
http://forum.atnel.pl/topic15633.html



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 3 paź 2016, o 08:51 
Offline
Nowy

Dołączył(a): 02 paź 2016
Posty: 10
Pomógł: 0

Obrazek


Oto zdjęcie ustawionych fusbitów w programie Avr Studio



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 3 paź 2016, o 09:12 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 14 lut 2014
Posty: 279
Lokalizacja: Kraków
Pomógł: 4

Hm... Co jeszcze mi do głowy przychodzi to:
ATmega640/1280/1281/2560/2561 has an Enhanced Watchdog Timer (WDT).

na samym końcu stronki jest opis co z tym watchdogiem można zrobić ;)
http://atnel.pl/mkbootloader.html

_________________
http://forum.atnel.pl/topic15633.html



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 3 paź 2016, o 10:16 
Offline
Nowy

Dołączył(a): 02 paź 2016
Posty: 10
Pomógł: 0

Wykonałem tą operacje jednak nic to nie zmieniło :(



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 3 paź 2016, o 10:22 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 14 lut 2014
Posty: 279
Lokalizacja: Kraków
Pomógł: 4

A pokaż może kod ;)

_________________
http://forum.atnel.pl/topic15633.html



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 3 paź 2016, o 11:34 
Offline
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 27352
Lokalizacja: Szczecin
Pomógł: 1042

A ja mam pytanie z całkiem innej beczki, czy autor przetestował najpierw ten mechanizm na jakimś innym bardziej typowym procku i czy mu to działało ? Od tego warto zacząć

_________________
zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 3 paź 2016, o 16:35 
Offline
Nowy

Dołączył(a): 02 paź 2016
Posty: 10
Pomógł: 0

Tak, posiadam Twój zestaw uruchomieniowy z Atmega32. Po przeprowadzeniu wszystkich tych operacji, o których mówisz w filmie wszystko ładnie działa. Jednak bardzo mnie zaskoczyło to dlaczego z Atmega640 nie chce mi to zadziałać. Na początku myślałem, że po prostu popełniłem błąd w zmianie nazw rejestrów dla UART1. Jednak bootloader odzywa się ( "przedstawia się " ) wiec doszedłem do wniosku że to musi być dobrze.

Jeżeli chodzi o kod to załączyłem go w pierwszym moim poście ( spakowane są pliki main.c oraz makefile)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 3 paź 2016, o 17:40 
Offline
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 27352
Lokalizacja: Szczecin
Pomógł: 1042

damianonos napisał(a):
Tak, posiadam Twój zestaw uruchomieniowy z Atmega32.

No i to już mi sporo mówi, bo możemy wyeliminować jakieś problemy podstawowe - jeśli ci na innym procku np m32 wszystko śmiga.

Rzeczywiście w takim przypadku pozostaje nic innego jak POWALCZYĆ z przeportowaniem kodu pod m640 ... tyle że jak widzisz tam jest kupa makr dopasowujących dla wielu różnych procków nawet tych które mają 2 UARTy ... w ten sposób aby wybrać UART0

Musisz więc pod tym kątem dokładnie sobie przejrzeć czy twój procek różni się nazwami rejestrów itp

_________________
zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 3 paź 2016, o 17:54 
Offline
Nowy

Dołączył(a): 02 paź 2016
Posty: 10
Pomógł: 0

Przeanalizowałem właśnie kod wraz z dokumentacją do atmegi640 i należy tylko zmienić w nazwach rejestru "0" na "1" co potwierdza, że zrobiłem to wcześniej prawidłowo, jednak problem nadal pozostaje. Od początku przeprowadziłem taka analize, która w sumie nie doprowadziła mnie do żadnego wniosku, ale sytuacja jest taka. Bootloader się odzywa tzn że port szeregowy działa poprawnie, jest przesyłanie w jedną i drugą stronę. Zapis się odbywa program potwierdza, że wszystko odbyło się prawidłowo, jednak fizycznie wsad nie został wgrany. I tutaj ciężko jest powiedzieć, co może być temu winne. Bo port szeregowy przyjąłem, że pracuje poprawnie skoro bootloader się "przedstawia" jednak czemu nie ma tego zapisu ? To jest pytanie które zadaje sobie każdego dnia, kiedy jeszcze z odrobiną wiary siadam nad tym z myślą, że może rozgryzę czemu to nie chce działać.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 3 paź 2016, o 23:59 
Offline
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 27352
Lokalizacja: Szczecin
Pomógł: 1042

a bo może masz fusebity skopane ... pokaż je w MkAvrCalculatorze

_________________
zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 5 paź 2016, o 21:56 
Offline
Nowy

Dołączył(a): 02 paź 2016
Posty: 10
Pomógł: 0

Obrazek


Ogólnie to w MkAvrCalculator sobie sprawdzam fuse bity i programuje je przez avr studio. Wstawiam widok ustawionych fuse bitów z tego własnie programu.

------------------------ [ Dodano po: 11 minutach ]

Obrazek


Tutaj jest widok z MkAvrCalculator. Jednak jest to to samo co wcześniej.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 15 paź 2016, o 18:36 
Offline
Nowy

Dołączył(a): 02 paź 2016
Posty: 10
Pomógł: 0

Czy cos jeszcze moge zrobić, aby to wszystko ruszyło ?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 16 paź 2016, o 21:10 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 14 lut 2014
Posty: 279
Lokalizacja: Kraków
Pomógł: 4

A masz możliwość sprawdzenia czy to zadziała na uart0?

_________________
http://forum.atnel.pl/topic15633.html



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 16 paź 2016, o 23:26 
Offline
Nowy

Dołączył(a): 02 paź 2016
Posty: 10
Pomógł: 0

Właśnie niestety nie :( Musze pracować na uart1.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 17 paź 2016, o 18:03 
Offline
Nowy

Dołączył(a): 02 paź 2016
Posty: 10
Pomógł: 0

A mam takie pytanie, bo wcześniej wspominałeś coś o tym Enhanced Watchdog Timer. I stąd kilka moich pytań. Po pierwsze wydawało mi się na początku, że jeżeli po przez fuse bity wyłączę Watchdoga, to wtedy nie muszę robić tego wszystkiego, co napisane jest na stronce, która mi podrzuciłeś ? Po drugie mam pytanie już do samej tej operacji. Czy dobrze rozumiem że ten "kod" który jest pokazany za stronce oprócz tego, że muszę mieć go w kodzie bootloadera to muszę jeszcze dopisać do kodu programu wsadowego ( tego który chce właśnie za pomocą programu MkBootloader wysłać/dokonać wsadu).

Swoją droga w kodzie Bootloadera nie mam tej za komentowanej lini //#define WDIFr wiec dopisuje to ręcznie i powoduje to trochę warningów



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 17 paź 2016, o 18:27 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 14 lut 2014
Posty: 279
Lokalizacja: Kraków
Pomógł: 4

Jak masz wgranego bootloadera, to w nim wyłączasz watchdog'a bo inaczej to on ciągle Ci będzie resetował urządzenie. Powiem tak, nie powinno wg mnie zaszkodzić wrzucenie tego kodu dezaktywującego mechanizm resetu do kodu docelowego i sprawdzić czy pomoże. Tak w ramach edukacji ;)
Do testów przydałby się osobny atmega640. Ja kiedy walczyłem z m32 i wiesz co? Już nie wiedziałem o co c'mon, a tu się okazało że upaloną miałem wewnętrzną sekcję uarta. A odkryłem to gdy przez przypadek dotknąłem procka i wyczułem wyraźnie cieplejszy obszar.

_________________
http://forum.atnel.pl/topic15633.html



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 17 paź 2016, o 19:02 
Offline
Nowy

Dołączył(a): 02 paź 2016
Posty: 10
Pomógł: 0

Ok rozumiem. Swoją drogą postanowiłem właśnie tak dla edukacji dołączyć tą cześć kodu odnośnie watchdoga do zwykłego programiku, który działa tak, że przez port szeregowy wysyłam znak do procesora i procesor mi ten znak oddaje. I zauważyłem bardzo ciekawą rzecz :) O ile program bez dodania tego kodu działa poprawnie o tyle po dodaniu tego fragmentu zaczął pracować nie poprawnie. Fragment tego kodu dodałem przed funkcja main.

Dochodzę do wniosku że naprawdę Ja to mam problemy takie które wręcz no są dziwne :) Ale na pewno jestem w stanie przyznać, że istnieje pewne prawdopodobieństwo, że cała ta płytka może być gdzieś uszkodzona no bo w sumie jak sam widzisz pojawiają się takie problemy, które no nie są standardowe wręcz takie dziwne.



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: 18 ] 

Strefa czasowa: UTC + 1


Kto przegląda forum

Użytkownicy przeglądający ten dział: Google [Bot] i 0 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:  
cron
Sitemap
Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
phpBB SEO