poniedziałek, 4 kwietnia 2011

Atmel Studio - czyli środowisko programistyczne (IDE)

Autor: tmf
Redakcja: Dondu

Artykuł jest częścią cyklu: Atmel Studio - Spis treści

Atmel Studio - Zintegrowane i kompletne środowisko programistyczne (IDE) dla mikrokontrolerów AVR i ARM.
Które środowisko wybrać?
To dylemat większości początkujących.

Naturalnym wyborem jest środowisko programistyczne (tzw. IDE) przygotowane przez producenta mikrokontrolera. W przypadku Atmela, środowiskiem tym jest Atmel Studio (w poprzednich odsłonach nazywane AVR Studio) i dotyczy zarówno mikrokontrolerów AVR jak i ARM


Nieważne które IDE wybierzesz, ważne, aby być konsekwentnym.

Jak zawsze na początku różne rzeczy będą cię denerwować, ale pamiętaj – po jakimś czasie przywykniesz, nauczysz się obsługiwać wybrane IDE i problemy znikną.

Najgorszą rzeczą jaką może zrobić początkujący jest szybkie porzucenie wybranego IDE (bo jest be, albo co gorsze, bo inni mówią, że jest be) i instalacja kolejnego (niby lepszego, ale niekoniecznie).


Jak wspomniałem naturalnym wyborem jest Atmel Studio. Dlaczego?
Ano z kilku powodów:

  • Wybraliśmy AVR'y, a Atmel Studio ma najlepsze dla nich wsparcie i obsługuje wszystkie typy mikrokontrolerów Atmela.
  • To samo środowisko posłuży nam także po przesiadce na AVR32 czy ARM.
  • Jest kompletne i zawiera IDE + cały toolchain, a także symulator AVR (ważne!) .
  • Zawiera ponad 1.100  gotowych do użycia przykładów.
  • Jest proste w instalacji – ściągasz, instalujesz i masz wszystko.
  • Zawiera dokumentację (datasheet'y) wszystkich mikrokontrolerów Atmela, które aktualizują się automatycznie poprzez wbudowany updater, nigdy więc nie przeoczysz żadnej erraty.

Ponadto: 
  • Jeśli producent wypuści jakieś nowe, to zazwyczaj uaktualnienie IDE pojawia się jeszcze zanim procesory zostaną oficjalnie zapowiedziane. 
  • Jest wygodne (nieco mulaste, ale inne zaawansowane IDE,  też są mulaste łącznie z Eclipse -  może z wyjątkiem CodeBlocks).
  • Pakiet WinAVR, który jest wymagany przez inne IDE już od lat nie jest rozwijany i raczej nic nie wskazuje, że ta sytuacja się zmieni.
  • Wspiera ASF (Atmel Software Framework) - nowa platforma programowa umożliwiająca łatwe przenoszenie kodu pomiędzy procesorami ATMega, XMega, AVR32 i ARM. Na większych procesorach to może być istotna zaleta.
... i pewnie wielu innych powodów, o których nie warto wspominać.

Jednak ciągle można się spotkać z opiniami, że Atmel Studio jest złe i należy je zmienić na Eclipse.
Skąd się one biorą? 


Nieco historii.
Bardzo dobrą wersją środowiska IDE Atmela, było AVR Studio 4. Ale ograniczało się do mikrokontrolerów AVR. Wraz z rozpowszechnieniem się ARM'ów Atmel podjął decyzję o rozbudowie i stworzenia uniwersalnego środowiska opartego o Visual Studio.


Przebudowa ta została rozpocząta od AVR'ów i powstała wersja AVR Studio 5. Pierwsze wersje tego IDE (oznaczone jako beta) były takie sobie, ale co gorsze – miały nową wersję toolchain'a (a więc kompilatora, bibliotek i narzędzi) również w wersji beta. I jak to w takich sytuacjach bywa – w cały pakiet wkradły się liczne błędy. Błędy na tyle poważne, że osoby początkujące miały problemy. Ale w informatyce i elektronice czas upływa raczej szybko, obecnie mamy wersję Atmel Studio 6, wraz z nowym toolchain'em i nową wersją kompilatora avr-gcc, które już tych błędów nie posiadają.


20rafalo

Dwa dni zmarnowane na ustawienia w Eclipse i nic - przez ten czas już napisał bym program w AVRStudio i był bym do przodu ...

Także nie polecam przesiadki na Eclipse tym, którzy zawsze pisali w AVRStudio, chyba, że dostaną skonfigurowaną wersję Eclipse od jakiegoś użytkownika ...

Atmel Studio ma równie dobry edytor i wiele fajnych opcji, których Eclipse nie ma - np. symulator.



Instalacja

Cały pakiet Atmel Studio po rejestracji można pobrać ze strony firmy Atmel: http://www.atmel.com/atmelstudio

Pakiet jest sporawy, co może niektórych zniechęcać. Związane jest to z tym, że oprócz IDE zawiera toolchain oraz komplet dokumentów (not aplikacyjnych i katalogowych) wszystkich mikrokontrolerów produkowanych przez firmę Atmel. Dzięki temu po instalacji nie będzie potrzeby ich dodatkowego ściągania z Internetu.

Co ważne, zawiera także liczne przykłady. W wielu sytuacjach są to gotowe rozwiązania często spotykanych problemów, warto więc je przeanalizować.

Po pobraniu i zainstalowaniu pliku jesteteśmy gotowi do pracy. Proste, prawda? W przeciwieństwie do innych IDE nic nie trzeba konfigurować, wybierać, czy poprawiać. Instalujesz i działa, czyli tak jakbyśmy się tego spodziewali.


Jarosław J

Jeszcze raz dzięki wszystkim. Próbowałem z ECLIPSE za usilną namową ...., ale jak to mówią jak coś jest do wszystkiego to jest do niczego. Zniechęca konfiguracja. Ja zostaję przy ATMEL STUDIO. Pewnie jeszcze nie raz się wyrżnę na jakichś pułapkach ale nie boję się konfrontacji z nimi.





Pierwszy projekt

Mamy już zainstalowane środowisko i zaczynamy zabawę :-)

