Ads_700x200

tme

poniedziałek, 2 maja 2011

Wybór języka programowania

Tak na prawdę dostępne są 3 języki programowania dla mikrokontrolerów AVR. Pierwszy i podstawowy to oczywiście asembler. Każdy procesor posiada tego typu język. Jest to język najniższego poziomu a co za tym idzie dosyć ciężki do opanowania dla początkujących ale także trudno w nim pisać duże aplikacje. Przy czym trudność ta nie wynika już z racji jego skomplikowania ile z powodu długotrwałego i żmudnego procesu testowania aplikacji przed całkowitym jej ukończeniem. Rzadko kto w dzisiejszych czasach korzysta z czystego asemblera do pisania większych programów. Nie oznacza to jednak, że należy o nim zapomnieć. Wręcz przeciwnie bywa on bardzo przydatny ale głównie do pisania tzw wstawek w językach wyższego rzędu. Skoro już mowa o językach wyższego rzędu to wspomnę tylko, że istnieje przeznaczony specjalnie dla mikorkontrolerów AVR język Bascom. Przypomina on w pewnym sensie języki typu Basic z jakimi być może miałeś nieraz do czynienia na komputerach PC. Jeśli jednak zamierzasz się uczyć od początku programowania mikrokontrolerów to postaraj się, przynajmniej na razie, zapomnieć także o tym języku.

Dlaczego język C ?



C - to jest to czego szukasz ;) Posiada on wręcz olbrzymie możliwości a jedynym ograniczeniem będzie tu twoja wyobraźnia. Niestety narosło wiele mitów, które krążą do dzisiaj i pokutują w internecie, jakoby był to trudny język i przeznaczony tylko dla specjalistów.  NIEPRAWDA!

Dzięki książce wydawnictwa ATNEL, o której mowa na stronie:

www.atnel.pl/wydawnictwo

pt. "Mikrokontrolery AVR Język C Podstawy programowania", każdy może się przekonać, że język C jest nawet łatwiejszy do nauki niż BASCOM, tylko że musi być podany w odpowiedni sposób. Dlatego też gorąco polecam tę publikację nie tylko początkującym.

