Mikrokontrolery - Jak zacząć?

... czyli zbiór praktycznej wiedzy dot. mikrokontrolerów.

niedziela, 16 stycznia 2011

Ankieta: C++ vs AVR


Autor: Dondu

Hej!

Ponieważ często pytacie mnie za pomocą PW oraz w tematach na forum Elektrody, kiedy pojawi się następna książka oraz co w niej się znajdzie informuję więc, że podstawą jest rodzina XMega Atmel'a, a znajdziecie w niej sporo przykładowych programów, w tym o komunikacji (także radiowej) oraz coś dla miłośników robotyki.

Finalnie będzie około (a może ponad) 1000 stron, więc każdy coś dla siebie znajdzie. No i ciągle piszę nowe rozdziały ...

Tymczasem chciałbym poznać Wasze zdanie dot. C++, stąd mam gorącą prośbę o wzięcie udziału w krótkiej ankiecie oraz ewentualne jej skomentowanie poniżej.

Pozdrawiam,
Tomasz Francuz


Co myślisz o C++ na AVR?
Nie znam C++ i nie interesuje mnie w kontekście AVR.
Nie znam C++, ale interesuje mnie, więc mogę zacząć od AVR.
Znam C++, ale nie wiem jak używać na AVR.
Znam C++ i używam z AVR, ale z chęcią dowiem się więcej.
Znam C++ i używam z AVR, ale sam mógłbym pisać książki. :-)



Oceń artykuł.
Wasze opinie są dla nas ważne, gdyż pozwalają dopracować poszczególne artykuły.
Pozdrawiamy, Autorzy
Ten artykuł oceniam na:

