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.

Atmel Studio 6.2 - Kompilacja i ładowanie programu do mikrokontrolera

Konrad_M 13 Maj 2014 02:08 7158 18
  • #1 13 Maj 2014 02:08
    Konrad_M
    Poziom 15  

    Witam
    Zaczynam dopiero przygodę z programowaniem AVR, napisałem pierwszy program w języku C, posiadam środowisko programistyczne atmel studio i programator USBasp. Wszystko juz w atmel studio ustawiłem aby kompilator widział programator, ale za nic w świecie nie mogę dojść jak skompilować napisany program i wysłać do mikrokontrolera (atmega 8).
    Moze mi ktoś wytłumaczyć jak to zrobić krok po kroku?

    0 18
  • #2 13 Maj 2014 02:34
    kapelan
    Poziom 13  

    Musisz użyć zewnętrznego programu do zaprogramowania procesora. Atmel Studio nie wspiera USBasp.

    0
  • #3 13 Maj 2014 07:36
    el2010tmp
    Poziom 25  

    kapelan napisał:
    Musisz użyć zewnętrznego programu do zaprogramowania procesora. Atmel Studio nie wspiera USBasp.


    Nieprawda, np. tu jest opis:
    http://mikrokontrolery.blogspot.com/2011/03/Atmel-Studio-Programator-USBasp-USBTiny.html

    Konrad_M napisał:
    ale za nic w świecie nie mogę dojść jak skompilować napisany program i wysłać do mikrokontrolera (atmega 8).

    Jest taka ciekawa strona : google.pl :)

    0
  • #4 14 Maj 2014 00:39
    Konrad_M
    Poziom 15  

    Napisałem przecież, że USBasp mam skonfigurowane w Atmel studio. Skonfigurowałem go tak jak na tym blogu z linku.

    el2010tmp napisał:
    Jest taka ciekawa strona : google.pl
    znajdź mi w google opis lub filmik o kompilowaniu i ładowaniu programu do mikrokontrolera w ATMEL STUDIO, a będę wdzięczny, bo ja albo jestem ślepy, albo nie umiem znaleźć, albo po prostu tego niema.
    O AVR studio jest miliony wiadomości i filmików w internecie, natomiast o Atmel studio mało
    Aha i z angielskiego jestem słaby wiec dlatego nie umiem znaleźć tej funkcji w opcjach.

    Dodano po 3 [godziny] 25 [minuty]:

    Drugą noc już przy tym siedzę....
    Nie mam już siły, jutro zainstaluje eclipse

    0
  • Pomocny post
    #5 14 Maj 2014 07:25
    el2010tmp
    Poziom 25  

    Skoro faktycznie chodzi Ci o to o co pytasz to proszę:

    1. Kompilacja
    meni Build->Build Solution (lub po prostu [F7])
    2. Wysyłanie do mikrokontrolera
    meni Tools->USBASP (lub przycisk dodany zgodnie z linkiem powyżej)

    Po Build w oknie output na samym dole powinno być:

    Cytat:
    Build succeeded.
    ========== Build: 1 succeeded or up-to-date, 0 failed, 0 skipped ==========


    Jeżeli jest coś innego to znaczy że program zawiera jakiś błąd (Error) wówczas kompilacja nie jest możliwa.

    Atmel Studio zawiera wbudowany symulator dzięki któremu można krok po kroku sprawdzić jak działa program. To bardzo istotna zaleta w stosunku do Eclipse, szczególnie dla początkującego.

    Konrad_M napisał:
    Aha i z angielskiego jestem słaby wiec dlatego nie umiem znaleźć tej funkcji w opcjach.

    Mikrokontrolery to dobra okazja aby się podciągnąć, zwłaszcza że angielski techniczny jest prosty w porównaniu np. do niemieckiego.
    Build - budowanie aplikacji
    Compile - kompilacja, czyli jeden z kilku etapów budowania
    meni Build->Compile (lub Ctrl+F7)
    Używaj tej opcji w tylko przypadku wprowadzania drobnych zmian. Oczywiście jeśli kiedyś wcześniej była już budowana. Chociaż prościej nacisnąć F7 niż Ctrl+F7 :D


    W przypadku problemów polecam oczywiście forum elektroda zgodnie z zasadą "kto pyta nie błądzi."

    Sam wiem po sobie że początki bywają trudne :D ważne aby się nie zrażać drobiazgami i cały czas do przodu. Powodzenia.

    0
  • #6 14 Maj 2014 09:41
    GanzConrad
    Poziom 21  

    To jest dobry moment, aby zastanowić, się czy dwie stracone noce są warte tańszego o kilka zł programatora. Wymień go na współpracujący z Atmel Studio i nie zmarnujesz ani chwili na programator i ogarnięcie nowego środowiska (eclipse).
    Jak już wszystko ustawisz to programowanie i kompilowanie odbywa się jednym przyciskiem F5.

    0
  • #7 14 Maj 2014 19:08
    Konrad_M
    Poziom 15  

    I znowu próbuję i nic. Programatora nie chciałbym na razie zmieniać (powody finansowe).
    Otóż skonfigurowałem programator tak jak w linku Link
    Jest tam opcja skonfigurowania USBasp na Release i Debug. Wybrałem Debug, później Release.... Co to w ogóle jest i po co??
    Programator pojawił się w programie Atmel studio i jest widoczny.
    Następnie Ustawiłem taktowanie procesora we właściwościach projektu: toolchain\symbols>defined symbols (-D) F_CPU=100000UL

    Atmel Studio 6.2 - Kompilacja i ładowanie programu do mikrokontrolera

    Napisałem taki program (ma on migać diodą)

    Code:
    #include <avr/io.h>
    
    #include <util/delay.h>

    int main(void)
    {
        while(1)
        {
          DDRB |= (1<<PORTB);
          while(1)
          {
             PORTB ^= (1<<PB0);
             _delay_ms(1000);
          }
             
        }
    }


    I dalej postąpiłem jak radził el2010tmp
    Build->Build Solution
    pokazało się
    Code:
    Build succeeded.
    
    ========== Build: 1 succeeded or up-to-date, 0 failed, 0 skipped ==========

    Czyli wszystko ok
    A następnie kliknąłem w Tools->USBASP i pokazał się taki napis:
    Code:
    avrdude.exe: warning: cannot set sck period. please check for usbasp firmware update.
    
    avrdude.exe: AVR device initialized and ready to accept instructions

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

    avrdude.exe: Device signature = 0x1e9307
    avrdude.exe: erasing chip
    avrdude.exe: warning: cannot set sck period. please check for usbasp firmware update.
    avrdude.exe: reading input file "”C:\Users\Konrad\Documents\Atmel Studio\6.2\GccApplication6\GccApplication6\Debug\.hex”"
    avrdude.exe: error opening ”C:\Users\Konrad\Documents\Atmel Studio\6.2\GccApplication6\GccApplication6\Debug\.hex”: Invalid argument
    avrdude.exe: input file ”C:\Users\Konrad\Documents\Atmel Studio\6.2\GccApplication6\GccApplication6\Debug\.hex” auto detected as invalid format
    avrdude.exe: can't open input file ”C:\Users\Konrad\Documents\Atmel Studio\6.2\GccApplication6\GccApplication6\Debug\.hex”: Invalid argument
    avrdude.exe: write to file '”C:\Users\Konrad\Documents\Atmel Studio\6.2\GccApplication6\GccApplication6\Debug\.hex”' failed

    avrdude.exe: safemode: Fuses OK

    avrdude.exe done.  Thank you.


    Schemat podłączenia mikrokontrolera

    Atmel Studio 6.2 - Kompilacja i ładowanie programu do mikrokontrolera
    W rezultacie mikrokontroler nie migał diodą

    To są moje pierwsze przygody z programowaniem, chciałbym zaprogramować ten mikrokontroler abym poprostu wiedział, że sie da i mógł kontynuować naukę. Pomożecie :wink: ?
    Co źle zrobiłem, lub czego nie zrobiłem?

    0
  • Pomocny post
    #8 14 Maj 2014 19:51
    GanzConrad
    Poziom 21  

    Konrad_M napisał:
    F_CPU=100000UL

    jeśli oscylator masz ustawiony na 1MHz to brakuje jednego zera, powinno być F_CPU=1000000
    Nie używam USBasp, więc nie będę się wypowiadał w kwestii używania tego programatora ale zerknij na program - masz dwie pętle nieskończone i nie inicjalizujesz portu poza pętlą.
    Kod: c
    Zaloguj się, aby zobaczyć kod

    co do schematu:
    http://mikrokontrolery.blogspot.com/2011/04/minimalne-podlaczanie-pinow.html

    0
  • #9 14 Maj 2014 19:56
    dondu
    Moderator Mikrokontrolery Projektowanie

    GanzConrad napisał:
    Konrad_M napisał:
    F_CPU=100000UL

    jeśli oscylator masz ustawiony na 1MHz to brakuje jednego zera, powinno być F_CPU=1000000

    To tylko literówka w tekście na forum - na screenie jest prawidłowo.

    Niektóre programatory mają niezgodne ze standardem rozmieszczenie pinów GND.
    Sprawdź jak jest w Twoim przypadku.

    Cytat:
    ... please check for usbasp firmware update

    0
  • Pomocny post
    #10 14 Maj 2014 22:16
    el2010tmp
    Poziom 25  

    Konrad_M napisał:
    avrdude.exe: warning: cannot set sck period. please check for usbasp firmware update.

    W nowym mikrokontrolerze zegar jest ustawiony na 1MHz należy wówczas włączyć tryb programowania z niską prędkością w usbasp. Powinna być tam zworka lub mikroprzełącznik opisany jako slow lub podobnie.

    Albo skorzystaj z programu z tej strony: http://www.atnel.pl/mkavrcalculator.html
    i ustaw nim wewnętrzny oscylator na 8MHz. Będziesz miał procesor 8x szybszy.
    oczywiście wówczas F_CPU=8000000UL

    Jak zniknie powyższy warning to ok.

    Jednak wydaje mi się że poza tym będziesz musiał jeszcze raz przejrzeć konfiguracje usbasp dla atmel studio, polecenia tekstowe wpisuj z tutoriala metodą kopiuj-wklej. Szczególnie to:
    -e -U flash:w:”$(ProjectDir)Debug\$(ItemFileName).hex”:a

    0
  • #11 14 Maj 2014 23:26
    tehaceole

    Poziom 28  

    el2010tmp napisał:
    Albo skorzystaj z programu z tej strony: http://www.atnel.pl/mkavrcalculator.html
    i ustaw nim wewnętrzny oscylator na 8MHz. Będziesz miał procesor 8x szybszy.
    oczywiście wówczas F_CPU=8000000UL

    A przełącznik "-B" nie działa już z avrdude? Pytanie retoryczne. Mój USBasp nie ma zworki (projektowałem płytkę bez niej) i korzystam z programowego zmniejszenia prędkości transmisji prz użyciu przełącznika "-B150" wpisanego w opcjach programatora (oczywiście tylko na czas pierwszego programowania fusków nowego procka).

    0
  • #12 14 Maj 2014 23:31
    el2010tmp
    Poziom 25  

    tehaceole napisał:
    A przełącznik "-B" nie działa już z avrdude? Pytanie retoryczne.

    Jak jest łatwiej? Kilka razy modyfikować komendy przełącznikami czy kilka razy kliknąć myszką?
    Pytanie retoryczne.

    0
  • #13 14 Maj 2014 23:34
    tehaceole

    Poziom 28  

    el2010tmp napisał:
    Jak jest łatwiej? Kilka razy modyfikować komendy przełącznikami czy kilka razy kliknąć myszką?
    Pytanie retoryczne.
    Chyba nie paniał sarkazmu. Wszyscy potrafią polecić tylko MKAVRCalculator (swoją drogą bardzo fajny program, niestety do czegoś więcej niż M8 płatny). Natomiast mało kto chce sobie zadać odrobinę trudu aby poznać narzędzie z którego korzysta przy okazji użycia programatora, czyli avrdude...

    0
  • #14 15 Maj 2014 00:03
    el2010tmp
    Poziom 25  

    tehaceole napisał:
    Natomiast mało kto chce sobie zadać odrobinę trudu

    Święta prawda, ja również nie przepadam za trudem :D
    Choć czasami się nie opłaca [z reguły] :D

    0
  • #15 15 Maj 2014 09:01
    Konrad_M
    Poziom 15  

    Nie mam zworki zmniejszającej prędkość transmisji danych do mikrokontrolera, jest tylko zworka zmiany napięcia między 3,3V a 5V.
    Czyli jak inaczej zmniejszyć tą prędkość programowania w USBasp?
    W avrdude, jak to się robi?
    Rozumiem, że w MKAVRCalculator mogę podnieść taktowanie procesora, a następnie programować już przez Atmel studio.
    Wolę chyba jednak na początek zrobić to przez avrdude które już posiadam zainstalowane.

    0
  • #16 15 Maj 2014 09:49
    el2010tmp
    Poziom 25  

    Konrad_M napisał:
    Rozumiem, że w MKAVRCalculator mogę podnieść taktowanie procesora, a następnie programować już przez Atmel studio.

    Tak, po poprawieniu konfiguracji usbasp w atmel studio.

    Konrad_M napisał:
    Czyli jak inaczej zmniejszyć tą prędkość programowania w USBasp?
    W avrdude, jak to się robi?

    Tak jak wspomniał tehaceole, należy użyć dodatkowego przełącznika -B w poleceniu dla avrdude. Oczywiście jak lubisz utrudniać sobie życie :D
    -Uruchom cmd w katalogu w którym masz skompilowany program [plik nazwa.hex].
    -wpisz np.:
    avrdude -c usbasp -p m8 -B10
    powinien się połączyć i odczytać sygnaturę.
    avrdude -c usbasp -p m8 -U flash:w:nazwa.hex -B10
    program zostanie załadowany do mikrokontrolera.

    Przełącznik -B[wartość], im wyższa wartość tym niższa prędkość.
    Wpisz avrdude[enter] a wyświetlą Ci się wszystkie dodatkowe opcje.

    0
  • #17 16 Maj 2014 00:17
    Konrad_M
    Poziom 15  

    Na razie jeszcze nie ściągnąłem MKAVRCalculator. Pobawiłem się w Avrdude i wpisywałem różne komendy (oczywiście z indeksem -B10 ) z tej strony Link
    i za każdym razem wyświetlało mi

    Code:
    avrdude.exe: warning: cannot set sck period. please check for usbasp firmware update.

    Próbowałem też odczytać taktowanie procesora poleceniem
    Code:
    avrdude -c usbasp -p m8 -U hfuse:r:-:h -U lfuse:r:-:h -B10

    i wyświetlało mi
    Atmel Studio 6.2 - Kompilacja i ładowanie programu do mikrokontrolera

    el2010tmp napisał:
    Uruchom cmd w katalogu w którym masz skompilowany program [plik nazwa.hex].

    Tylko nie wiem jak to uruchomić??
    Wpisać w cmd adres tego pliku (czyli: C:\Users\Konrad\Documents\Atmel Studio\6.2\GccApplication8\GccApplication8\Debug\GccApplication8.hex) ?

    el2010tmp napisał:
    -wpisz np.:
    avrdude -c usbasp -p m8 -B10
    powinien się połączyć i odczytać sygnaturę.

    Odczytał to:
    Atmel Studio 6.2 - Kompilacja i ładowanie programu do mikrokontrolera
    Więc dalej jest ten komunikat.

    el2010tmp napisał:
    avrdude -c usbasp -p m8 -U flash:w:nazwa.hex -B10
    program zostanie załadowany do mikrokontrolera.

    W miejsce nazwa wpisać nazwę pliku czy jego adres na dysku?

    Czy przy każdym uruchamianiu komputera muszę przy starcie wyłączyć wymuszanie podpisów sterowników aby programator działał?

    Dodano po 1 [godziny] 6 [minuty]:

    OOOOOOOOO!!!!!!! Jest!!!!
    Ściągnąłem ten program https://www.elektroda.pl/rtvforum/topic1907509-30.html
    ProgISP V1.7.2
    Zaprogramowałem przez niego i wszystko działa!!!!!!!!!!
    Dioda miga!!!
    Banalnie prosty programik... Polecam
    Ale radość z migającej diody niesamowita :-D

    0
  • #18 16 Maj 2014 08:08
    el2010tmp
    Poziom 25  

    Konrad_M napisał:
    Tylko nie wiem jak to uruchomić??
    Wpisać w cmd adres tego pliku (czyli: C:\Users\Konrad\Documents\Atmel Studio\6.2\GccApplication8\GccApplication8\Debug\GccApplication8.hex) ?

    W programie cmd do zmiany bieżącego katalogu służy polecenie cd.
    Wpisz cd/?[enter] a uzyskasz podpowiedź jak tego użyć.

    Jednak najsensowniejszym rozwiązaniem jest poprawa konfiguracji usbasp w AtmelStudio.

    Cytat:
    avrdude.exe: warning: cannot set sck period. please check for usbasp firmware update.

    - Możesz zaktualizować firmware w programatorze usbasp ale równie dobrze nie musisz się tym przejmować.

    0
  • #19 23 Maj 2014 00:11
    Konrad_M
    Poziom 15  

    Ściągnąłem MKAVRCalculator i przez niego wgrywam program. Bardzo fajne narzędzie, bardzo mi się podoba i jest łatwy w obsłudze, a w dodatku po polsku.
    W Atmel studio nie chce nadal działać programowanie przez USBasp, ale od czego mam MKAVRCalculator :D
    Dzięki Wszystkim za cenne porady :wink:

    0