40 komentarzy:

  1. Tak C to sama esencja programowania, ale i tak wole Lispa i Pythona :)

    OdpowiedzUsuń
  2. Lispa w ogóle nie widziałem, o Pythonie troszkę przynajmniej poczytałem i to przez ciebie ;) .... bardzo fajny języczek ... no ale nie dla procków zdaje się?

    OdpowiedzUsuń
  3. O ile C++ dobrze podany jest nawet smaczny to po spróbowaniu GCC dla AVR bardzo szybko dostałem mdłości. Sposób ustawiania portów , pinów i rejestrów powoduje u mnie odruch wymiotny i przez to odstręcza nie pozwalając poznać innych wartościowych cech GCC. I to ma być język wysokiego poziomu? Podejrzewam twórcę o sadyzm. Czy nie będąc spolegliwym masochistą mam szansę opanować w stopniu przynajmniej podstawowym GCC? Kto mnie w końcu przekona, że jest to możliwe?
    Zwątpiony

    OdpowiedzUsuń
  4. Nikt cię na siłę nie przekona. I przyznam szczerze, że aż przykro czyta się taki wpis - bo piszesz, że podejrzewasz twórcę języka C o sadyzm, wykazując się niestety totalną (przepraszam że to mówię) ignorancją - wypadałoby bowiem nawet domyśleć się, że język C++ wywodzi się wprost z języka C panie kochany ;) .... zatem jeśli masz coś wspólnego z C++ to nadal działasz na języku sadystów - mówiąc twoim żargonem...

    No a druga sprawa to to, że w ogóle nie rozumiesz co to znaczy programowanie mikrokontrolerów bo obojętnie czy programować je miałbyś w C czy w C++ (co też jest możliwe) to nigdy w życiu nie obędzie się bez twoich znienawidzonych pinów, portów i rejestrów ....

    Przy takim podejściu to ja się zastanawiam co cię w ogóle skłoniło do zajrzenia czy przyjrzenia się mikrokontrolerom ???? To nie ważne nawet czy chodzi o rodzinę ARV, czy PIC czy też ARM.

    Jeśli chcesz się oderwać od rzeczywistości programowania na PC i zagłębić w tę pasjonującą przygodę programowania mikrokontrolerów to zapraszam.... Poznając C, w zasadzie szybko będziesz mógł przejść na C++ dla tychże mikrokontrolerów ....

    Piszę, że poznając C dlatego że akurat książkia "Mikrokontrolery AVR Język C Podstawy programowania" o której mowa na:

    www.atnel.pl/wydawnictwo

    bardzo dobrze przedstawia i wprowadza bardzo łagodnie w świat tych na razie odrażających dla ciebie pinów, portów i rejestrów. Może warto spróbować ? .... zobacz co ludzie piszą na tej stronie na temat tej książki

    OdpowiedzUsuń
    Odpowiedzi
    1. No tak, pierwszy odruch gonić lamera bo odważył się bałaknąć na wspaniały C. Każdy kiedyś zaczynał i kto nie miewa wątpliwości znaczy, że nie myśli samodzielnie. Czy nie jest co najmniej złośliwością wycofanie, bez pozostawienia altrnatywy, oczywistych funkcji sbi() oraz cbi() i skrywanie, że taki zapis jak 0b10101010 gdzie stan portu jest widoczny jak na dłoni działa poprawnie? Spójrz proszę na str 122 swojej książki (wyd. I) Mnie ten zapis na górze absolutnie frustruje. Nie rozumiem dlaczego musi to być takie pokrętne zamiast być proste i oczywiste? Ja nie mam złego stosunku do GCC ale przynajmniej chciałbym wiedzieć dlaczego muszę przełknąć taką gorzką, ciężkostrawną pigułę. Zamiast mi odpisywać, zastanów się dlaczego jeden gościu ma takie "dziwne" wątpliwości i co z tym zrobić dla reszty tych, którzy nie mieli odwagi wychylić się.

      Usuń
    2. Jeśli poczułeś się urażony moją wypowiedzią to przepraszam, ale nie to było moim celem albo traktowanie cię jak hmmmm (chociaż to dla mnie niezbyt znane określenie) "lamera".

      Piszesz jednak o wycofanych funkcjach sbi() czy cbi() a teraz opisuję w książce jak stosować w to miejsce przesunięcia bitowe. Czyli wcześniej żeby zapalić np diodę LED stanem wysokim mógłbyś napisać tak:

      sbi(PORTD,PD2);

      a teraz trzeba niby pisać tak:

      PORTD |= (1<<PD2); oraz z wykorzystaniem dwuczłonowych operatorów - to jest czysty C a nie asembler.

      Wiesz co? ty się nie wychylasz jako jedyny, ty wpadłeś tu jak bomba żeby dowalić i jeszcze zbesztać jak widać znienawidzony przez ciebie chyba język AVR GCC. I nic mnie to nie obchodzi - powiem wprost i szczerze, że klepiesz takie bzdury o wspaniałym C albo że ktoś się odważył bąknąć coś.....

      Normalnie ludzie piszą maile, dopytują o coś na forach czego nie do końca mogą zrozumieć, a najciekawsze jest to, że opisana (ale uwaga!!!! nie wymyślona) przeze mnie metoda posługiwania się przesunięciami bitowymi po tym, gdy już ktoś zaskoczy wydaje się być bardzo przejrzysta i dużo lepiej się nią posługiwać niż twoimi sbi() czy cbi() nie wspominając już o ustawianiu rejestrów np w ten karygodny sposób:

      TCCR0 = 0b01100101;

      co jest oczywistą bzdurą i koniec!

      jeśli nie chcesz się pan nauczyć? jeśli nie pasuje ci moja książka to sięgnij po inną - przecież są na rynku dostępne inne książki do języka C i jest ich wiele. Może ja nie potrafię cię przekonać - a może tobie nie chce się przeczytać całości po kolei tylko jak to już się kilkakrotnie spotkałem czytasz na wyrywki uznając, za ważne tylko te rozdziały, które sam uznasz - a tymczasem masz np braki w podstawach..... Wtedy nie dziwne, że trudno zrozumieć ale też się przyzwyczaić do składni i zapisów języka C w tym zakresie.

      Ja sam jak wiele razy powtarzam różnym ludziom, zaczynałem aż 7 razy naukę C !!!!!! i dopiero za 8 razem zaskoczyłem i dopiero wtedy spodobał mi się ten język. Więc nie jestem alfą i omegą, która potrafi nauczyć się czegoś po pierwszym przeczytaniu. Jak widać czytałem i to wielokrotnie wiele opracowań a potem rzucałem to w kąt.... i tak 7 razy przypominam... Być może ty jesteś na etapie 4-5 razu ????

      U to bym zrozumiał - ale zawsze można o tym kulturalnie porozmawiać a nie wpadać z butami na czyjś blog i wypisywać o lamerach, o bąknięciach, o wychyleniach, o sadystach, i Bóg wie czym jeszcze.

      Jesteś zły? nie podoba ci się moja książka? nie podoba ci się język C, uważasz, że jego składnia to głupota ?

      ...... to proszę idź płakać w inny kąt internetu i nie przeszkadzaj tutaj - dobrze ?

      Ale jeśli chcesz o coś zapytać? czegoś nie rozumiesz? masz wątpliwości, chciałbyś porozmawiać o wadach książki - to nie pisz tu jako anonimowy - tylko zapraszam cię do napisania do mnie maila albo nawet (co często praktykuję z czytelnikami i nie tylko) zapraszam cię serdecznie (uwierz mi) na rozmowę OnLine np przez SKYPE - tylko weź słuchawki i mikrofon. Ja nie unikam takich kontaktów, a jak ktoś ma do mnie uwagi i chce porozmawiać to zawsze chętnie posłucham. Każda uwaga czytelnika jest dla mnie bardzo cenna ..... ale jak mówię nie w takiej postaci w jakiej ty dotychczas próbujesz to uskuteczniać.

      Reasumując - jeszcze raz - zapraszam do prawdziwej dyskusji, rozmowy albo pytań - zawsze chętnie pomogę.

      Usuń
    3. Bardzo przepraszam, nie miałem intencji choćby w najmniejszym stopniu nikogo obrażać. Taki pstryczek w nos dobrze mi zrobił. Jako, że wątek ten należy do opłakanych, proszę o usunięcie go.
      Może rzeczywiście pozostał mi jedynie FlowCode. Pozdrawiam i jeszcze raz przepraszam.

      Usuń
    4. A ja przekornie powiem (bo sam się męczyłem z podejmowaniem prób nauki C aż przez chyba 7 miesięcy!), że nie wierzę, że został ci jedynie FlowCode ;) ... że też dasz radę zaskoczyć tak jak ja i co więcej - gdy tylko to nastąpi to spodoba ci się to. I w razie czego jak wspominałem możesz liczyć na pomoc z mojej strony w przypadku rozmaitych pytań jakie ci się nasuną w trakcie być może ponownego czytania książki i przeprowadzania ćwiczeń - do czego gorąco zachęcam.

      A wyjaśnię w dwóch słowach skąd się to wzięło, że tak ciężko było mi nauczyć się C i "zaskoczyć" na właściwe tory. Ano dlatego, że od 20 lat programuję na PC ale w Pascal/Delphi .... i zawsze kiedyś - dla mnie składnia języka C to były jakieś "ptaszki/krzaczki" ..... a teraz ? ... a teraz to staram się i zaczynam już i na PC pomimo lat, pomimo starych nawyków i przyzwyczajeń - przechodzić na PC'cie na jakieś języki C-podobne np. C++, C# czy Java - i teraz dzięki temu że zacząłem od C dla mikrokontrolerów nagle nauka tych języków staje się o wiele wiele łatwiejsza niż kiedyś.

      Usuń
  5. Dla mikroprocesorów AVR jest również stosowany język Pascal:
    Embeeded Pascal AVR,
    Pascal AVRCo ( http://www.e-lab.de/AVRco/index_en.html )
    Niedawno kupiłem zestaw ATB rev: 1.3. Jestem ciekaw czy będzie można ten zestaw zaprogramować w języku Pascal AVRCo. Sprawdzę, a o wynikach testowania poinformuję na forum. Wydaje mi się, że programowanie w Pascalu będzie prostsze niż stosując język C.

    Przy okazji mam pytanie do czytelników: Czy ktoś ma dokumentacje oraz oprogramowanie polskiego komputera ODRA-1204. Mam zamiar zrealizować w pełni kompatybilny emulator tego komputera na procesorach ATMELa AVR.

    OdpowiedzUsuń
    Odpowiedzi
    1. Przede wszystkim chciałbym zwrócić uwagę na to, ile kosztuje pełna - nawet najtańsza wersja tego kompilatora - bagatela ok 2,5 tysiąca PLN !!! Nie będę już wymieniał droższych ;)

      Przyznaję, że znam to rozwiązanie z czasów poszukiwania języka wyższego poziomu programowania, gdy okazało się, że asembler jest mało wydajny do dużych aplikacji a Bascom w ogóle mało wydajny i ciasny. A ja jako stary Delfiarz z PC - umiałem myśleć tylko przez pryzmat Pascala ;) .... Wtedy też gdy zobaczyłem to rozwiązanie to na początku jak to mówi pewne dziwne przysłowie "lizałem ten temat jak pies chudy boczek" ;) .... ale do czasu .... do czasu gdy okazało się, że trzeba i tak uczyć się tego czegoś od nowa - bo aspekt mikrokontrolerów znacznie zmienia tego Pascala ;) .... a szybko się okaże, że wersja FREE będzie za ciasna no i zakup pełnej wersji będzie tragicznie mało opłacalny żeby doświadczyć czy może on więcej.

      Dlatego to był czas gdy rzucałem z wkurzeniem tą naukę C ... no bo jak człowiek - stary Pascalowiec mógł się patrzeć na takie herezje:

      for(i=0,k=*ptr;i<(*wsk*PTL);i++,k+=**ptr*PTL) {}

      toż to była zgroza i rzeczywiście wyglądało to jak madejowe łoże dla masochistów ;) ....

      na szczęście do czasu .... do czasu gdy jak to nazywam za ósmym razem:

      ZASKOCZYŁEM w tym C

      no i się zaczeło. Wtedy szybko okazało się, że to niestety Pascal ma olbrzymie ograniczenia w stosunku do C. A po nauczeniu się wskaźników i operatorów dwuczłonowych oraz przesunięć bitowych to wyżej przedstawione madejowe łoże ( ta linia programu ) stała się mięciutkim wygodnym łóżeczkiem, wyłożonym ciepłą i przyjemną pierzynką ;) ....

      ... tak tak panowie .... i mnie nikt już nie przekona że programowanie w języku Pascal będzie prostsze niż w języku C ;) ....

      a czy was ktoś przekona ? .... no zobaczymy, ale życzę każdemu żeby ZAKOCZYŁ ;) tak jak ja po wielu próbach - bo teraz pisząc w C życie stało się piękne.

      A dla przykładu prostego powiem, że brak czegoś tak wydawaćby się mogło głupiego jak słówko static dla zmiennych lokalnych wewnątrz funkcji - którego nie ma w Pascalu - daje tak dużo - że już choćby dlatego warto przejść z Pascala na C. I wiem co mówię - tu mi nikt nie zarzuci nieprawdy - bo w tym całym Pascalu katowałem się aż 20 lat i teraz żałuję że tak długo. No ale lepiej późno niż wcale ...

      Na obronę tego wspomnianego środowiska z Pascalem dodam tylko to, że tam panowie potomkowie krzyżaków, wymyślili sporo fajnych narzędzi, że nie wspomnę o gotowych impplementacjach w tymże avrowskim pascalu dla obsługi różnych zaawansowanych komunikacji po najróżniejszych magistralach i co ważne standardach przemysłowych. Dobra niemiecka solidna robota - to trzeba przyznać. Tyle, że za pełne możliwości skorzystania z całości - też trzeba zapłacić porządną solidną niemiecką cenę ;) która powala z nóg i nie będę o niej wspominał bo sam mógłbym zemdleć ....

      druga sprawa, że takie gotowe biblioteki na wszystko to już przypominają bardziej troszkę Bascoma

      tymczasem na każdego kto chce czeka piękny i darmowy AVR GCC - i zapraszam wszystkich do zatopienia się w nim po uszy tak jak ja ;)

      Usuń
  6. Książka ciekawa trochę zaczołem w c++ ale teraz przerzucę się na c ,ponieważ z tego co widzę(książka) jest to bardzo uniwersalny język programowania i przydatny w dalszym rozwoju w kierunku elektrotechniki.


    pozdrawiam P.ch

    OdpowiedzUsuń
    Odpowiedzi
    1. Jakby nie patrzeć to język C jest protoplastą języka C++ ;) więc ucząc się C tak na prawdę uczysz się czy chcesz czy nie chcesz podstaw C++ - no może jeszcze bez obiektówki, klas itp .... ale to pierwszy krok.

      Usuń
    2. Na co dzień pracuję z PHP oraz JS i dlatego w C bardzo brakuje mi obiektowości. Dla tych którym to przeszkadza, jest możliwość pisania kodu pod uC w C++ ( http://forum.atnel.pl/topic3509.html ). Sam mimo wszystko zostanę przy C, chociażby ze względu na szerokie wsparcie na internetach.

      Swoją naukę także zaczynałem od C++ i uważam że jest to idealny język do rozpoczęcia przygody z programowaniem. Później skakałem po różnych środowiskach, oczywiście delfiny i pytony też zapoznałem. Ale ostatecznie wróciłem do języków z rodziny C i na nich już zostanę ;)

      Usuń
  7. Świetna książka, ja bardzo długo programowałem w BASCOMIE. Więc trochę trudno mi się przestawić.

    Zaskoczyło mnie to ,że np. nie daje się w C pustych pętli

    DO
    LOOP

    ,jak w Bascomie.

    Często się zapominam i niestety "złe nawyki" utrudniają przesiadkę.
    Dlatego jeśli ktoś zaczyna to niech od razu weźmie się za C.

    Wyszło nowe AVR Studio 6 ,podobno poprawili kompilator po porażce z 5 ,próbował ktoś???

    OdpowiedzUsuń
    Odpowiedzi
    1. Wiesz, ja np podchodziłem aż 8 razy !!! do nauki języka C dla AVR ;) więc spokojnie. Dasz radę i masz rację że warto go się jak najszybciej nauczyć.

      Ale jeśli chodzi o AVR Studio 6 to niestety jeśli chodzi o edytor - wyszedł im dokładnie ten sam GNIOT :( tzn główna różnica to taka że dodano obsługę ARM a jeśli chodzi o to co było dla AVR - zostało nie ruszone.

      Dlatego jak masz książkę to weź płytę DVD, obejrzyj lekcje VIDEO i jak najszybciej przejdź na ECLIPSE - poważnie - dobra rada

      przy okazji przeczytaj to:

      http://mirekk36.blogspot.com/2011/11/dlaczego-eclipse-zamiast-avr-studio.html

      Usuń
  8. Moja historia wyglądała tak ,że zaczynałem od Bascoma.
    Potem chciałem spróbować C ,porażka jedna po drugiej :)
    Po jakimś czasie zostałem zmuszony do tworzenia aplikacji w Windowsie.
    Wybrałem Visual Studio i C++.
    Co ciekawe ,gdy opanowałem w miarę C++ ,zacząłem bez problemu rozumieć programy napisane w C pod AVR.

    Dlaczego więc nie udało się za pierwszym razem z przesiadką Bascom -> C.
    Wynika to raczej z lenistwa i przyzwyczajeń. Po co myśleć nad programem w C tygodniami ,skoro mogę go napisać
    w Bascomie w kilka dni lub godzin. :)

    Czy piszę już tylko w C? ,NIE proste programy nadal robię w Bascomie ,a jeśli już muszę to piszę w C (ale tylko to czego "nie da się osiągnąć"
    w Bascomie)

    Podsumowując ,najlepiej pisać w programie ,który się najlepiej zna i lubi.

    Postawcie się w sytuacji ,że jesteście w Anglii i robicie zakupy w markecie ,podchodzicie do kasy ze słownikiem ,produkujecie się,
    a po przysłowiowym ku.... ,okazuje się że kasjerka to też Polka :) ,jaki język wybierzecie??? ;) ,pozdrawiam.

    OdpowiedzUsuń
    Odpowiedzi
    1. Powiem tak na tą wypowiedź:

      nic dodać nic ująć ;) bardzo pięknie kolega to opisał. Ja też zawsze powtarzam, że nie można mieć klapek na oczach i dobierać narzędzia w zależności od potrzeb. Bo w takim zdaniu też można zamknąć tą myśl....

      Zatem fakt iż gorąco namawiam do nauki języka C wcale nie oznacza, że będę tak jak to robi wielu "klapkowiczów" np na elektrodzie, pisał że Bascom jest do ...... a ci którzy go używają to wariaci. Bo to raczej świadczy źle tylko o samych "klapkowiczach" ;)

      Usuń
  9. Witam .

    Wiele lat pisałem programy w Delphi i wiele razy bezskutecznie próbowałem się przesiąść na C ( proste aplikacje od biedy wypocę ), zainteresował mnie ostatnio temat mikrokontrolerów i tym razem po raz kolejny spróbuję w C . Mam odnośnie tego takie oto pytanie , czy w drugiej części Pańskiej książki na dołączonej płytce jest Eclipse i wszystkie potrzebne narzędzia oraz czy wystarczy mi zakupić tylko drugą część czy raczej niezbędne są obie .

    Dziękuję z góry za odpowiedź i pozdrawiam .

    OdpowiedzUsuń
    Odpowiedzi
    1. Kurczę jak ja dobrze Pana rozumiem, sam przecież od 20 lat śmigam swoje aplikacje na PC w Delphi/Pascal. A wiadomo jak dla pascalowca ciężko się przesiąść na C/C++

      Zawsze przypominam wszystkim, że do C dla procków podchodziłem aż 8 razy! ;) Przez to skażenie Pascalem ;)

      Zanim zaskoczyłem C to oczywiście dla AVR'ów nauczyłem się je programować i w asemblerze (ale za długo się tworzy projekty większe w asm), później nauczyłem się Bascoma - szybko poszło ale trzeba było go szprycować znowu asemblerem żeby więcej z niego wyciągnąć)

      Teraz coraz częściej zaczyna mi brakować technik z C gdy piszę na PC w pascalu, oj brakuje ... więc po drodze próbuję powoli przechodzić właśnie na C++ przy PC'tach
      -------------------

      Jeśli Pan całkowicie rozpoczyna to zdecydowanie polecam zacząć jednak od pierwszej książki - naprawdę :( .... druga może być ciężkostrawna....

      Trzeba zacząć od pierwszej i na spokojnie czytać ją - ale TO WAŻNE - po kolei nie na wyrywki, bo w dosyć specyficzny sposób przekazuję wiedzę i niejedna osoba już się o tym przekonała.

      Jeśli chodzi o Eclipse to zarówno w pierwszej książce na DVD jak i w drugiej są gotowe wersje Eclipse aczkolwiek w drugiej nieco nowsze. Ale spokojnie - tu na blogu nawet dałem poradnik jak sobie z tym samemu poradzić - proszę zajrzeć:

      http://mirekk36.blogspot.com/2012/04/eclipse-instalacja-avr-plugin.html

      tylko proszę sobie pobrać wersję ECLIPSE INDIGO for C/C++ developers z tego linku (ja w filmie nieco inną niepotrzebnie wersję ściągam) ok?

      poza tym proszę mnie śmiało w razie czego łapać albo na maila albo na Skype (nick: mirekk36) zawsze chętnie pomogę jak pascalowiec pascalowcowi ;)

      Usuń
    2. Serdecznie dziękuję za błyskawiczną odpowiedź . Już zamówiłem obie części książki oraz kilka garści elementów i ATmega32 ( nie abym żałował parę złoty na gotowy zestaw uruchomieniowy , ale satysfakcja z własnego działającego - bezcenna ). Znajomi moi twierdzą , że mam wrodzony talent do zadawania "uciążliwych" pytań a skoro podał Pan skypa to nie omieszkam skorzystać z tej formy pomocy , tyle tylko , że jak na razie to nie wiem o co pytać ( najpierw przeczytam książki ) , póki co zarejestrowałem się na forum i na pierwszy rzut oka widzę parę ciekawych tematów . Nie zaśmiecając niepotrzebnie Pańskiego bloga jeszcze raz dziękuję i pozdrawiam .

      Pawel

      Usuń
    3. Zestaw uruchomieniowy na szczęście wcale nie jest wymogiem do przeprowadzania ćwiczeń z książek, więc spokojnie. Ułatwia nieco życie i prototypowanie, ale jak przypominam też co chwilę w pierwszej książce można się spokojnie z nią uczyć mając nawet niewielkiego procka na płytce stykowej. Dziękuję za zakup książek i w razie pytań, tak jak wspominałem wyżej jestem do dyspozycji ;)

      Usuń
  10. Hm. Ja powiem tam. Wybaczcie Państwo za lekką ignorancje ale Przeczytałem post pana Anonimowego i szczerze mówiąc pierwsze dwa zdania Pana mirka. Niestety bardzo śpieszę się do pracy, jak wróce to napewno doczytam reszte a teraz mogę się powtórzyć. Panie Anonimowy, język C++ dla AVR? hm, ciekawe, bardziej bym zrozumiał jak by pan pisał język C++ dla ARM, to już bardziej. C dla AVR jest identyczny jak dla Linuxa czy windows czy dos. Różnice których Pan nie widzi to przypuszczam podstawy czyli to, że składnia zawsze jest taka sama a różnica polega w bibliotekach, jak Pan to zrozumie to polecam wtedy udzielać się na forum. Mówi Pan w następnym poście że pisze pow windows w Visualu, mam wrażenie, że korzysta Pan tylko z designerów i "Rysuje" programy i w Pana przypadku designer nie służy do zaprojektowania początkowego ale taka aplikacja jest efektem końcowym. Przykre, że ludzie którzy nie bardzo się chcą zagłębiać w temat programowania, tylko walą wszystko po najniższej linii oporu bawią się w programowanie, i nie ważne czy na PC czy procków. W moim przypadku nie bardzo mam czas bawić się w programowanie a płytka(zresztą atnela) leży już prawie miesiąc nietknięta ale moja praca w żaden sposób nie jest związana z elektroniką czy informatyką. Swojego czasu prowadziłem pewien rodzaj kółka informatycznego dla studentów z programowania w C i C++, dla studentów którzy albo musieli zaliczyć rok albo naprawde chcieli się w to zagłębiać, napewno takich kółek jest więcej w polsce, zapraszam na Polibude wrocławską, ktoś może prowadzi teraz takie spotkania. Naprawde jest to dla osób które poprostu nie "widzą" jak ugryźć działanie programu lub jak napisać prawidłowy kod czy to na avr czy na pc. Przepraszam za błędy składniowe i ortograficzne ale dla mnie godzina dwunasta to ranek i kawa jeszcze nie zaczęłą działać lecz jak przeczytałem Pana Anonimowy z 14 lutego 2012 20:55 to aż mi się oczy otworzyły.
    Piotr

    OdpowiedzUsuń
  11. Ja "liznąłem" kiedyś trochę Javy i podstawy C szybko ogarnąłem.
    Składnia C może nie należy do najprostszych ale jak się załapie to jest ona jak przysłowiowa "bułka z masłem". Miałem okazje zobaczyć ten sam kod (to samo "robił") napisany w kilku językach i w C był najkrótszy. C jest spoko!

    OdpowiedzUsuń
  12. A ja mam taka mała radę dla tych którzy zniechęcają sie "surowym eclipsowym" C/C++

    ja sam po programowaniu arduino(lizniete podstawy) jak zobaczyłem te deklaracje i odwołanie sie do portów w eclipse i ogólna budowa to troszkę sie wystraszyłem :/

    W arduino moim zdaniem jest to o wiele czytelniejsze i co jest fajne ze nie trzeba z tego środowiska odchodzić nie mowię ze te rozwiazanie czy inne jest lepsze bo nie wiem do końca jak arduino ma wsparcie bibliotek a wiem ze w czystym C/C++ można wszystko napisać na każdą platformę... Nie mniej jednak muszę przyznać ze odpadając IDĘ arduino jest mniej ustawień (nie licząc szukania i wygrywania bibliotek np do LCD, zegara itp) i pisanie jest o wiele przyjemniejsze i czytelniejsze dla początkujących C/C++.

    Sam kiedyś zaczynałem od pascala potem delphi i przyznam ze przesiadka na arduino nie sprawiła mi większych kłopotów gdzie na eclipse musiałby nauczyć sie podstaw i składni jak szkieletu programu. Przykład migajacej diody na arduino a w eclipse :) wiem ten co już jest obeznany w eclipse poradzi sobie i w arduino gorzej jest odwrotnie :) dla tych co sie szybko zniechęcają polecam zacząć od środowiska arduino

    Pozdrawiam

    OdpowiedzUsuń
  13. Minęło już ponad 1,5 roku mojej nauki w C ,wcześniej byłem twardym obrońcą Bascoma,
    więc pomyślałem że napiszę o swoich spostrzeżeniach. Na początku było bardzo ,bardzo trudno.

    Ale teraz jak ostatnio zajrzałem do swoich "Bascomowych" programów ,chciałem nawet poprawić w jednym co nieco
    ,bo nie chciało mi się przerabiać na C i tu wydarzyło się coś dziwnego.

    Nagle poczułem jakby ktoś założył mi kajdany i nasypał piach do kieszeni. Z ledwością się poruszałem ( a wcześniej ,programowałem w nim ponad 5 lat)
    ,teraz nagle brakowało mi moich funkcji ,plików nagłówkowych, bibliotek ,nie mówiąc już o obsłudze UART ,gdzie Bascom sprowadza się głównie do instrukcji
    PRINT.
    W pewnym momencie zacząłem nawet robić to co większość w próbuje w C (bascomując go) ,u mnie było odwrotnie próbowałem włożyć nutkę C do Bascoma.
    Niestety nie rozumie on przesunięć bitowych ,więc jedynie szesnastkowo udało mi się ustawiać rejestry, nawet udało się odpalić tryb CTC ,ale nie opcją config Timer ,bo
    tego nie obsługuje ,ale za pomocą ustawienia rejestru przez wpisanie wartości szesnastkowej ,był niestety problem niewielki z porównywaniem zawartości. Jakby zamulało.
    Szybko dałem sobie spokój ,nie piszę o tym bo zmieniły mi się nagle poglądy i teraz jestem obrońcą C ,tylko po to by Ci którzy zaczynają zrozumieli, że
    korzyści z C nie widzi się na początku ,wychodzą dopiero z czasem. A największym skarbem są biblioteki i własne funkcje. Niestety to też musi
    przyjść z czasem ,to jest to co odstrasza. Mnie odstraszało.


    W Bascomie można łatwo nauczyć się chodzić ,za to w C można sobie polatać... :)

    OdpowiedzUsuń
    Odpowiedzi
    1. Ślicznie napisane ;) ... i faktycznie dobrze, że pojawił się TAKI opis .... być może to da coś do myślenia - tym, którzy jeszcze się ociągają aby zacząć przygodę z LATANIEM w C ;)

      Usuń
  14. Bardzo dobra charakterystyka i pokazanie w którym kierunku powinno się iść

    OdpowiedzUsuń
  15. Panie Mirku każdy program czyli: Eclipse,CodeBlocks i Atmel Studio ucina mi plik hex program po skompilowaniu u kolegi działa prawidłowo, po wgraniu jego plików też wszystko jest ok. Czy ma Pan jakiś pomysł jak to rozwiązać?

    OdpowiedzUsuń
    Odpowiedzi
    1. Pewnie, że mam - od zawsze, tylko ty nie opowiadaj tu o swoim koledze czy o jakimś ucinaniu pliku hex. Zamiast tego weź się w garść obejrzyj ten poradnik:

      http://mirekk36.blogspot.com/2014/11/avr-jak-zaczac-z-eclipse-luna.html

      i wszystko będzie działać

      Usuń
    2. Panie Mirku kochany śmiga jak marzenie.Dziękuję i pozdrawiam.

      Usuń
  16. język C dla mikrokontrolera np Atmegi8 - gdzie na blogu są jakieś podstawy o nim dla AVR ?
    w BB - to dla zawodowców więc proszę o wskazówkę zanim przejdę do świata UART itd ??

    OdpowiedzUsuń
    Odpowiedzi
    1. Bluebook nie jest dla zawodowców tylko dla tych, którzy chcą zacząć swoją przygodę z programowaniem od podstaw - a poradniki na blogu i wideo są uzupełnieniem do moich książek, więc spokojnie polecam:

      http://atnel.pl/mikrokontrolery-avr-jezyk-c.html

      tytuł nie kłamie ;)

      Usuń
  17. co po miganiu diodą dalej p. Mirku ?
    tylko nie "Język C Makra upraszczające - wyjaśnienie " - kompletnie to przerasta nieprogramistę - forum tłumaczy kwestie preprocesora ? itd lecz nic do zastosowania praktycznego, w książce jest podobnie ?

    OdpowiedzUsuń
    Odpowiedzi
    1. Tak tak - w książce jest "podobnie" ;) dobry żart

      Od książki się zaczyna, a poradniki, forum, blog itp - to tylko uzupełnienie do książek, i wszędzie o tym mówię. A ty zaczynasz "od tyłu" i pytasz się czy w książce jest "tak samo" - dobre dobre

      Usuń
  18. Skręca mnie pytanie w trybie dokonanym w stylu - "Kto jest twoim idolem i dlaczego jest to Lenin ?" - "Dlaczego C ?" - A właśnie dlaczego NIE C?. Muszę podkreślić, że moją przygodę z AVRami zaczynałem wtedy, kiedy wbudowane w nie kwarce były w sferze marzeń, o ile uprościłoby to układ i zabawę z nimi. 90s2313 kosztował więcej niż dzisiaj atmega 328, a wyższy model od 2313 pewnie kosztował drożej niż dzisiaj najbardziej wypaśne AVRy. Z moich oldschoolowych przekonań twierdzę, że nic bardziej nie zastąpi kontroli nad programem jak czysty ASSEMBLER. Tylko on zapewni ci kontrolę nad obszarem programu i nad każdym wykonującym się cyklem. C jest dla mnie namiastką, którego użytkownik jest zdany na łaskę kompilatora i wymysły twórców bibliotek i algorytmów w nich zawartych. Jest prawdą, że fajnie i szybko robi się coś z wysokiego poziomu. Wielokrotnie jest to szybsze i wygodniejsze. W zamian za to... program nie mieścił się już w 2313, nie mówiąc o kontroli cyklów, bo trudno docieiekać jakie opóźnienie dają zgnieżdżone pętle FOR chociażby. Pamiętajmy, że wówczas ani atmegi nie były ani tak wszędzie dostępne, ani tanie. Nawet jak były tańsze w internecie, to dochodziła przesyłka - jak przesyłka to nie była opłacalna dla detalu. W sklepie na miejscu cena atmegi (jeżeli w ogóle była dostępna) niejednokrotnie dorównywała tej z przesyłką z netu, lub nawet ją przebijała... Wracając do C - dzisiaj z punktu widzenia projektantów po prostu niedoróbki C zastępuje się wyższym, szybszym modelem procka. Proszę bardzo - macie dowód - serce rosło jak się czytało notę igorplugusb. Tam nie uświadczycie tego waszego "wspaniałego C". To jest właśnie esencja programowania. Zauważcie że i tak ówczesny 2313 był przetaktowany na 10MHZ, aby bawić się na USB. Konia z rzędem temu kto zrobi to samo co Igor na 2313 z 10MHZ za pomocą C. Używanie bibliotek jakichś do LCD, czy do arytmetyki zmiennoprzecinkowej... Jeżeli się nie zrobi jej samemu, to można żyć w błogiej nieświadomości, albo zrobić swoją i wiedzieć o ile jest krótsza i szybsza... W najgorszym razie można stwierdzić że zrobiło się gorszą i użyć tej lepszej, którą ktoś zrobił. Teraz przejdę do mojego osiągnięcia - miernik pojemności. Coś podobnego do 337K z nowego elektronika i drugi projekt z nord elektronik zrobiłem sobie na płytce stykowej. Program działał, przełączał automatycznie zakresy, kompensował pojemność obwodu i wyświetlał wiarygodny pomiar mierzonego kondensatora w zakresie od 1pf pewnie do setek tysięcy mikrofaradów, nie pamiętam jakich największych użyłem kondensatorów, nie miałem ich zbyt wiele. Prawda, że w dziesiątkach bajtów patrzałem na kończący się zakres rozmiaru hexa, ale udało się. Tworząc taki projekt myśli się pod każdym kątem o optymalizacji. Dla uproszczenia arytmetyki kondensator był ładowany stałym prądem z lustra prądowego... Program działał w pętli automatycznie rozładowywał kondensator, przełączał zakresy i wyświetlał wynik. Co różniło mój projekt od dwóch wymienionych ? No wielka satysfakcja, że mi jako nieelektronikowi udało się zrobić miernik pojemności i właśnie to, że oba te projekty były na prockach 4 kilobajtowych, a ja uporałem się w DWUkilobajtowym. Będziemy patrzeć na siebie przez różne pryzmaty, ja będę się dziwił, jak Mirkowi podoba się mruganie diodą na CLK czy niskim zakresem napięcia programowania - skoro dla mnie proste jest, że mam dostarczyć do układu napięcie właściwe to jest dla moich atmeg +5V, a Mirek uśmiechnie się na moje fanaberie, bo weźmie procka silniejszego i zrobi to w C co ja w Assemblerze :) Cóż - ludzie są różni i z różnych rzeczy się cieszą :)

    OdpowiedzUsuń
    Odpowiedzi
    1. Kolega nie rozumie jednej mega podstawowej rzeczy niestety ;)

      C nie jest alternatywą asemblera tak samo jak asembler nie jest alternatywą C. To dwa różne światy ;)

      Gdy ja mam coś pisać na ATtiny10, albo muszę wpakować sporo zadań w ATtiny2313 to również sięgnę po asembler ;) Co za problem ?

      Ale jak mam robić coś dużego na większych prockach to nie wyobrażam sobie dłubać tego w C.

      Wiesz dlaczego ty na świat patrzysz tylko przez pryzmat C ? .... Powód jest prosty - bo nigdy nie robiłeś dużych projektów a na pewno nigdy na sprzedaż. Jesteś amatorem/hobbystą ba - jak widać nawet pasjonatem. Mam nadzieję, że to dla ciebie nie jest obelga bo dla mnie by nie było to obelgą. Ale tylko przez taki pryzmat potrafisz patrzeć na świat i podniecać się nad MOCĄ jaką masz nad procesorem w ASM ;)

      Ja nie używam C do migania diodą, a takie projekty:

      http://www.elektroda.pl/rtvforum/viewtopic.php?p=3494944#3494944

      na śniadanie jak bułkę z masłem mogłem i mogę robić dla zabawy w asemblerze. Tyle że już taki projekt jak ten z linku jest dla mnie czymś w rodzaju masochizmu ;) Ale jak lubię i chciałem się tak pobawić w ASM to kto mi zabroni ? Kto tobie zabroni ?

      Zrozum panie kolego - pisanie kodu w C nie polega na tym, żeby się ścigać z asemblerowcami o każdy takt zegara tam gdzie to nie jest konieczne. Powiem to dosadnie - "nie piernicz" ;) i nie obraź się za te słowa ... ale nie piernicz ....

      Chwała ci za te twoje projekty i osiągnięcia tylko co z nich masz ? Ja ci powiem - masz satysfakcję a inni mają jeszcze poza nią pieniądze bo szybko potrafią zrobić działające urządzenie i szybciej zarobić.

      Chcesz wiedzieć co to jest C ? i do czego ?

      Zróbmy zakład - rzucam ci rękawicę. Proszę stańmy do zawodów w których trzeba na określony czas zrobić projekt, gdzie procek nie gra roli - może to być nawet ATmega2560 ! ale .... musi mieć obsługę i teraz uważaj:

      - kart pamięci w systemie FAT32
      - stosu TCP/IP
      - kolorowy wyświetlacz TFT z dotykiem - i systemem okienkowym ! (nie linux) coś prostszego i własnego
      - odbiór kodów pilota podczerwieni
      - WIFI
      - pomiar temperatury 5 czujników DS18B20
      - czujnik ciśnienia BMP180
      - czujnik wilgotności DHTxxx
      - komunikacja z telefonem ANDROID
      - modem GSM komunikacja GPRS - SMSy

      mógłbym tak jeszcze długo ... ale tyle wystarczy. Stajesz do zawodów czy wciąż będziesz ględził o ASM ? albo pierniczył że Mirek używa C do migania diodą LED ?

      Język C nie został stworzony po to aby mieć kontrolę nad każdym taktem - został stworzony po to aby:

      - można było szybciej stosować duże bloki programu
      - szybciej pisać kod - szybciej tworzyć projekt
      - łatwiej panować nad dużymi projektami
      - szybciej testować projekt
      - szybciej oddawać z procesu produkcji do klienta!

      Usuń
    2. ... ciąg dalszy ....

      i teraz uważaj panie kochany kolego ;) .... bo czasem właśnie w C choć bardzo rzadko ale brakuje możliwości zapanowania nad pojedynczymi cyklami - chociażby tak jak na takim zwykłym AVR gdy trzeba napisać obsługę MAGIC LED ... wtedy nikt się nie dąsa tylko robi wstawkę w asemblerze do C bo można ! ;) i tak się to robi ... Trzeba użyć jakichś mocno czaso-zależnych funkcjonalności - co za problem cały dopisać cały moduł w ASM do projektu w C

      ale musisz pamiętać - że warto unikać jak się tylko da wstawek ASM wiesz z jakiego względu ?

      bodajże NAJWAŻNIEJSZEGO

      język C zapewnia łatwą przenośność kodu między platformami ! Ja mogę pewne ogólne procedury w C zaadaptować nawet z PC i to wprost !!! bez najmniejszej zmiany! a ty ? co ? Zastosujesz kod w ASM z PC na procka ?

      No proszę cię, no nie opowiadaj już dalej swoich bajek ... bo ktoś kto zna dobrze C to zwykle też zna asembler i używa jednego i drugiego. Rozumie różnice i potrafi to wykorzystać ...

      Gdy mi w pewnym momencie brak możliwości na danym procku to mogę wziąć nagle inny w ogóle z innej rodziny nawet nagle jakiś 32-bitowy ARM/STM !!! i łatwo przeniosę kod w C

      a ty co ? przeniesiesz w ASM ? no więc po raz kolejny mówię no przestań opowiadać swoje bajki o tym jaką masz MOC nad prockami w asemblerze. Bo przypomnę - każdy zaawansowany programista w C także zna asembler i to bardzo dobrze i z niego korzysta gdy trzeba ...

      A ty nie znasz C jak widzę i masz ograniczone możliwości realizacji większych projektów i na tym się kończy twoja MOC

      Usuń
    3. Na pewno masz większą moc, bo ja nie zarabiam na programowaniu :) Tak sobie powspominałem stare czasy :) Fajnie że masz pasję i dajesz radę. Zazdroszczę, że możesz swoje projekty na tak precyzyjnych płytkach wypuszczać :) Pozdrawiam

      Usuń
    4. Ale widzisz, ja się z tobą zgadzam w bardzo wielu kwestiach, chociażby w tym, że szacunek należy się Igorowi za jego pracę nad komunikacją USB. To była TYTANICZNA praca i ciężko jej nie docenić. Zgadzam się też, że w dzisiejszych czasach prędzej dobiera się większy sprzęt niż pracuje nad asemblerem aby ten sam projekt mógł działać na mniejszym urządzeniu już nie ważne jakim...

      ale tak to wszystko idzie niestety - dzisiaj mikrokontroler w rękach elektronika programisty jest jak gwóźdź w ręku robotnika, który gdy trzeba bierze mniejszy a gdy trzeba bierze większy ;)

      Usuń