Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

Wgranie bootloadera do atmegi

Uzi103 24 Cze 2014 22:08 1380 12
  • #1 24 Cze 2014 22:08
    Uzi103
    Poziom 11  

    Mam zestaw uruchomieniowy z atmega32. Chcąc zaprogramować procesor programatorem USBasp w BASCOM-AVR (prawdopodobnie) zamiast Autoprogram wcisnąłem Send to Chip. Teraz żaden program nie działa mimo, że atmega jest prawidłowo identyfikowana i programuje się poprawnie. Z tego co poradził kolega atom1477, to usunął się bootloader, który był w procesorze. Jak najłatwiej wgrać ponownie (i skąd wziąć) bootladera przy użyciu USBasp? Wcześniej wgrywałem programy aplikacją MegaLoad (FT232RL ), teraz gdy wciskam przycisk reset to nic sie nie dzieje.

    Potrzebuje pilnie to zrobić, dlatego bardzo proszę o pomoc.
    Pozdrawiam

    0 12
  • Pomocny post
    #2 24 Cze 2014 23:27
    tmf
    Moderator Mikrokontrolery Projektowanie

    Potrzebjesz plik hex (lub elf) zawierający bootloader. Wgrywasz go normalnie, tak jak każdy inny program. Po tej operacji warto sprawdzić fuse- i lockbity, a szczególnie fusebit określający położenie wektora RESET. HEX z bootloadere powinieneś uzyskać z firmy produkującej zestaw uruchomieniowy.

    0
  • #4 25 Cze 2014 08:10
    Uzi103
    Poziom 11  

    Niestety nie mam możliwości podłączenia FT232RL że złączem ISP ponieważ nie mam wyprowadzen od FT232. Muszę przez USBasp. Tylko w bascomie nie mam chyba jak tego zrobić bo tam muszę wybrać bodajże plik bas do zaprogramowania. A gdy zaladowalem plik hex z bootloaderem do MegaLoadb i wcisnalem przycisk reset to program także nie zareagował tak jak miało to miejsce przy wgrywaniu innych programów

    0
  • Pomocny post
    #5 25 Cze 2014 08:57
    tmf
    Moderator Mikrokontrolery Projektowanie

    Skoro masz USBasp to użyj do wgrania kodu np AVRDude. Niewykluczone, że oprócz wgrania kodu bootloadera będziesz musiał zmienić położenie wektora RESET, tak, żeby ten bootloader się uruchamiał.

    0
  • Pomocny post
    #6 25 Cze 2014 09:44
    zulusj23
    Poziom 21  

    No to najpierw musisz zmusić jakikolwiek program do komunikacji z procesorem za pośrednictwem twojego programatora. Może majstrowałeś z Fuse-bitami i tu jest problem.

    0
  • #7 25 Cze 2014 12:30
    Uzi103
    Poziom 11  

    No to w avrdude nie mam możliwości wyboru programatora usb asp, mogę wybrać jako port usb Ale wtedy jest błąd połączenia, gdy połączony jest przez FT232 kablem usb to się komunikuje Ale i tak jakiś błąd wyskakuje

    0
  • Pomocny post
    #8 25 Cze 2014 18:24
    el2010tmp
    Poziom 25  

    Może nie masz sterowników do USBASP.
    Ewentualnie masz jakiś archaiczny avrdude.

    avrdude -p m32 -c usbasp -U flash:w:"program.hex":a

    0
  • #9 25 Cze 2014 20:17
    Uzi103
    Poziom 11  

    Pobrałem nową wersję AVRDude, połączyło się bez problemów ;)
    Procesor Atmega32a. Fusebity, które mi odczytało:

    Code:
    hFuse C0
    
    IFuse FE

    Code:
    Lockbit: 3F

    czy mam zmienić te fusebity przed wgraniem bootloadera na:
    Code:
    hFuse D0
    
    IFuse EF

    ? Wcześniej nie robiłem absolutnie niczego z fusebit.
    edit
    Działa z fusebitami które były ustawione wcześniej
    Dziękuję wszystkim bardzo za pomoc ;)

    Jeszcze tylko małe pytanko bo nie chce niczego popierdzielić :( jakie mają być wartości hFuse i IFuse jeśli procesor ma pracować z zewnętrznym kwarcem 16MHz? Bo nie chce znów bootladera stracić

    0
  • Pomocny post
    #10 26 Cze 2014 09:56
    zulusj23
    Poziom 21  

    Myślę, że oba ustawienia będą dobre pod kwarc 16MHz, Twoje może nawet lepsze z uwagi na CKOPT. Sprawdź różnice tu:

    http://www.engbedded.com/fusecalc

    Nigdy nie sprawdzałem co i jak z Lockbit-ami ale to chyba tylko zabezpieczenia przed zczytaniem zawartości procesora w profesjonalnych zastosowaniach gdy chodzi o ochronę kodu.

    0
  • #11 26 Cze 2014 19:03
    Uzi103
    Poziom 11  

    Oto screeen z mkAVR z konfiguracją dla mojej atmegi:
    Wgranie bootloadera do atmegi
    Tylko wydaje mi się jakby procesor nie pracował z częstotliwością 16mhz. Bo gdy napisałem program, który powinien gasić i zapalać diode co 1s (waitms 1000, toggle PortD.0) to dioda zapalała się i gasiła co 2 sekundy zamiast pożądanej jednej. Dlaczego?

    0
  • #12 26 Cze 2014 19:17
    el2010tmp
    Poziom 25  

    Uzi103 napisał:
    Tylko wydaje mi się jakby procesor nie pracował z częstotliwością 16mhz. Bo gdy napisałem program, który powinien gasić i zapalać diode co 1s (waitms 1000, toggle PortD.0) to dioda zapalała się i gasiła co 2 sekundy zamiast pożądanej jednej. Dlaczego?

    Z tego co piszesz wynika że program ma zmieniać stan diody na przeciwny [co sekunde]. Czyli działa poprawnie.

    Pokaż ten program.

    0
  • #13 26 Cze 2014 23:09
    Uzi103
    Poziom 11  

    wszystko jest ok, mój błąd

    0