logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

Arduino IDE i atmega 328 - problem z komunikacja arduino IDE i atmega328

kubamisiura 08 Cze 2013 00:54 13512 35
Najlepsze odpowiedzi

Dlaczego Arduino IDE nie programuje ATmegi328P przez USBasp i jak poprawnie ustawić fusebity, bootloader oraz minimalne podłączenie układu?

Problem wynikał z niepełnej konfiguracji ATmegi328P: trzeba mieć poprawne podłączenie RESET do VCC, kondensatory odsprzęgające zasilanie, kwarc 16 MHz z kondensatorami oraz przy pracy z niskim zegarem założyć zworkę SLOW SCK na USBasp [#12395789][#12404005] Dla ATmega328P z bootloaderem Arduino podano ustawienia `lfuse=0xFF`, `hfuse=0xDA`, `efuse=0x05`, `unlock=0x3F`, `lock=0x0F`, a potem należy wgrać właściwy plik bootloadera `ATmegaBOOT_168_atmega328.hex` [#12404220][#12415134] Odczyt sygnatury `0x1e950f` i możliwość zmiany fusebitów w Burn-O-Mat pokazywały, że USBasp działał poprawnie, więc błąd `stk500_getsync(): not in sync` wynikał raczej z niezgodności bootloadera / ustawień w Arduino IDE niż z uszkodzonego programatora [#12403952][#12404419] Po ustawieniu fusebitów i wgraniu właściwego bootloadera powinno dać się programować zgodnie z konfiguracją z `boards.txt` [#12415134]
Wygenerowane przez model językowy.
REKLAMA
  • #1 12394524
    kubamisiura
    Poziom 10  
    Posty: 33
    Witam,
    jestem poczatkujacy. Zakupiłem programator usbasp taki jak w linku http://botland.com.pl/programatory/1317-programator-avr-2-zgodny-z-usbasp-isp.html.
    Podłaczyłem atmege328 wg ponizszego schematu.
    https://obrazki.elektroda.pl/1648735800_1370645105.jpg
    Postępowałem wg ponizszej instrukcji http://majsterkowo.pl/programowanie-mikrokontrolerow-za-pomoca-programatora-usbasp/ oczywiscie podlaczenia wg schematu ktory załaczylem.
    Uruchomiłem Arduino IDE i przy probie wypalenia booloadera wyskakuje mi błąd ktory przedstawia ponizsze zdjecie:
    Arduino IDE i atmega 328 - problem z komunikacja arduino IDE i atmega328
    Czy ktos moze mi pomoc ?
    Wybrany port 1, nie wiem jak sprawdzic czy jest komunikacja (komendy)i czy to w tym lezy problem.
  • REKLAMA
  • #2 12394554
    mickpr
    Poziom 39  
    Posty: 4630
    Pomógł: 579
    Ocena: 295
    Było tysiące razy...
    - Czy masz rezystor podciągający pin RESET do VCC?,
    - Czy masz kondensatory blokujące zasilanie (na każdym VCC do masy?
    - Czy (i jak) podłączyłeś kwarc - i kondensatory przy nim?
    - Jak ustawiłeś zworę SLOW SCK na programatorze?
    - Jaka wersja AVRDUDE?
    - Czy układ jest prawidłowo zasilany? Jakim napięciem? Na jakich nóżkach?
    - która to wersja Atmegi? Rozumiem, że Atmega328-PU. Tak?


    Bez tych wiadomości - możemy się bawić najwyżej w wróżbiarstwo.
  • #3 12395486
    kubamisiura
    Poziom 10  
    Posty: 33
    Nie mam rezystora do reset. Założe go rozumiem ze 50k wystarczy?.

    Nie mam kondensatorów na VCC (jakie załozyc ?)

    Nie podłaczylem kwarcu, myslalem ze na razie nie trzeba podczas wgrywanie bootloadera (jakie do niego kondensatory?)

    Piny SLOW jest rozwarty tzn bez zworki.

    Zasilam napięciem 5V ustawionym zworka na programatorze (zasilanie z usb z kompa).

    ATmega328P-PU DIP taka jak do Arduino Uno.

    Pozniej układ bedzie zasilany z 4 baterii AA Enelop, kupiłem do tego stabilizator 5V L7805CV. Mozesz podpowiedzieć jakie rownież kondensatory założyc ?
  • REKLAMA
  • #5 12395789
    mickpr
    Poziom 39  
    Posty: 4630
    Pomógł: 579
    Ocena: 295
    Odnośnie pinów i kondensatorów kolega piotrva już podpowiedział, więc skupię się na pozostałych sprawach
    kubamisiura napisał:
    Piny SLOW jest rozwarty tzn bez zworki.
    Standardowo ("po fabryce") Atmega328 chodzi na wewnętrznym RC z częstotliwością 1MHz. Podejrzewam, że bez założonej zworki wcale się z Atmegą nie skomunikujesz.
    Po tym jak zmienisz już jej fusebity - bez kwarc'a nie ruszy i nie będziesz wiedział - zaprogramowałem ok, czy nie. Kwarc niczemu nie przeszkodzi - a wręcz pomoże.
    kubamisiura napisał:
    Zasilam napięciem 5V ustawionym zworka na programatorze (zasilanie z usb z kompa).
    Powinno wystarczyć - sprawdź miernikiem czy nie ma o wiele mniej
    kubamisiura napisał:
    ATmega328P-PU DIP taka jak do Arduino Uno.
    OK
    kubamisiura napisał:
    Pozniej układ bedzie zasilany z 4 baterii AA Enelop, kupiłem do tego stabilizator 5V L7805CV. Mozesz podpowiedzieć jakie rownież kondensatory założyc ?
    L7805C się nie sprawdzi. Skoro 4 baterie 1,2V = 5V to po co pchać stabilizator, który będzie zżerał dodatkowo ich moc?
    Dodatkowo stabilizator tego typu zasilany z 5V nie da na wyjściu 5V.
    Występuje na nim spadek napięcia (większy niż np. na stabilizatorach LDO), więc napięcie wejściowe powinno być proporcjonalnie większe, aby prawidłowo działał.
    Zadbaj o właściwe ustawienie FUSEBIT-ów (sprawdź kilkakrotnie, żebyś nie płakał nad zablokowaną Atmegą).
    Dodatkowo w (tym) układzie z zasilaniem bateryjnym pochyl się nad ustawieniami bitów BOD - wybraniem odpowiedniego napięcia poniżej którego Atmega będzie się resetować.
  • #6 12395851
    kubamisiura
    Poziom 10  
    Posty: 33
    podłaczyłem wszystko wg zalecen, blad dalej ten sam. Moze problem tkwi w windows7? jak sprawdzic czy jest polaczenie? W Arduino IDe jest wykorzystywany port com1 jak sprawdzic czy wymienia dane z moja plytka ?
  • #7 12396022
    mickpr
    Poziom 39  
    Posty: 4630
    Pomógł: 579
    Ocena: 295
    kubamisiura napisał:
    podłaczyłem wszystko wg zalecen, blad dalej ten sam. Moze problem tkwi w windows7? jak sprawdzic czy jest polaczenie? W Arduino IDe jest wykorzystywany port com1 jak sprawdzic czy wymienia dane z moja plytka ?
    Wgrałeś bootloader?
    Jeśli mimo błędu idziesz dalej - to jak chcesz żeby zadziałało?
    Doprowadź krok po kroku Atmegę "do porządku" (wgrany poprawnie bootloader).
    Potem będziesz próbował się łączyć.

    Masz płytkę Arduino, czy samą Atmegę?
  • #8 12396131
    kubamisiura
    Poziom 10  
    Posty: 33
    Mam samą Atmege328 programuje przez usbasp programator. Uruchamiam Arduino IDE i probuje wlasnie wgrac booloader i mimotakiego podlaczenia hardwarowego jak wszyscy sugerowali wyskakuje mi bład jak podawalem wczesniej czyli Arduino IDE i atmega 328 - problem z komunikacja arduino IDE i atmega328 . Dlatego sadze ze polaczenie nie hula.
  • #9 12396493
    paavo91
    Poziom 19  
    Posty: 500
    Pomógł: 24
    Ocena: 16
    Czy programator działa? Tzn. możesz nim odczytać sygnaturę lub fusebity?
  • REKLAMA
  • #10 12397831
    kubamisiura
    Poziom 10  
    Posty: 33
    paavo91 napisał:
    Czy programator działa? Tzn. możesz nim odczytać sygnaturę lub fusebity?


    Programator niby dziala jak go podlaczam pod kompa to go wykrywa. Nie wiem jak sprawdzic ta sygnature i fusebity.
  • #11 12397852
    mickpr
    Poziom 39  
    Posty: 4630
    Pomógł: 579
    Ocena: 295
    kubamisiura napisał:
    Nie wiem jak sprawdzic ta sygnature i fusebity.
    Przede wszystkim cierpliwość, studiowanie dokumentacji i tego forum.
    Dobrym miejscem na rozpoczęcie jest jakiś kurs AVR -> (np. http://kursc.forbot.pl/ ) .
    Potem proponuję http://mikrokontrolery.blogspot.com
    Gdy już dowiesz się co to fusebity, jak je ustawić i jak zaprogramować swoja Atmegę - możesz przejść dalej.
    Możesz ewentualnie kupić gotową płytkę, ale droga którą obrałeś (zrobienie płytki samemu) jest moim zdaniem mądrzejsza.
    Ale ty pewnie już chciałbyś "kodować w C"...

    Jeszcze raz powtórzę: Wystarczy być cierpliwym, dokładnym i czytać dokumentacje.
    O programowaniu AVR napisano na tym forum setki postów: https://www.elektroda.pl/rtvforum/forum199.html
    ... więc szkoda zaśmiecać temat powtórkami.
  • REKLAMA
  • #12 12403097
    kubamisiura
    Poziom 10  
    Posty: 33
    Udało mi sie wgrac booloader przez Arduino IDE. Teraz chciałem pozmieniać fusebity w Atmega 328P ale poprzez program MkAvrCalculator nie da sie tego zrobic gdyz trzeba zaplacic.
    Czy ktos podpowie jakim innym programem moge je pozmieniac ?.
    Dodam ze mam pracuje na Win7.
  • #14 12403121
    mickpr
    Poziom 39  
    Posty: 4630
    Pomógł: 579
    Ocena: 295
    kubamisiura napisał:
    Czy ktos podpowie jakim innym programem moge je pozmieniac ?.
    Dowolnym zaprogramujesz, a oblicz sobie tutaj: http://www.engbedded.com/fusecalc

    Tylko pamiętaj o uwadze - 10 razy się upewnij, że są poprawne - zanim wgrasz.
    Najlepiej oblicz w kalkulatorze i podaj tutaj (na Forum) - przed wgraniem.
    Oczywiście - podaj też informację, jaki kwarc podłączyłeś.
  • #15 12403952
    kubamisiura
    Poziom 10  
    Posty: 33
    zainstalowalem sobie burnomat ;)
    przy probie wgrania fusebitow na kontroler wyskakuje mi blad:



    C:\Users\xyz\Desktop\SLIDER - Projekt\mkvAVR Calculator - programowanie fusebitów\AVRdude - programowanie fusebitow\avrdude.exe -C C:\Users\xyz\Desktop\SLIDER - Projekt\mkvAVR Calculator - programowanie fusebitów\AVRdude - programowanie fusebitow\avrdude.conf -p m328p -P /dev/parport0 -c usbasp -u -U efuse:w:0xFF:m -U hfuse:w:0xD9:m -U lfuse:w:0x7F:m

    avrdude.exe: AVR device initialized and ready to accept instructions

    Reading | ################################################## | 100% 0.03s

    avrdude.exe: Device signature = 0x1e950f
    avrdude.exe: reading input file "0xFF"
    avrdude.exe: writing efuse (1 bytes):

    Writing | ***failed;
    ################################################## | 100% 0.07s

    avrdude.exe: 1 bytes of efuse written
    avrdude.exe: verifying efuse memory against 0xFF:
    avrdude.exe: load data efuse data from input file 0xFF:
    avrdude.exe: input file 0xFF contains 1 bytes
    avrdude.exe: reading on-chip efuse data:

    Reading | ################################################## | 100% 0.00s

    avrdude.exe: verifying ...
    avrdude.exe: verification error, first mismatch at byte 0x0000
    0xff != 0x07
    avrdude.exe: verification error; content mismatch

    avrdude.exe done. Thank you.



    podlaczony mam zewnetrzny kwarc 16MHz

    wgrywam wartosc:
    efuse: 07
    hfuse: DE
    lfuse: 7F

    W czym jest problem ?

    Uf jakos sie udalo nie wiem czy nie blokowal go przypadkiem adruino IDE przez ktorego chce programowac.
    Niby fusebity ustawilem na zewnetrzny rezonator 16MHz.

    Niestetyn napotkalem problem w Arduino IDE programujac niby zaladowal program ale wyskoczyl blad:
    - avrdude: stk500_getsync(): not in sync: resp = 0x00.

    dioda ktora w programie miala migac tez nie miga.
  • #17 12404082
    kubamisiura
    Poziom 10  
    Posty: 33
    miszczo997 napisał:
    Zworkę slow sck masz założoną? Dla kwarcu 16MHz musisz jeszcze wyłączyć dzielenie źródła taktowania przez 8(CKDIV8).


    tak zworke SLOW sciagnąłem oraz wylaczylem ten bit dzielenia przez 8.
    teraz jest :
    efuse: 07
    hfuse: DE
    lfuse: 7F
  • #18 12404152
    miszczo997
    Poziom 28  
    Posty: 1052
    Pomógł: 134
    Ocena: 159
    Źle masz fusy. W tej chwili masz dalej włączone dzielenie przez 8 i zaprogramowany fusebit BOOTRST. Zobacz w notkach dla arduino, czy nie ma podanych wartości fusebitów dla tego procka, tak aby wszystko śmigało z bootloaderem.
  • #20 12404222
    kubamisiura
    Poziom 10  
    Posty: 33
    teraz jest:
    efuse: 07
    hfuse: DF
    lfuse: 7F
    a nie wiem o czym mówisz i jak to szukac. Mozesz sam zerknac? tu masz dokumentacje: http://www.atmel.com/Images/doc8161.pdf

    Dodano po 38 [minuty]:

    mickpr napisał:
    Podaję : (za stroną http://www.geocities.jp/arduino_diecimila/bootloader/index_en.html#top )
    dla Atmega 328P

    hfuse = DA
    lfuse = FF
    efuse = 05
    unlock = 3F
    lock = 0F


    Zrobilem tak jak w tej instrukcji, nawet tym samym programem to zrobilem, błąd dalej jest ten sam:

    " avrdude: stk500_getsync(): not in sync: resp=0x00 "

    Ręce opadaja.
  • #21 12404390
    mickpr
    Poziom 39  
    Posty: 4630
    Pomógł: 579
    Ocena: 295
    Ja bardzo nie lubię tego mówić - ale powiem:

    A nie mówiłem???

    mickpr napisał:
    Tylko pamiętaj o uwadze - 10 razy się upewnij, że są poprawne - zanim wgrasz.
    Najlepiej oblicz w kalkulatorze i podaj tutaj (na Forum) - przed wgraniem.
    Oczywiście - podaj też informację, jaki kwarc podłączyłeś.

    Czy da się odczytać Atmegę?
    Próbuj - jeśli nie - to możliwe, że właśnie zablokowałeś sobie ATMEG-ę.

    kubamisiura napisał:
    Ręce opadaja.
    Większość z nas przez to przechodziła - więc nie jesteś wyjątkiem.

    p.s.
    Dziwi mnie, że masz wybrany też zły programator -> STK500
    kubamisiura napisał:
    " avrdude: stk500_getsync(): not in sync: resp=0x00 "

    Podczas gdy podałeś, że kupiłeś USBASP.
  • #22 12404407
    kubamisiura
    Poziom 10  
    Posty: 33
    mickpr napisał:
    Ja bardzo nie lubię tego mówić - ale powiem:

    A nie mówiłem???

    mickpr napisał:
    Tylko pamiętaj o uwadze - 10 razy się upewnij, że są poprawne - zanim wgrasz.
    Najlepiej oblicz w kalkulatorze i podaj tutaj (na Forum) - przed wgraniem.
    Oczywiście - podaj też informację, jaki kwarc podłączyłeś.

    Czy da się odczytać Atmegę?
    Próbuj - jeśli nie - to możliwe, że właśnie zablokowałeś sobie ATMEG-ę.

    kubamisiura napisał:
    Ręce opadaja.
    Większość z nas przez to przechodziła - więc nie jesteś wyjątkiem.


    Chyba nie jest zablokowana bo przez AVR8_Burn-O-Mat a odczytuje i modyfikuje sbie fusebity. Wiec raczej chodzi. Program przez Arduino IDE tez niby sie wgrywa bo jest napis " Ładowanie zakonczono pomyslinie" lecz wyskakuje ten blad co opisywalem.
  • #23 12404419
    mickpr
    Poziom 39  
    Posty: 4630
    Pomógł: 579
    Ocena: 295
    kubamisiura napisał:
    Chyba nie jest zablokowana bo przez AVR8_Burn-O-Mat a odczytuje i modyfikuje sbie fusebity. Wiec raczej chodzi. Program przez Arduino IDE tez niby sie wgrywa bo jest napis " Ładowanie zakonczono pomyslinie" lecz wyskakuje ten blad co opisywalem.
    Wygląda na to, że masz wybrany zły programator w opcjach avrdude.
    Ma być usbasp. (Czy tak jest wykrywany w panelu sterowania w Windows?)
    Czy fusebity doprowadziłeś już do stanu, który podałem?
  • #24 12404433
    kubamisiura
    Poziom 10  
    Posty: 33
    mickpr napisał:
    kubamisiura napisał:
    Chyba nie jest zablokowana bo przez AVR8_Burn-O-Mat a odczytuje i modyfikuje sbie fusebity. Wiec raczej chodzi. Program przez Arduino IDE tez niby sie wgrywa bo jest napis " Ładowanie zakonczono pomyslinie" lecz wyskakuje ten blad co opisywalem.
    Wygląda na to, że masz wybrany zły programator w opcjach avrdude.
    Ma być usbasp. (Czy tak jest wykrywany w panelu sterowania w Windows?)
    Czy fusebity doprowadziłeś już do stanu, który podałem?


    Jest wybrany usbasp i tak widnieje w menadzeze urzadzen, fusebity tez doprowadzilem do takiego stanu jak mowiles.
    Moze tu jest problem: Mianowicie przed ustawieniem fusebitów wypalilem bootloader wg instrukcji http://majsterkowo.pl/programowanie-mikrokontrolerow-za-pomoca-programatora-usbasp/ a potem ustawialem fusebity za pomoca AVR8_Burn-O-Mat a. Pewnie tu jest problem, czy tak ?
  • #25 12404489
    mickpr
    Poziom 39  
    Posty: 4630
    Pomógł: 579
    Ocena: 295
    Nie rozumiem.
    kubamisiura napisał:
    fusebity tez doprowadzilem do takiego stanu jak mowiles.

    kubamisiura napisał:
    przed ustawieniem fusebitów wypalilem bootloader


    Czy w odczytanej zawartości FLASH jest kod bootloadera?
    Jeśli tak - i jest poprawny, to jeśli fusebity ustawione są również poprawnie - powinno działać.
    P.S.
    W jaki sposób sprawdzasz czy działa? Masz przejściówkę USB/RS232 (w standardzie takim jak w Atmega ma piny RX/TX- czyli 5V ?)
  • #26 12408231
    kubamisiura
    Poziom 10  
    Posty: 33
    mickpr napisał:
    Nie rozumiem.
    kubamisiura napisał:
    fusebity tez doprowadzilem do takiego stanu jak mowiles.

    kubamisiura napisał:
    przed ustawieniem fusebitów wypalilem bootloader


    Czy w odczytanej zawartości FLASH jest kod bootloadera?
    Jeśli tak - i jest poprawny, to jeśli fusebity ustawione są również poprawnie - powinno działać.
    P.S.
    W jaki sposób sprawdzasz czy działa? Masz przejściówkę USB/RS232 (w standardzie takim jak w Atmega ma piny RX/TX- czyli 5V ?)


    Jednak okazuje sie ze fusebity sa dobrze ustawione ale booloader jest dziwny, generalnie inny niz ten z biblioteki arduino. Hmm jak to naprawic.
    Dodatkowo zobaczylem ze trzeba jeszcze jakies pliki avrdue.conf wgrywac czy cos kolo tego. Musze poczytac. A moze szybciej wypale booloadera na atmega8 ?
    Metlik w głowie
  • #27 12408248
    mickpr
    Poziom 39  
    Posty: 4630
    Pomógł: 579
    Ocena: 295
    kubamisiura napisał:
    Jednak okazuje sie ze fusebity sa dobrze ustawione ale booloader jest dziwny, generalnie inny niz ten z biblioteki arduino.
    Skoro fusebity już masz ok. to teraz tylko wgraj (np. Burn-o-mat'em - skoro Ci działa) sam bootloader.
    W czym problem?
  • #28 12408347
    kubamisiura
    Poziom 10  
    Posty: 33
    mickpr napisał:
    kubamisiura napisał:
    Jednak okazuje sie ze fusebity sa dobrze ustawione ale booloader jest dziwny, generalnie inny niz ten z biblioteki arduino.
    Skoro fusebity już masz ok. to teraz tylko wgraj (np. Burn-o-mat'em - skoro Ci działa) sam bootloader.
    W czym problem?


    Burn_o-matem zapisuje i odczytuje fusebity i sa takie jak podawales. Moge to zrobic. Leczy Wgrywam tez bootloader z katalogu glowngo arduino czyli: c:\Program Files\Arduino\hardware\arduino\bootloaders\atmega\ATmegaBOOT_168_atmega328.hex.
    Plik sie wgrywa bez problemu lecz nie moge go odczytac.

    Reading | ################################################## | 100% 9.83s

    avrdude.exe: writing output file "C:\Users\xyz\Desktop\ATmegaBOOT_168_atmega328.hex"
    avrdude.exe: output file C:\Users\xyz\Desktop\ATmegaBOOT_168_atmega328.hex auto detected as invalid format
    avrdude.exe: invalid output file format: -1
    avrdude.exe: write to file 'C:\Users\xyz\Desktop\ATmegaBOOT_168_atmega328.hex' failed

    avrdude.exe done. Thank you.

    Jakos kiedys udalo sie go odczytac ale byl inny po odczytaniu od tego zrodlowego. Moze jeszcze jakies dodatkowe pliki trzeba wgrac (board.txt, programmers.txt ???)
    Nie wiem o co chodzi.
  • #29 12408356
    mickpr
    Poziom 39  
    Posty: 4630
    Pomógł: 579
    Ocena: 295
    kubamisiura napisał:
    detected as invalid format
    Tu jest błąd... zły format pliku.
    Czym wgrywasz ten bootloader?
  • #30 12408875
    kubamisiura
    Poziom 10  
    Posty: 33
    mickpr napisał:
    kubamisiura napisał:
    detected as invalid format
    Tu jest błąd... zły format pliku.
    Czym wgrywasz ten bootloader?


    Win o Matem.

    Wczesniej robilem to poprzez ARDUINO IDE i tak by bylo najlepiej dla mnie skoro chcem pozniej w nim programowac.

Podsumowanie tematu

✨ Użytkownik napotkał problemy z komunikacją między programatorem USBasp a mikrokontrolerem ATmega328P podczas próby wgrania bootloadera za pomocą Arduino IDE. W odpowiedziach poruszono kwestie dotyczące podłączenia, w tym konieczność użycia rezystora podciągającego pin RESET, kondensatorów blokujących oraz kwarcu. Użytkownik nie miał zainstalowanego kwarcu, co mogło uniemożliwić prawidłową komunikację. Po wgraniu bootloadera i ustawieniu fusebitów, użytkownik nadal doświadczał błędów, takich jak "stk500_getsync(): not in sync: resp=0x00". Wskazano na możliwość błędnego wyboru programatora w Arduino IDE oraz na konieczność sprawdzenia ustawień fusebitów. Użytkownik zainstalował program Burn-O-Mat do zmiany fusebitów, ale napotkał problemy z odczytem i wgrywaniem bootloadera. Ostatecznie zasugerowano, aby upewnić się, że bootloader jest poprawny oraz że programator USBasp jest właściwie wybrany w ustawieniach.
Wygenerowane przez model językowy.
REKLAMA