Startujemy

Po uruchomieniu programu powinnyśmy zobaczyć okienko jak poniżej:



Warto przejrzeć przykładowe projekty dostarczone przez firmę Atmel (New Example Project from ASF) lub możemy stworzyć własny projekt. Klikamy więc na New Project:



W otworzonym okienku możemy wybrać nazwę projektu (Name), katalog roboczy (Location), a także język projektu. Do wyboru mamy:
  • assembler, 
  • C, 
  • C++.
Do C++ na AVR8 może kiedyś jeszcze wrócę (a może dowiesz się o nim z mojej nowej książki - wkrótce).

Wybieramy C jako język projektu, spowoduje to automatyczne skonfigurowanie wszystkiego co potrzeba, aby skompilować program w C – zostaną wygenerowane odpowiednie katalogi i podkatalogi, plik Makefile itd. Ale to nie koniec konfiguracji. Trzeba jeszcze wybrać używany mikrokontroler, np. ATMega128:




W okienku powyżej oprócz parametrów wybranego mikrokontrolera, po prawej wymienione są także narzędzia (oczywiście wyłącznie narzędzia produkowane przez firmę Atmel), przy pomocy których możemy dany mikrokontroler programować. Po kliknięciu Ok możemy rozpocząć pisanie programu. Ale czy aby na pewno? Rozpocząć pisanie możemy, ale uzyskane efekty będą zapewne odbiegać od spodziewanych.


Konfiguracja projektu

Projekt trzeba jeszcze skonfigurować. Do tej pory wybraliśmy jedynie typ mikrokontrolera (MCU), a jak pamiętamy, należałoby jeszcze przynajmniej zrobić kilka innych rzeczy:
  1. określić częstotliwość taktowania mikrokontrolera,
  2. określić różne optymalizacje,
  3. określić narzędzia, które posłużą do programowania.

Wszystkie powyższe opcje definiuje się wybierając Project->Properties... lub naciskając po prostu Alt+F7.


1. Ustawienie F_CPU

To jest chyba najczęściej spotykany problem początkujących. W AVR Studio 4 w tym celu była osobna zakładka, w począwszy od AVR Studio 5 także i w Atmel Studio 6 jej nie ma!

I co począć? Ano sięgnąć do podstaw i zastanowić się czym owo F_CPU jest? A jest zwykłym symbolem. Jak pamiętamy, symbol można zdefiniować na dwa sposoby:


a) w kodzie programu dyrektywą preprocesora:

#define F_CPU 2000000UL

Definiowanie F_CPU w w kodzie w większości sytuacji nie jest zalecane, o czym pisałem w tym artykule: F_CPU – gdzie definiować?


b) lub przekazując kompilatorowi podczas wywołania definicję symbolu, czyli tak:

Po wyborze okienka właściwości projektu i rozwinięciu zakładki Toolchain z pewnością zauważymy w gałęzi AVR/GNU C Compiler znajomo wyglądającą zakładkę Symbols. Bingo! Zdefiniujmy więc nowy symbol:



Jak widać, wpisujemy po prostu nazwę symbolu (bez –D) i towarzyszącą mu wartość. Od tej chwili we wszystkich kompilowanych plikach symbol F_CPU jest zdefiniowany:


Chyba to nie aż tak skomplikowana operacja, by z tego powodu przesiadać się na inne IDE na np. Eclipse, w którym i tak będziesz musiał zdefiniować F_CPU w podobny sposób?


2. Optymalizacja

Atmel Studio oferuje nam wygodne i szerokie możliwości optymalizacji tworzonego programu. Dzięki temu nie trzeba zagłębiać się w wiedzę tajemną jaką są opcje wywołania avr-gcc lub linkera. Ze wszystkich opcji najważniejsza jest jedna, znajdująca się w zakładce Toolchain/AVR/GNU C Compiler/Optimization.

Domyślnym poziomem optymalizacji jest poziom O1 – nie jest to opcja optymalna. Bez wdawania się w szczegóły warto wybrać poziom Os – generuje on najbardziej zwarty kod.

Zakładka ta powinna więc wyglądać jak poniżej:


Jednym z najczęstszych błędów jest pozostawienie optymalizacji na poziomie O1 – skutkuje to generowaniem bardzo długiego kodu wynikowego.


3. Wybór narzędzi do programowania

Ostatnim obowiązkowym polem, które należy skonfigurować jest wybór narzędzi programowania. Właściwie konfiguracja tego pola jest nie tyle obowiązkowa, co wygodna. Jeśli jesteśmy szczęśliwymi posiadaczami narzędzi firmy Atmel (lub ich klonów), to możemy programować mikrokontroler bezpośrednio z poziomu Atmel Studio. Jeśli posiadamy inne narzędzia to też możemy, ale wymaga to odpowiedniej konfiguracji Atmel Studio. Wyboru dokonujemy w zakładce Tool.

Oprócz wyboru narzędzi do programowania możemy wybrać symulator – dzięki temu będziemy mieli możliwość symulowania działania naszego programu, tak jakby działał on na prawdziwym mikrokontrolerze:



I to tyle – prawda, że proste? Po tych trzech małych krokach masz w pełni skonfigurowane IDE oraz projekt. Nic tylko siąść i pisać swoje dzieła. Powodzenia :-)

Zobacz także: Atmel Studio - Spis treści

