Ogłoszenie

Collapse
No announcement yet.

Mikrokontrolery AVR - jak się z nimi zaprzyjaźnić ?

Collapse
X
 
  • Filtr
  • Czas
  • Pokaż
Clear All
new posts

    #21
    Arduino opiera się na pseudo-C. Ale jeśli chcesz faktycznie nauczyć się obsługiwać się mikrokontrolerami, to polecam zostawić Arduino w spokoju i zabrać się za same AVRy. Tak, jak wcześniej pisano USBasp + Atmega + breadboard + parę kabelków, diod itd. Arduino ma wiele predefiniowanych funkcji, które nie nauczą Cię za dużo. A jeśli nauczysz się robić proste rzeczy (typu mruganie diodami na różne sposoby) bezpośrednio na rejestrach, to jesteś w stanie zrobić naprawdę dużo na AVR-ze. Poza tym lepiej poszukać jakieś kopii Arduino, bo to co otrzymujemy jest niewspółmierne do ceny.

    Co do środowisk - Eclipse jest całkiem fajny, po konfiguracji z USBasp można wszystko ogarnąć za jego pomocą. Aczkolwiek ta konfiguracja jest strasznie upierdliwa Od siebie polecam Code::Blocksa. Prosty i przyjemny interfejs, bardzo wygodnie mi się w nim pisze. Soft do programowania to AVRDUDE i większość programów z nim współpracuje (jak wymieniony w innym poście MkAvrCalculator, czy jakieś nakładki graficzne na AVRDUDE'a).

    Seria ST ( czyli ARMy produkowane przez STMicroelectronics) - jak każdy ARM, ma swoje dedykowane środowisko. W tym przypadku jest to Keil uVision. Na ARM-ach można zrobić już naprawdę dużo, szczególnie, że Coretexy M4 (STM32F4) są obecnie całkiem dobrym zamiennikiem podstawowych procesorów sygnałowych (audio wcale nie wymaga jakichś strasznie dużych operacji na sygnałach, więc wystarczą takie najprostsze, jak np. C2000 od Texas Instruments).

    A to, że AVRy mają tylko 8 bitów, to nie oznacza, że nie można na nich zrealizować niczego bardziej skomplikowanego niż miganie diodami, czy pomiar temperatury. W mojej inżynierce na AVR-ach postawiliśmy sieć czasu rzeczywistego, pracującą na 250kbps na RS-485 z aparaturą pomiarową i wykonawczą :P

    Edit:
    Szastal dobrze, że wspomniał o książkach. Wg mnie, jedną z lepszych jest "Język C dla mikrokontrolerów AVR" T. Francuza. Miałem okazję korzystać jeszcze z książki Dolińskiego, ale ona ma już swoje lata. Poza tym cennym źródłem informacji jest ta strona
    Last edited by Piter93; 17.03.2016, 17:36.

    Skomentuj


      #22
      Próbowałem się kiedyś bawić w Eclipse, ale wymiękłem właśnie podczas konfiguracji. Obecnie staram się przerzucić ze standardowego AVR studio 4.0 + nakładka Toolchain'a, na najnowsze Atmel Studio 7.0. Obecnie gdyby miałbym zaczynać naukę to właśnie na Atmel Studio. Ponieważ jest ciągle wspierane, ma mnóstwo usprawnień. Fajną rzeczą są dodatki do programu które można za darmo lub za opłatą pobrać. Można na przykład zainstalować taką nakładkę która ciągle sprawdza poprawność składni, lub kontroluje wykorzystane zmienne... dokładnie nie opisze ich działania bo nie miałem potrzeby korzystania. No i jeszcze raz podkreślę że Atmel Studio od wersji podajże 5.0 nie wspiera USBasp, za ~50zł kupimy programator AVR-ISP MKII który ma większe możliwości i posiada to wsparcie.


      Co do książek to mogę polecić "Język C dla mikrokontrolerów AVR: Od podstaw do zaawansowanych aplikacji", Tomasza Francuza. 700stron prawdziwej encyklopedii. Książka raczej dla osób mających już za sobą miganie LEDem, ponieważ bezpośrednio nie opisuje jak stworzyć pierwszy projekt. Na przykład konfiguracja portów IO jest dopiero na stronie 277, za to wcześniej szczegółowo opisane środowisko, bity konfiguracyjne, język C, EEPROM, alokacja pamięci flash, zarządzanie poborem energii. Dlatego osoby nowe w temacie mogłyby się przestraszyć ilością nowych informacji. Są to fajne tematy, ale nie dla osoby pragnącej szybko zaświecić LEDem ;p Ja zrobiłem tak że podstawy podłapałem z internetu, a później poszerzałem swoją wiedze książką.

      ---
      Nawet nie zauważyłem że Piter93 polecił tą książkę, gdy pisałem ten post
      Last edited by DiGiCo; 17.03.2016, 18:10.

      Skomentuj


        #23
        PS
        Na ebayu sa piekne male wyswietlacze OLED. Zeby cos postawic na takim wyswietlaczu to juz chyba potrzebna spora wiedza.

        heh
        Zanim cos wyswietle na wyswietlaczu np 2x16 to bede musial zjesc ze dwie piwnice ziemniakow...
        i-AMP ,i-PSU, i-SMPS, i-KTO TAM WIE CO JESZCZE
        https://www.facebook.com/IAMP-260036317687611/

        Skomentuj


          #24
          I tu jest zaleta AVR, do takiego 2x16 zgodnego z HD44780 znajdziesz od groma bibliotek w C, tylko podpiąć do programu i używać.

          Jeśli o środowisko chodzi, to WinAVR jest całkiem proste, konfiguracja sprowadza się do podania modelu MCU w pliku makefile i jeśli chciałoby się zintegrować to środowisko z programatorem, to podaje się jeszcze jego typ i port, chociaż teraz już nie jest tak często polecane, pewnie ze względu na Atmel Studio...

          Skomentuj


            #25
            Mówią, że arduino jest dla dzieci )

            Borys ja z twoją głową rzuciłbym się na głęboką wodę

            Na początek Pan Mirek i eclipse, później już samo popłynie

            http://mirekk36.blogspot.com/2015/07...ogram.html?m=1

            Skomentuj


              #26
              Bardzo łatwo wystartować z tego http://hobby.abxyz.bplaced.net/?pid=4&cid=1 .

              Skomentuj


                #27
                W adruino pisze sie normalnie w C. Tam jest po prostu przygotowana platforma z gotowymi funkcjami do robienia różnych rzezy i zwalnia to użytkownika ze znajomości działania tych rzeczy. Np chcesz zrobić pomiar przetwornikiem ADC to masz po prostu zrobione specjalne funkcje typu "uruchom przetwornik" , "podaj wynik pomiaru kanału x" itp. To jak to się dzieje i dlaczego działa to użytkownik nie ma pojęcia. Z jednej strony to jest dobre bo pozwala laikowi na szybkie napisanie programu korzystającego z dość rozbudowanych mechanizmów. Z drugiej robiąc w ten sposób nadal nie masz pojęcia dlaczego coś działa i jak to działa.

                Skomentuj


                  #28
                  Zamieszczone przez DiGiCo Zobacz posta
                  podkreślę że Atmel Studio od wersji podajże 5.0 nie wspiera USBasp
                  Nie wielkim wysiłkiem można go dodać do Atmel Studio.

                  Jak potrzebujesz zrobić prosty projekt to znacznie szybciej zrobisz to w arduino. Jeżeli nigdy nie programowałeś to wg. mnie łatwiej będzie ci zacząć w Arduino a potem zagłębiać się w czyste C.

                  Skomentuj


                    #29
                    Zamieszczone przez luki343 Zobacz posta
                    Jak potrzebujesz zrobić prosty projekt to znacznie szybciej zrobisz to w arduino. Jeżeli nigdy nie programowałeś to wg. mnie łatwiej będzie ci zacząć w Arduino a potem zagłębiać się w czyste C.
                    Oczywiście, że w Arduino robi się szybciej i łatwiej, co nie znaczy, że lepiej. Takie podejście dobre jest na poziomie gimnazjum/liceum, a nie, jak ktoś chce poznać samą istotę mikrokontrolerów. Czyste C jest bardzo proste, a przy okazji człowiek od razu uczy się struktury mikrokontrolerów, operacji na rejestrach itd. Poza tym znam przypadki, w których Arduino na tyle zakrzywia podejście do programowania uC, że trudniej jest wtedy opanować C. Często dużo łatwiej nauczyć czegoś od początku, niż wykorzenić stare, złe nawyki :P

                    Skomentuj


                      #30
                      Witam
                      borys
                      Ja proponuje kupić choć jedna Atmege procesorek nie jest drogi i popróbować na płytce stykowej na początek miganie diody LED ja osobiście preferuje język Bascom ale może tobie bardziej przypasuje C++ to musisz sam ocenić jaki język będzie bardziej przystępny i zrozumiały dla ciebie wszystkich podstaw uczylem sie z dwoch ksiazek
                      "Programowanie mikrokontrolerów AVR w języku Bascom" Marcin Wiązania
                      http://http://www.zstio-elektronika....bascom15_1.pdf
                      Last edited by kulamario; 13.04.2016, 23:47.

                      Skomentuj


                        #31
                        Dziekowac.
                        Kupilem sobie (nie krzyczec) plytke z arduino, bardzo prosto sie na tym robi ale to pewnie dlatego ze duzo rzeczy jest w gotowych poleceniach.
                        Narazie i tak dalem sobie na chwilke siana z avr'ami bo po prostu nie mam czasu. Za miesiac lub dwa temat zaczne znowu grzebac.
                        i-AMP ,i-PSU, i-SMPS, i-KTO TAM WIE CO JESZCZE
                        https://www.facebook.com/IAMP-260036317687611/

                        Skomentuj


                          #32
                          Zamieszczone przez kulamario Zobacz posta
                          ale może tobie bardziej przypasuje C++ to musisz sam ocenić jaki
                          Z C++ w AVRkach to może być mały problem :) Nie mylmy proszę języka C z C++, to nie jest to samo.
                          Asustor AS-5002T z MPD + konwerter USB .3lite + DAC PCM1704 by olog + autorskie PRE z PVC + Monobloki Ravlus Amplifilo + kolumny Tatami Audio Hudba

                          Skomentuj


                            #33
                            Czy można używać C++ w AVR?

                            http://www.atmel.com/webdoc/AVRLibcR...cplusplus.html

                            W skrócie można, ale są pewne ograniczenia. Trzeba być świadomym tego co się robi bo aplikacja wynikowa może np. zeżreć więcej pamięci niż ta napisana w C.
                            Przy prostych programach i możliwościach jakie daje tak prosty mikrokontroler, składnia C w zupełności wystarczy :)

                            Skomentuj


                              #34
                              Zamieszczone przez kulamario Zobacz posta
                              ja osobiście preferuje język Bascom ale może tobie bardziej przypasuje C++
                              Preferowanie Bascomu kończy się, kiedy chcesz złapać za coś innego niż AVR (chyba, że przerzucasz się na 8051). Programowanie w C ma tę zaletę, że oprogramujesz tym o wiele więcej uC: AVR32, PIC, ARM.

                              Język C++ jest rzadziej stosowany w uC, ze względu na większą ilość RAMu, którą potrzebuje. Poza tym programowanie obiektowe nie jest jakieś szczególnie przydatne, mikrokontrolery w większości programuje się proceduralnie. Jeszcze 32-bitowce w C++ są jakimś rozwiązaniem, ale AVRów nie polecałbym programować w C++.

                              Skomentuj


                                #35
                                Zamieszczone przez Piter93 Zobacz posta
                                Język C++ jest rzadziej stosowany w uC, ze względu na większą ilość RAMu, którą potrzebuje.
                                C++ z automatu nie wymaga więcej RAM'u, wszystko zależy od programisty.

                                Zamieszczone przez Piter93 Zobacz posta
                                Poza tym programowanie obiektowe nie jest jakieś szczególnie przydatne, mikrokontrolery w większości programuje się proceduralnie. Jeszcze 32-bitowce w C++ są jakimś rozwiązaniem, ale AVRów nie polecałbym programować w C++.
                                Przydatne jest przy projektowaniu GUI. Mam gdzieś graficzne GUI dla ATMega32/644 napisane w czystym C z użyciem pomysłu vtable jak w C++. Gdzie tu logika? Nie ma, mogłem zrobić to w C++, ale chciałem sam coś takiego stworzyć.

                                Zresztą, obiekt w C++ z automatu w pamięci nie zajmuje nic (! Pomijając pola własne.) jeśli nie ma wirtualnych metod i polimorfizmu. Jak są, to jeszcze dochodzi vtable i całość zwiększa się o może kilkanaście bajtów (zależnie od ilości wirtualnych metod), które zajmowane są przez vtable.
                                Last edited by .3lite; 14.04.2016, 14:58.

                                Skomentuj


                                  #36
                                  Od siebie mogę tylko dodać, że wszystko co nauczyłem się o mikrokontrolerach (żeby nie było, wciąż jestem raczkujący), to podczas uruchamiania kolejnych projektów. Chcę przez to powiedzieć, że pisanie programów na zestaw uruchomieniowy moim zdaniem mija się z celem, bo to nie jest "rzeczywisty" układ. Trzeba mieć konkretny hardware i konkretne problemy do rozwiązania, aby iść z tematem do przodu.

                                  Skomentuj

                                  Czaruję...
                                  X