15 komentarzy:

  1. znam C++ i moim zdaniem na uC to przerost...

    OdpowiedzUsuń
  2. Uważam że C++ nie nadaje do takich prostych mikrokontrolerów jak Atmega8/16/32. Powodowało by to nadmierną ilość bytów w ograniczonej pamięci. C++ jest dobry dla czegoś z conajmniej Cortexem. Oczywiście jak ktoś się uprze to może pisać w asemblerze na Cortexie-4 w JAVIE na atiny, tylko czy jest to optymalne rozwiązanie?

    OdpowiedzUsuń
  3. Do kolegi od przerostu...
    Przerost? Tak samo mówili kiedyś o pisaniu obiektowo na komputery. System operacyjny to też przerost, a jakoś się używa. Interfejs graficzny? Przerost... Przecież w konsoli możesz wszystko wklepać i nie obciążać sprzętu niepotrzebnie.
    Podsumowując:
    Wszystko zależy od zastosowania.

    OdpowiedzUsuń
  4. Jeśli C++ to przerost dla AVR, to takim samym przerostem jest C. C++ sam od siebie nie ma żadnych narzutów. Problemem jest raczej to, że osoby znające C próbują udowodnić, że C++ ma jakieś narzuty i piszą w nim jakieś przykłady (często po parę instrukcji) ilustrujące tą tezę. A że C++ nie znają to im babole wychodzą :) Aby nie toczyć jałowych dyskusji, proszę oponentów o konkretne przykłady kodów, pokazujące jaki to C++ jest be :)

    OdpowiedzUsuń
  5. Gorąca prośba. Tak na wszelki wypadek proszę ewentualnych dalszych komentujących o rzeczową i spokojną dyskusję. :-)

    OdpowiedzUsuń
  6. pPoniekąd kiedyś ludzie odrzucali C++ na PC no bo "skoro UNIX w całości w C był pisany to nie ma nic lepszego". Pewnie już niedługi C++ i myślenie obiektowe w całości przejdzie do mikrokontrolerów, a "jakieś tam C" pozostanie dla fanatyków.

    OdpowiedzUsuń
  7. Jest w tym sporo prawdy, co można zauważyć w przeglądając historycznie dokumentację Microchipa. Stare przykłady zawierają wyłącznie assemblerze, nowe prawie wyłącznie w C. Co będzie dalej zobaczymy w następnych latach ...

    OdpowiedzUsuń
  8. Myślę, że już tak się dzieje - np. gcc, który od lat był rozwijany w C, od wersji 4.8 jest przepisywany na C++. W przypadku mikrokontrolerów warto pamiętać, że przejście na C++ nie oznacza konieczności korzystania ze wszelkich mechanizmów jakie ten język udostępnia - np. wyjątków. Warto skorzystać z tego co jest wygodne, np. domyślnych zmiennych, lepszej kontroli typów, przeciążania operatorów, czy szablonów.

    OdpowiedzUsuń
  9. No cóż... Dzierganie tego samego kodu jest o tyle uzasadnione o ile jest wymagana odpowiednia szybkość działania oraz... koszt wykonania projektu na tyle duży aby tracić czas na debugowanie... Ponowne, tego samego kodu. Jednym słowem czyste "C" to +niekiedy+ strata czasu nawet jeśli mamy do dyspozycji genialne biblioteki. Na dokładkę STM32 można kupić poniżej 1$, który posiada wystarczające zasoby aby myśleć nawet o całkiem sporym programie napisanym w C++.

    OdpowiedzUsuń
  10. ZNAM PARE PROGRAMÓW NP JUZ WAM DAJE
    NA:
    GDY KLIKNIESZ GUZIK DIODA SIE SWIECI:::::::

    #include
    #include

    #define LED_PIN (1<<PB2)
    #define LED_TOG PORTB ^= LED_PIN
    #define KEY_PIN (1<<PB0)
    #define KEY_DOWN ! (PINB & KEY_PIN)

    uint8_t klawisz_wcisniaty(void) ;

    int main (void)
    {
    DDRB |= LED_PIN;
    PORTB |= LED_PIN;
    DDRB &= ~KEY_PIN;
    PORTB |= KEY_PIN;

    while(1)
    {
    if( klawisz_wcisniaty() )
    {
    LED_TOG;
    _delay_ms(200) ;
    }
    }
    }

    uint8_t klawisz_wcisniaty(void)
    {
    if( KEY_DOWN )
    {
    _delay_ms(80) ;

    if( KEY_DOWN ) return 1;
    }

    return 0;
    }

    OdpowiedzUsuń
  11. Uważam, że C++ wcale nie musi być przerostem nad C. Wykonałem kilka projektów w C++ i jestem bardzo zadowolony z rezultatu. Obecnie piszę prawie w całości w C++. Wciąż uczę się nowych rzeczy i ulepszam swój kod. Dlatego wydaje mi się że krążące złe opinie są wynikiem niewiedzy. Myślę że to byłby świetny pomysł, aby pojawiło się kilka artykułów na ten temat. Kto jak kto, ale Pan Panie Tomaszu najlepiej nadaje się do napisania ich. Czytałem wszystkie Pana książki oraz bloga i uważam że ma Pan odpowiednią wiedzę, doświadczenie i umiejętności, aby zebrać najistotniejsze informacje i opisać je w przystępnej formie.

    OdpowiedzUsuń
  12. Cała potęga C++ polega na tym, że ucząc się tego języka zaliczamy jednocześnie C oraz otwieramy drzwi do C#, Javy, PHP itp... Nieprawdą jest, że kod wynikowy C++ na AVRy jest dłuższy niż C. Wystarczy przejrzeć assemblerowy plik .lss w AVR Studio. Poza tym ilość pisanego kodu jest o niebo mniejsza niż w C; pod warunkiem, że korzysta się z klas, które skrywają całą mechanikę programu i operacji na danych. W C++ w jednej tylko deklaracji zmiennej np. Mojtyp zmienna; można ukryć wykonanie kilkudziesięciu funkcji, podczas gdy w C możemy jedynie zarezerwować pamięć. W języku C brakowało mi np referencji, przeciążania (operatorów, funkcji), szablonów. Korzystanie z C++ po prostu ułatwia mi i przyspiesza programowanie przede wszystkim na AVRach.

    OdpowiedzUsuń
    Odpowiedzi
    1. Są jakieś poradniki jak programować w c++ na avr?

      Usuń
  13. https://microgeek.eu/viewforum.php?f=70 Tutaj coś znajdziesz

    OdpowiedzUsuń
  14. Na AVR powinno się pisać w C#, Java, Python wtedy byłoby jeszcze prościej.

    OdpowiedzUsuń

Działy
Działy dodatkowe
Inne
O blogu




Dzisiaj
--> za darmo!!! <--
1. USBasp
2. microBOARD M8


Napisz artykuł
--> i wygraj nagrodę. <--


Co nowego na blogu?
Śledź naszego Facebook-a



Co nowego na blogu?
Śledź nas na Google+

/* 20140911 Wyłączona prawa kolumna */
  • 00

    dni

  • 00

    godzin

  • :
  • 00

    minut

  • :
  • 00

    sekund

Nie czekaj do ostatniego dnia!
Jakość opisu projektu także jest istotna (pkt 9.2 regulaminu).

Sponsorzy:

Zapamiętaj ten artykuł w moim prywatnym spisie treści.