69 komentarzy:

  1. Szkoda, że IDE jest tylko na jedną platformę, chociaż mam nadzieję, że sam toolchain da się zbudować na innych systemach.

    Co do książki możesz zdradzić jakieś szczegóły? Język C dla mikrokontrolerów AVR bardzo mi się spodobał i mam nadzieję, że kolejna książka będzie zawierała omówienie solidnej porcji nowych zagadnień. :)

    OdpowiedzUsuń
  2. Sam toolchain jest dostępny także na GNU/Linux. Dobrze, że o tym wspomniałeś, w kolejnej części opiszemy instalację pod tym systemem.
    Co do książki - mam nadzieję, że będzie tam solidna porcja informacji. Powiedzieć mogę tyle - będzie o XMEGA (ale wiele rzeczy da się przenieść na inne AVRy, czy procesory) i będzie mała wiele przykładów, od wyświetlaczy, po co coś dla miłośników robotyki i modelarstwa.

    OdpowiedzUsuń
  3. Bardzo fajne środowisko, przyjemnie się w nim pisze programy, ale nie wiem dlaczego strasznie duży kod wychodzi... W WinAVR kod wynikowy jest o wiele krótszy

    OdpowiedzUsuń
  4. Pewnie optymalizację masz włączoną na O1
    Mi wychodzi identycznie przy Os

    OdpowiedzUsuń
  5. Przeczytaj uważnie powyższy artykuł. Powodem jest domyślnie opcja optymalizacji -O1, a nie -Os tak jak we wcześniejszych wersjach.

    OdpowiedzUsuń
  6. Optymalizacja -O1 i -O0 są domyślne w wersji Debug, w wersji Release domyślne jest -Os. Jest to bardzo sensowne, bo trudniej się debuguje zoptymalizowany kod.

    OdpowiedzUsuń
  7. marszni, niby tak, ale:
    1. Debug jest domyślną konfiguracją, lecz słuszna uwaga.
    2. Problem w tym, że przy -O0 i -O1 generowany jest kod niewrażliwy na pewnego typu błędy- m.in. na brak modyfikatora volatile. Także trzeba na to uważać, bo potem jest sytuacja kiedy program z -O1 działa, a z -Os nie i ludzie piszą, że kompilator ma błędy :)
    3. -O1 jest niekompatybilne z delay.h i taki kod będzie problematyczny. Swoją drogą w nowszych gcc jest atrybut optimize, który można przypisać do funkcji. Może AVR-libc w kolejnych wersjach będzie o to uzupełniona.

    OdpowiedzUsuń
  8. Ponieważ nie chcę uchodzić za Eclipsowego fanatyka powiem tylko, że Atmel UKRADŁ KOMPLETNIE i całkowicie niektóre pomysły z Eclipse. Przykładem będzie widok okna "Properties" naszego projektu.
    Niesamowitym plusem jest fakt, że można korzystać z wszystkiego co kolega tmf napisał - środowisko gotowe po zainstalowaniu do działania, symulator, debugger (cokolwiek mówić i cenach debuggerów).
    Największym (dla mnie) minusem jest brak wersji pod Linux - i z konstrukcji opartej o .NET wynika, że na wersję Linux'ową się nie doczekamy.

    OdpowiedzUsuń
  9. Proszę o pomoc. Wszystko zrobiłem zgodnie z artykułem, ale nie mogę zaprogramować mikrokontrolera. Mam programator Usbasp i Atmel studio nie widzi go. Z artykułu wynika, że jak Atmel nie widzi programatora to znaczy, że jest źle zainstalowany, ale ja już wszystkich sterowników do programatora używałem i nic to nie dało.
    Z góry dzięki za pomoc

    OdpowiedzUsuń
  10. Nie, w artykule pisze, że "jeśli jesteśmy szczęśliwymi posiadaczami programatorów firmy Atmel" to możemy programować z poziomu Atmel Studio. USBASP się do nich nie zalicza. Co nie znaczy, że nie można go wykorzystać - można, tylko trzeba odpowiednio skonfigurować Atmel Studio o czym może wkrótce będzie w kolejnej części kursu tego IDE.

    OdpowiedzUsuń
  11. Wow, Można używać USBasp z Atmel Studio? Czekam z niecierpliwością na artykuł o tym.

    OdpowiedzUsuń
  12. A avr studio 4 jest dobre? bo zastanawiam się czy się nie przesiąść?

    OdpowiedzUsuń
  13. Jeżeli masz wolny (czytaj słaby komputer), to jak najbardziej AVR Studio 4 - szybie i "mało zasobożerne". Na pewno nie instaluj AVR Studio 5 - to wersja z dużą ilością błędów, która na szczęście szybko została zastąpiona przez Atmel Studio.

    OdpowiedzUsuń
  14. Dosyć intensywnie szukam jakiegoś kursu obsługi Atmel Studio 6, ale bez powodzenia. Czy możecie coś polecić początkującemu?

    zielony

    OdpowiedzUsuń
  15. Czy ktoś może mi wytłumaczyć gdzie się wybiera język i jak przejść dalej w zdjęciu 2? Bo u mnie to wygląda w taki sposób: http://www.fotosik.pl/pokaz_obrazek/ea6e57b984340ec7.html

    OdpowiedzUsuń
  16. Witam, czy w AS6 jest możliwość pominięcia symulacji funkcji _delay_ms , bez komentowania linii? Mam (muszę na obecną chwilę) sporo tych instrukcji i na zmianę symuluję i wgrywam do układu. Trochę męczące jest komentowanie/odkomentowywanie za każdym razem.
    Z góry dziękuję za pomoc.

    OdpowiedzUsuń
  17. Nie, ani AS, ani żadne inne środowisko nie oferują takiej możliwości - musałyby dosyć inteligentnie interpretować kod. Jednak w AS masz domyślnie dwa cele - DEBUG i RELEASE. Kompilując cel DEBUG masz zdefiniowany symbol DEBUG, wystarczy więc każdy delay umieścić w klauzuli #ifndef/#endif. Oczywiście to niewygodne, można sobie więć zdefiniować stosowne makro warunkowo włączające instrukcję delay. Można też podrzucić drugi nagłówek delay.h - dla celu DEBUG definiujący puste funkcje opóźniające. Swoją drogą jeśli masz w programie funkcje opóźniające o czasie trwania dłuższym niż kilka-kilkaset us, to na 90% program jest źle napisany i raczej trzebaby nad tm się zastanowić.

    OdpowiedzUsuń
  18. Bardzo dziękuję za odpowiedź(podpowiedź - inne pliki delay.h :). Wiem, że używanie delay jest jednym z najgorszych błędów. Ale. Układ - płytka już istnieje, jest oprogramowana w BASCOMIE i "jakoś" działa. Ja w ramach nauki AVR-GCC chcę po prostu zrobić to samo tyle że w C. Ani płytka ani oryginalny program w BASCOM nie są idealne, ale nikt nawet nie chce słyszeć o zmianach. Delay są mi potrzebne do wysterowania 21 programowych kanałów PWM. Jest to "kilka" funkcji w różny sposób opisujących jak owe kanały mają sie zachowywać. Co prawda "na boku" próbuję sam sobie zaprojektować płytkę z rejestrami 74HC595, ale na razie moja wiedza elektroniczna jest zbyt mała (bardzo mała). Tak czy inaczej bardzo dziękuję za odpowiedź.

    BTW czy są jakieś bardziej wydajne sposoby na ogarnięcie 21 kanałów PWM niż standardowe "if timer>zmienna_pwm porta |= (1<<PA1) else ...."

    OdpowiedzUsuń
  19. Tak, są to mapy bitowe. W skrócie tworzysz dwuwymiarową tablicę, w której jeden wymiar to kanały PWM a drugi to czas.
    Swoją drogą, skoro potrzebujesztyle PWM, to może XMEGA? Masz nawet 32 kanały PWM sprzętowe.

    OdpowiedzUsuń
  20. tmf - Kiedy można się spodziewać nowej książki ?

    OdpowiedzUsuń
  21. Z tego co podał Helion, to w sierpniu 2013: AVR. Praktyczne projekty

    OdpowiedzUsuń
  22. Chyba mogę oficjalnie potwierdzić termin sierpniowy. Od razu mogę chyba też napisać, że kolejna - będąca kontynuacją z jeszcze ciekawszymi projektami też się pojawi :)

    OdpowiedzUsuń
    Odpowiedzi
    1. Termin w Helionie wisi wrześniowy, czekam osobiscie z niecierpliwością :)

      Usuń
    2. W nowej książce jako platforma widzę że bedzie Xplained - można wiedzieć, który to zestaw konkretnie?

      Usuń
    3. Głównie Xplained XMEGA256A3BU. Ze względu na to, że ma RTC32 i podtrzymywanie bateryjne. Niemniej większość przykładów praktycznie bez zmian da się przenieść na inne Xplained. Oczywiście są też wszystkie potrzebne schematy i informacje do zbudowania własnego układu, także można po prostu kupić XMEGA i sobie to polutować. Albo kupić jeden z modułów z XMEGA prezentowanych na tym blogu - możliwość włożenia tego do stykówki przyda się w kolejnych tomach, gdzie będą przykłady nieco bardziej skomplikowane, np. playera mp3, sterowania silnikami czy współpracy z różnymi modułami z Arduino, LCD itd. Będzie wymagało to trochę lutowania.
      W tomie drugim będą przykłady wymagające Xplained z XMEGA128, ze względu na EBI i pamięci SDRAM oraz łączenie LCD graficznych przy pomocy interfejsu równoległego. Niemniej będzie też jak to zrobić na XMEGA256A3BU.

      Usuń
    4. :) to się już ciesze bo takowy modulik jest u mnie na biurku i go oswajam :)
      Niżej zadałem ponownie to pytanie, bo nie widziałem tej odpowiedzi.

      Usuń
    5. No książka u mnie dzisiaj wylądowała, mam nadzieję że dużo z niej skorzystam, - szkoda że nie zauważyłem że jest rabat.
      Wojtek

      Usuń
    6. Tak to jest z promocjami - są nieprzewidywalne i łatwo przegapić pomimo, że staram się Was o każdej informować. Ja dzisiaj także otrzymałem, więc moja recenzja pojawi się za kilka dni.

      Usuń
  23. Bardzo dobra informacje szczególnie dotyczące F_CPU - bo to troche udziwnione jest w stosunku do wczesniejszych wersji AS. Dzieki za informacje.
    Pozdrawiam,
    Wojtek

    OdpowiedzUsuń
  24. Artykulik super, a szczególnie ten fragment dotyczący F_CPU :)
    A jak należy pod AS6 ustawic przy nowym projekcie "Debugging Level" oraz konfigurację: czy na Release, Debug czy tez moze All?
    Pozdrawiam
    Wojtek

    OdpowiedzUsuń
  25. Co do udziwnienia F_CPU - wiele osób tak to odbiera, ale w rzeczywistości jest to logiczne. F_CPU jest zwykłym symbolem, tyle, że zwyczajowo przypisuje mu się niezwykłe funkcje :) Stąd IMHO nie ma powodu go w jakiś szczególny sposób wyróżniać, robiąc mu oddzielne zakładki. Początkujący myślą, że w takiej zakładce ustawia się częstotliwość taktowania i są zaskoczeni, że tak nie jest.
    Co do wyboru targetu - tak naprawdę jest to obojętnie. Domyślny target Debug kompiluje aplikację z -O1, a release z -Os. Niemniej można sobie to ręcznie zmienić. Ja np. praktycznie zawszę robię debug z -Os. Samo Debugging Level można dać na maksimum - to nie wpływa na kod wynikowy, lecz na ilość informacji w plikach obj/elf, które potem służą dla debugera.

    OdpowiedzUsuń
  26. Mam problem z tym środowiskiem, skopiowałem program z Drzaśkowego pamiętnika i usiłowałem go wgrać do Atmegi8 przez USBasp metodą opisaną w sąsiednim artykule. Wgrał się, owszem. Tylko że AtmelStudio wygenerował jakiegoś "chorego" hexa. Program powinien pokazywac coś na wyświetlaczu, tymczasem nie pokazuje absolutnie nic. Tego samego hexa wgrałem przez SinaProg i jest to samo, więc to wina AtmelStudio a nie programatora, avrdude czy programu. Co może być nie tak?

    OdpowiedzUsuń
  27. Nie, wina leży jakieś 20-30 cm przed monitorem.
    Poza tym chwilowo szklana kula jest zajęta czymś innym. Od tego typu pytań jes np. forum Elektroda.pl.

    OdpowiedzUsuń
  28. Czy a jeśli tak to gzie w AS6 można ustawić słownik polski tak aby nie było podkreśleń o błędach?

    OdpowiedzUsuń
    Odpowiedzi
    1. Dzięki - działa ale niektóre znaki i tak są dalej podkreślane, ą, ś, - (długie) i na razie nie doszedłem dlaczego

      Usuń
    2. Problem rozwiązany poprzez konwersję plików słownika (artykuł z powyższego linku został poprawiony). Jeżeli jednak, ktoś będzie znał inny sposób nie wymagający konwertowania, prosimy o informację.

      Usuń
  29. POMOCY!
    Zainstalowałem najnowszy Atmel Studio bez żadnych problemów. Jednak przy próbie włączenia wyskakuje mi komunikat:
    "Your AtmelStudio evaluation period has expired. You can get a key to extend your trial by registering this copy of AtmelStudio online. You may also purchase a key to activate the product."
    Poniżej komunikatu jest przycisk przenoszący mnie na stronę Microsoft Visual Studio gdzie po rejestracji otrzymuję key na 2 miesiące. Jakżeby inaczej key oczywiście jest odrzucany i dalej studia uruchomić się nie da.

    Dzieje się tak tylko na jednym PC, na którym mam Win 7 64, Win XP a nawet maszynę wirtualną również z XP. Na każdym systemie to samo. Reinstal Win 7 także nie pomógł.

    Proszę pomóżcie.

    OdpowiedzUsuń
  30. Nie wiem do czego ten infroamtyczny świat zmierza. Na komputerze z procesorem 3Gh i1,5gB ramu AtmelStudio uruchamia się kilka minut i muli niesamowicie.

    Już podczas instalacji przeczuwałem, że nie będzie dobrze, gdy zobaczyłem, że konieczne jest pobranie netframeworków i visualstudio. Ludzie w Atmelu de facto sprzedają produkty programistom, a sami nie zatrudniają takich z odpowiednimi kwalifikacjami, którzy potrafili by napisać aplikacje od zera.

    WinAvr (Programers Notepad) śmiga na tym kompie jak huragan, więc dziękuje postoje.

    P.S. Proszę nie pisać, że komp stary, a windows z poprzedniej epoki - taki zestaw do każdej pracy biurowej jest (a właściwie powienien być) jak najbardziej odpowiedni. Jedyne co nakręca ten durny wyścig gigaherców i gigabajtów jest obróbka grafiki (gry komputerowe), a tak naprawdę dobre komputery produkowane są już od 2004 roku i to powienien być standard biurowy. A wszystko wyglada tak, ze co roku coraz lepsze komputery i coraz wyzsze wymagania prostych programów. P-A-R-A-N-O-J-A.

    T.

    OdpowiedzUsuń
    Odpowiedzi
    1. To raczej masz coś nie tak z komputerem. Swego czasu miałem kompa z zegarem 2,2GHz i 2 GB RAM + Windows XP i uruchamiał się zupełnie przyzwoicie - nie pamiętam dokładnie ile to trwało, pewnie kilkanaście sekund. Z jednej strony długo, z drugiej - odpalam to raz i działam. A w trakcie działania działał bardzo sprawnie.
      Teraz mam zegar 3,2 GHz i trochę więcej pamięci, a przede wszystkim dysk SSD i uruchamia mi się w kilka sekund. Też bez znaczenia, bo jak pisałem, uruchamiam go raz, a że hibernuję komputer, to jest to raz na długi czas...
      Oczywiście napisany bez .NET byłby pewnie szybszy, tylko ile by wtedy kosztował? Dostajesz produkt za darmo, wypasione środowisko, przy którym Programmers Notepad ma funkcjonalność schowka w Atmel Studio. Napisanie takiego programu od zera to koszt pewnie kilku-kilkunastu mln $. Stąd obecnie jeśli są gotowce (a takowym jest środowisko Visual Studio) to się je wykorzystuje, a zaoszczędzone pieniądze można wydać na coś innego.
      PM jest dobry do malutkich projektów, kilka, kilkanaście funkcji. Z szybkich środowisk o większych możliwościach warto pomyśleć np. o Codeblocks.

      Usuń
    2. Porównujesz programy, których poziom skomplikowania i możliwości jest kosmicznie różne :-)
      To mniej więcej tak jakbyś na swoim komputerze porównywał Windows 3.11 z Windows XP. Takie porównanie nie ma sensu.

      Zmierzyłem czasy uruchamiania programów na komputerze z AMD Phenom II X4 965, 3.41GHz i 4GB RAM z Windows XP:
      - Eclipse (Zend Studio 6.1) - 42 sekundy,
      - Atmel Studio 6.1 2730 - 36 sekund,
      - AVR Studio 4.18 - 4 sekundy.

      Wniosek jest prosty - masz coś nie tak ze swoim środowiskiem i To jest Twoja wina, a nie Stmel Studio.

      Poza tym porównywanie czasu ładowania nie jest miarodajne ponieważ jest to czas jednorazowy. Istotniejsze są natomiast zalety związane z z możliwościami porównywanych przez Ciebie środowisk, gdzie Atmel Studio zwraca Ci każdego dnia o wiele więcej czasu w postaci szybszego pisania bezbłędnych programów oraz pozostałych jego możliwości jak np. symulatora.

      Jeżeli nie masz czasu na dochodzenie ze swoim systemem do porządku, to wykorzystaj AVR Studio 4.18 lub 4.19: Kompilator i środowisko programistyczne (IDE)

      Poza tym przeczytaj temat: Jak przyśpieszyć? Atmel Studio

      Na koniec dodam tylko, że czasy kompilacji programów we wszystkich wymienionych wyżej środowiskach są porównywalne.

      Usuń
    3. Ponieważ TMF napisał o dysku SSD, zapomniałem dodać, że powyższe czasy zmierzone zostały na komputerze ze standardowym dyskiem HDD. Na komputerzez z SSD, uruchamianie Atmel Studio trwa zaledwie kilka sekund.

      Usuń
    4. GHz nie jest żadnym wyznacznikiem wydajności procesora. Jestem prawie pewien, że wspomniany zamulacz to P4, chyba najgorszy procesor Intela jaki wyprodukowali. Miałem P4 2.8GHz Northwood (wersja z krótszym potokiem, prescotty miały dłuższe i mimo, że były nowszymi konstrukcjami obrywały jeszcze bardziej) i w części zastosowań dostawał tęgie baty od Pentium M 1.6GHz. Poza tym 1.5GB RAM to też trochę mało, nawet jeśli to dalej używasz XP.

      Poza tym jeśli chcesz szybciej działające środowisko wyłącz inteligętne podpowiadanie składni. To jest jeden z największych zamulaczy większości IDE i niestety potrzebuje sporych mocy obliczeniowych do przyzwoitego działania. Niestety każde bardziej rozbudowane środowisko cierpi na te same przypadłości. Albo porządne podpowiedzi albo tragikomedia jak na dzisiejsze standardy. Wybór należy do Ciebie. :)

      Usuń
    5. Sebastian: masz rację, niestety, inteligentne podpowiadanie składni to też jeden z najistotnieszych powodów dla których wybiera się rozbudowane IDE. O ile dla ATTiny i ATMgea pliki nagłówkowe zawierają wyłącznie definicje bitów, ale nie pól bitowych, dzięki czemu jest ich stosunkowo niewiele, o tyle dla XMEGA, AVR32 i ARM w nagłówkach znajdują się definicje funkcji pól bitowych, a są ich tysiące i kto by spamiętał, że np. podział preskalera SPI przez 64 to stała SPI_PRESCALER_DIV64_gc?:) Tu pazurki pokazują nowe IDE. Jeśli ktoś tych bajerów nie potrzebuje, to ma stare AVR Studio (jak zauważył Dondu) i wiele innych prostych edytorów. Czyli dla każdego to co lubi.
      Wątpliwe jest też to czy nowe IDE są takie wolne - rzut okiem na przykład bitów rejestrów IO. Nowe IDE podpowie mi ich nazwę, szybciej będę też pisał, bo całą podpowiedź mogę zaakceptować dwoma klawiszami. Stare IDE - niby działa szybciej, ale konia z rzędem temu, kto mi na szybko, nie zaglądając do noty powie jak ustawić na ATMega bity WGM (i gdzie się one w ogóle znajdują) dla wybrania np. trybu 10 pracy timera... Tu program nie zamula, ale człowiek tak wykonując robotę, którą może wykonać komputer.

      Usuń
  31. tmf, wiem sam z tego powodu zacząłem korzystać z Eclipse'a (bo działa na Linuksie bez zbędnego kombinowania). Pisałem tą odpowiedź zanim zobaczyłem, że są już wasze. Rzeczywiście ciężko oczekiwać aby IDE z masą funkcji chodziło tak zwinnie jak "bardziej zaawansowane notatniki", na co już zwróciliście uwagę. :)

    OdpowiedzUsuń
  32. U mnie odpada się 1:23 sekundy. Do tego lekko przywiesza się, gdy wchodzę do właściwości projektu. Ogólnie scrollowanie tekstu, etc działają dość szybko. mam wrażeie, że przed wgraniem najnowszego internet explorera (gdzieś wyczytałem, że bez nowej wersji niektóre programy mulą) program uruchamia się szybciej - choć może to efekt placebo, bo niestety nie zmierzyłem.

    >>przy którym Programmers Notepad ma funkcjonalność schowka w Atmel Studio.
    Tak, tylko nawet porównując Atmel Studio z Microsoft officem, to ten drugi wyraźnie (jakieś 10x) szybciej się uruchamia, a tu już rozbudowanie i funkcjonalność programów są podobne.

    >>GHz nie jest żadnym wyznacznikiem wydajności procesora.
    Dokładniej to moj procek (amd athlon 3000 64bit) ma te 3 GHz tylko z nazwy, taktowany jest na 1,8ghz. Co do ramu, to zostaje mi jeszcze ok 700mb wolnego.
    A sytuacja z tym wolnym działaniem dziwi mnie tym bardziej, że system jest świeżo postawiony, a wiec nie zaiwrusowany, zapchany, etc.

    AVR Studio 4.18 chyab nie ma symulatora, a na tym najbardziej mi zalezy.


    BTW, nie wiecie może o co chodzi, dodaje we własciwosciach projektu symbol i podczas kompilacji dostaje error:
    Error 1 8000000UL: No such file or directory avr-gcc.exe 0 0 Pierwszy projekt

    Tomq.

    OdpowiedzUsuń
  33. AVR Studio 4.18 ma symulator, więc masz rozwiązanie :)

    OdpowiedzUsuń
  34. Czy zamiast F_CPU=8000000UL nie powinno się wpisywać DF_CPU=8000000UL ?
    U mnie działa tylko ta druga fraza.

    T.

    OdpowiedzUsuń
    Odpowiedzi
    1. Nie, powinno być tak jak jest to pokazane. -D jako opcja kompilatora definująca symbol zostanie dodana automatycznie przez AS.

      Usuń
  35. Widzę, że środowisko to nie wspiera uC AT91SAM7/9. Czy ktoś wie dlaczego ? I czy tak już zawsze pozostanie ???

    OdpowiedzUsuń
  36. Wszystko jest pięknie opisane. Ale rzeczywistość bywa mniej optymistyczna. Ano ściągnąłem oprogramowanie Studia6 i nie dało się go uruchomić. To studio zanteresowało mnie przede wszystkim, ze względu na stosowanie ATJGICE3, Stary mkII nie zawsze się poprawnie uruchamia, a ja naprawdę nie znam powodów i szlak mnie trafia.

    OdpowiedzUsuń
    Odpowiedzi
    1. A konkretnie co się stało? Bo trudno wyobrazić sobie, żeby coś oparte o .NET napisany przez producenta systemu operzacyjnego tak po prostu nie działało. Dodatkowo problemy z mkII? To raczej wygląda na problem z komputerem/jego oprogramowaniem.

      Usuń
  37. Ujmę to tak, jeśli ktoś nie umie sobie przygotować środowiska do pracy, to może w ogóle nie powinien brać się za naukę programowania AVR? Tym bardziej, że opisów w sieci jak to zrobić poprawnie krok po kroku jest cała masa, i to za równo po Polsku jak i Angielsku. Osobiście lubię Eclipse, bo się do niego przyzwyczaiłem i nie odczuwam, że czegoś mi w nim brakuje, a już na pewno nie mikrocontrolerów AVR ;] Za co lubię Eclipse jeszcze i uważam, że jest to jego wielką zaletą? Za to, że nie muszę uczyć się 20 IDE jeśli korzystam z różnych microcontrolerów, różnych języków programowania, także programowania w C na komputer (windows-linux) Jednym słowem jedno środowisko programistyczne, a wiele możliwości :)

    Uważam, że bez sensu jest zachwalać jakiekolwiek środowisko programistyczne, bo i tak każdy z czasem wybierze to, jakie mu najbardziej pasuje, albo też do czego zmusi go życie i sytuacja :) Najbardziej naiwnym podejściem jest jednak to, że ktoś wybierze Atmel Studio, bo Atmel jest też producentem Atmegi, czy Attiny hehe. Może powinien Pan zacząć także korzystać wyłącznie z UNIXA, bo C przecież powstał na tą platformę, a także jego nowszy brat C++ nie był nigdy tworzony pod platformę Windows :) Idąc oczywiście tym tokiem rozumowania.

    Problemem nie jest to jakie środowisko Pan wybierze, problemem jest bezsensowne roztrząsanie się nad tym. Przypomina mi to trochę głupawe zapytania na forach typu jaki monitor mam kupić? czy nowy, czy używany? czy jaki kupię w firmie X to dobrze robię i tego typu bzdury. Tak jak ja to bym był tą druga osobą i wiedział czego oczekuje :)

    Każdy kogo interesują uC, czy też samo programowanie niech w ogóle zacznie to robić, to z jakim środowiskiem zostanie na dłużej przyjdzie mu samo z czasem. Jak będę chciał, czy też zajdzie taka potrzeba, to program napisze w notatniku i go potem skompiluję z gcc w konsoli. Zabroni mi tego ktoś, czy ten program będzie w jakiś sposób działał gorzej?? Otóż nie, a takie hardcorowe podejście często sprawia, że zdobywamy większą wiedzę i doświadczenie.

    OdpowiedzUsuń
    Odpowiedzi
    1. Ten artykuł nie jest dla Ciebie choć argument dot. jednego IDE do wielu zastosowań jest oczywiście istotny. Osobiście na przykład używam Eclipse do PHP, MySQL, Javascript, itp.

      Jednakże: "Klej do wszystkiego jest do ...". Gdy początkujący zabiera się za pisanie programów dla konkretnych środowisk np. PIC, czy omawiany Atmel w szczególności właśnie początkujący (a dla nich jest przeznaczony ten artykuł) powinien korzystać z oryginalnych środowisk dostarczanych przez producentów, ze względów opisanych w niniejszym artykule i pewnie jeszcze wielu innych nie wymienionych.

      Najistotniejszym argumentem przemawiającym w tym przypadku za stosowaniem oryginalnego narzędzia Atmela jakim jest Atmel Studio jest posiadanie przez niego wbudowanego symulatora, który jest niezbędnym narzędziem dla każdego początkującego i nie tylko.

      Dlatego możesz oczywiście mieć swoje zdanie, ale pozwól, że my będziemy doradzać początkującym używanie przez nich narzędzi, które przyniosą im największy pożytek.

      Usuń
    2. Eh szkoda, że nie działa to pod Linuxem :/ Do tej pory używałem Eclipse z wtyczką AVR, wszystko pięknie i płynnie śmiga niestety sporo czasu trzeba poświęcić na konfigurację aby wszystko było ładnie zintegrowane i niestety, g-lo, pod Eclipse nigdy nie osiągniesz takiej funkcjonalności jak pod AS, chociażby możliwość symulacji programu. Jest niby SimulAvr ale w porównaniu do AS to jest tylko jakaś proteza. Tu wszystko praktycznie działa od strzała ale w moim przypadku strasznie to się zwiesza momentami (pewnie kwestią jest napis "powered by VisualStudio") aż czasem krew mnie zalewa :/ No niestety, nie jestem zwolennikiem Windowsa i winę zrzucam na ten system ;)

      Usuń
    3. Pod Linuksem można sobie poradzić odpalając wirtualną maszynę z Windowsem. Microsoft daje za darmo obrazy systemu, więc można sobie całkowicie legalnie i za darmo połączyć te systemy.

      Usuń
    4. Tak wiem ale chyba nie jest to lepsze rozwiązanie niż odpalenie tego po prostu bez wirtualnej maszyny. A że Microsoft daje obraz systemu za darmo to nie wiedziałem. Wystarczy podmontować obraz w wirtualnej maszynie bez specjalnej instalacji ? W jaki sposób można zdobyć taki obraz ? Chętnie to sprawdzę.

      Usuń
    5. Pierwsze słyszę, najpewniej na torrentach… albo z MSDNA. :)

      Chyba, że MS naprawdę daje jakieś obrazy ale w ramach posiadanej już licencji, ale to przecież nie za darmo bo trzeba mieć zakupioną licencję, a mając licencję równie dobrze można samemu przygotować taki obraz. :)

      Usuń
    6. https://dev.windows.com/en-us/microsoft-edge/tools/vms/linux/
      Znalazłem coś takiego ale jest notka, że obraz wygasa po 90 dniach. Posiadam w zasadzie legalną wersję i wystarczy zainstalować pod wirtualną maszyną, ale prościej byłoby ściągnąć gotowy obraz :)

      Usuń
    7. Po 90 dniach wygasa, ale przecież można sobie zrobić obraz systemu z potrzebnymi narzędziami i co 90 dni do niego wracać. Normalnie byłoby to uciążliwe, ale tu mamy tylko Windows + Atmel Studio i nic więcej.

      Usuń
    8. Fajnie wiedzieć ale… sposób wykorzystania tych obrazów jest sprzeczny z licencją, chyba czytaliście ją prawda? To, że obraz wygasa po 90 dniach jest dodatkowym zabezpieczeniem. W świetle licencji równie dobrze można ściągnąć darmową wersję z torrentów i przygotować sobie obraz jednocześnie cieszyć się brakiem upierdliwego ograniczenia.

      A jeśli ktoś posiada już licencję na system to warto zajrzeć do jej treści, z tego co wyczytałem w swojej mam prawo używać jej także na maszynie wirtualnej.

      Usuń
    9. A wg ciebie to konkretnie z którym postanowieniem licencji takie wykorzystanie jest niezgodne? Mówimy o wykorzystaniu niekomercyjnym do testowania właśnie.

      Usuń
    10. Chociażby ten punkt: „You may not use the software in a live operating environment.”. Ale nie będę się dalej kłócił, w naszym kraju to nie ma sensu, mamy bardzo solidnie zakorzenione przyzwyczajenia, specyficzny stosunek do praw autorskich i niezwykłą zdolność do interpretacji licencji i przepisów. :)

      Usuń
  38. Panowie gdzie się zmienia rozmiar czcionki w AVRSTUDIO6 , pottrafię zmienić kolorowanie zmiennych ale rozmiaru czcionki juz nie :(

    OdpowiedzUsuń
    Odpowiedzi
    1. Można w opcjach, a najprościej nacisnąć Ctrl i pokręcić rolką myszy - odpowiednio zwiększa/zmniesza rozmiar czcionki.

      Usuń
  39. Wszystko fajnie, na pewno Atmel Studio jest fajny ale jest małe "ale". Prawie wszystkie kursy są pisane pod Arduino IDE tzn programy używają
    void setup()
    void loop()
    Natomiast w AS piszę się wg stylu main(). Jak to pogodzić. Mi jako początkującemu spodobała się możliwość symulacji w AS czego w A_IDE nie ma. Generalnie AS jest taki bogatszy, bardziej profesjonalny. Następny minus AS jest że w spisie wśród płytek które można podłączyć pod AS nie ma Arduino UnoR3. Kto mi podpowie jak to wszystko pogodzić.
    Pozdrawiam
    ALek

    OdpowiedzUsuń
    Odpowiedzi
    1. Arduino używa C++ i zapewne pokrywasz metody klas. W AS możesz pisać w C lub c++, wszystko zależy od ciebie. Arduino Uno, podobnie jak inne, to tylko goły procesor, bez żadnej magii. Nic nie trzeba więc robić, poza wybraniem określonego typu procesora. Natomiast faktycznie nie będzie jej bezpośrednio programował (chociaż może), ale to ze względu na to, że Arduino nie zawiera na pokładzie kompatybilnego z AS programatora.

      Usuń
  40. Proszę o pomoc.
    Wiem że to jest na pewno bardzo proste ale nie mogę nigdzie znaleźć rozwiązania i w Google też nie znalazłem: gdzie w Atmel Studio znajduje się polecenie typu "wgraj" (załaduj) program do płytki. Na Arduino IDE wszystko mi chodzi, LED miga , na na AS nie mogę załadować programu. Program się buduje, kompiluje. Nawet najprostrzy program powienien działać taki jak ten:

    #include
    int main(void)
    {
    /* Replace with your application code */
    while (1)
    {
    }
    }
    Po uruchomieniu "start debuging..." F5 dostaje info "Cannot execute empty custom programing tool command..."

    OdpowiedzUsuń
    Odpowiedzi
    1. Znalazłem odpowiedź ale może komuś się przyda więc piszę tu. Wygląda że AS jest super fajnym programem ale tylko dla takich poważniejszych płytek dział zasada "podłącz i zapomnij" . Zwykłe Arduino Uno potrzebuje wsparcia, trzeba zmodywikofać nieco AS. Rozwiązanie znajduje się tu:

      http://www.instructables.com/id/How-to-Load-Programs-to-an-Arduino-UNO-From-Atmel-/

      Modyfikacja powoduje własnie pojawienie się w Menu dodatkowej opcji "załaduj program"

      Usuń