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.

ATmega8A-PU - Błąd przy programowaniu za pomocą Arduino IDE

rumcajz 14 Paź 2012 00:12 3462 6
  • #1 14 Paź 2012 00:12
    rumcajz
    Poziom 2  

    Dzień dobry Panowie,

    To mój pierwszy post na tym forum, jestem kompletnie początkującym w sprawach elektroniki, zawodowo zajmuję się programowaniem w Javie.
    Chciałbym wreszcie odkurzyć swój C i zacząć przenosić wirtualne twory w świat rzeczywisty przy użyciu Arduino IDE... Choć początek mnie nie zachęcił.

    Programuję mikrokontroler ATMega8A-PU przez USPasp'a używając Arduino IDE zgodnie z instrukcją stąd:

    http://majsterkowo.pl/forum/post2213.html#p2213

    Załadowanie Bootloadera się udalo (tak powiedziało IDE, dioda na programatorze świeciła się podczas ładowania bootloadera). Jednak kiedy wypalam prosty przykładowy program (blink) dostaję taki, nic nie mówiący mi błąd:

    avrdude: stk500_getsync(): not in sync: resp=0x30

    Googlałem i rozwiązania są różne, jednak dotyczą zazwyczaj stricte płytki z Arduino, a nie "substytutu" w postaci gołej ATMegi8A, więc trudno mi je zaaplikować.

    W Menedżerze urządzeń nie widzę ATMega8A na żadnym porcie COM, tak jak to gdzie-niegdzie sugerowali żeby sprawdzić w przypadku czystego Arduino. Błąd podobno często wynika ze źle wybranego portu COM w Arduino IDE. Moje IDE widzi tylko COM3, więc taki wybrałem, choć programuję to z laptopa, który nie ma portów COM, pewnie to jakiś port wirtualny.

    Czy potraficie pomóc zagubionemu początkującemu?
    Na majsterkowo.pl autor nie odpisuje.

    0 6
  • #2 14 Paź 2012 18:31
    Raphaw
    Poziom 20  

    Witam. Napisz coś więcej o połączeniu z PC - uC. Ponadto czy faktycznie potrzebujesz bootloadera mając dostęp do USBasp? trochę szkoda flasha.
    Pozdrawiam.

    0
  • #3 15 Paź 2012 00:22
    rumcajz
    Poziom 2  

    Cześć Raphaw,

    Dzięki za zainteresowanie!

    Połączenie PC-uC wygląda tak, że mam taki oto programator USBasp:
    http://allegro.pl/programator-usbasp-avr-atmel-isp-tasma-win7x64-pl-i2702175880.html

    oraz płytkę z różnymi podstawkami:

    http://allegro.pl/podstawka-do-programowania-atmel-atmega8-atmega32-i2710716875.html

    uC siedzi w środkowej podstawce osadzony wycięciem na uC do wycięcia na podstawce (czyli w dobrą stronę, jak mnie poinstruowano).

    Sterownik do USBasp'a ściągniętym w zipie z netu:
    usbasp-windriver.2011-05-28.zip

    Po zainstalowaniu sterownika Windows 7 poprawnie widzi programator w menedżerze urządzeń:
    libusb-win32 devices > USBasp

    Mam OS 64-bitowy, ale to (chyba) nie powinno mieć znaczenia.

    Czy jest mi potrzebny bootoader - nie mam pojęcia. Postępowałem zgodnie z krokami opisanymi na majsterkowo.pl, autor nie wyjaśnił po co wgrywa się bootloader, powiedział tylko żeby to zrobić.

    Pytanie zasadnicze to:
    1) Jak pozbyć się w/w błędu i wczytać prosty program z Arduino IDE?

    Pytania poboczne:
    2) Co właściwie robi ten bootloader skoro nie jest potrzebny?
    3) Czy uważasz, że próba zaprogramowania przez Atmel Studio ma szanse powodzenia, czy raczej problem leży gdzie indziej? (ściagnąłem je, ale jeszcze nie miałem czasu się temu przyjrzeć)

    0
  • #4 15 Paź 2012 00:49
    Raphaw
    Poziom 20  

    Ad 2.) Bootloader w uproszczeniu to taki program umieszczony w docelowym mikrokontrolerze który pozwala na zmianę zawartości pamięci flash (wgranie programu) bez konieczności stosowania programatora (na podstawie danych np z karty SD, portu COM, czy innej magistrali). Sprawdza się to doskonale w przypadku Arduino bo kupując gotową płytkę z wgranym bootloaderem nie potrzebujesz programatora. Bootloader bywa również przydatny gdy robisz jakieś urządzenie dla klienta i przewidujesz aktualizacje oprogramowania.
    Ad 1.) Niestety z Arduino IDE nie miałem styczności, ale z tego co piszesz wynika, że aby wgrać program poprzez bootloadera i Arduino IDE potrzebujesz połączenia poprzez RS232 z procesorem. Z braku portu COM można kupić jakąś przejściówkę USB- RS232 (ttl) i programować poprzez bootloader, ale po co, jeśli masz programator? Sprawdź czy w opcjach arduino możesz ustawić programator USBasp.
    Ad3.) Jak najbardziej. Więcej, IDE nie ma znaczenia - Możesz pisać w Atmel Studio, Arduino IDE, Eclipse (polecam) wygenerować plik .hex a następnie wgrać go do procesora z wykorzystaniem AVR Dude (program co prawda jest konsolowy, ale istnieją nakładki graficzne).
    Mam nadzieję, że za bardzo sprawy nie zagmatwałem.
    Pozdrawiam!

    1
  • #5 15 Paź 2012 10:23
    rumcajz
    Poziom 2  

    Absolutnie nie zagmatwałeś, wręcz przeciwnie, sporo wyjaśniłeś :) Jestem informatykiem z wykształcenia, a Eclipse to moje narzędzie codziennej pracy, więc jeśli da się w nim programować uC, to powiedz tylko jak nazywa się plugin który mam do niego dołozyć i nawet się nie będę dalej zastanawiał nad IDE.

    Wygląda na to, że bootloader rzeczywiście nie jest mi w tej chwili potrzebny.
    Pytanie w takim razie brzmi: w jaki sposób go teraz usunąć?

    W ustawieniach Arduino programator USBasp jest wybrany, a mimo to kombinuje coś z portami COM:
    http://s.więcek.pl/majsterkowo.pl/uploads/2012/06/arduino-ide-programmer.png

    Obrazek wzięty stąd:
    http://majsterkowo.pl/programowanie-mikrokontrolerow-za-pomoca-programatora-usbasp/

    Podsumowując:
    1) Jaki plugin do Eclipse polecasz?
    2) Jak usunąć bootloader z mojego uC?

    Wielkie dzięki za wszystkie dotychczasowe wyjaśnienia!

    0
  • #7 15 Paź 2012 19:39
    rumcajz
    Poziom 2  

    Udało mi się wczytać przykładowy program Blink!

    Błąd powstał w wyniku mojego rozkojarzenia, źle wypełniłem plik boards.txt i brany był nieodpowiedni bootloader.

    Do przejrzenia konfiguracji od podstaw zainspirował mnie ten artykuł opisujący zgrubnie możliwe przyczyny błędu:
    http://www.ladyada.net/learn/arduino/help.html

    Widać Arduino IDE w jakimś celu potrzebuje tego bootloadera żeby móc wczytać jakikolwiek programik. Teraz zabieram się za rzecz, na której się kompletnie nie znam, czyli podłączenia pod to jakiegoś LEDa. Niech zamruga. Spodziewajcie się ofiar! title="ATmega8A-PU - Błąd przy programowaniu za pomocą Arduino IDE">:D

    Do usłyszenia (mam nadzieję).
    Wątek uznajemy za zamknięty.

    0