logo elektroda
logo elektroda
X
logo elektroda
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

C++ dobry do programowania mikrokontrolerów?

jonatan21 25 Lut 2010 23:16 9070 14
  • #1 7751417
    jonatan21
    Poziom 11  
    Mam materiały do nauki języka C++, tylko jest to "cały" język programowania a nie coś w stylu 'programowania mikrokontrolerów w języku C++'. I nie wiem czy jak się tego nauczę to zaprogramuję w tym języku jakiś mikrokontroler. Na forum ciągle piszecie programy w C, a do tego nie ma książek o programowaniu np. AVR w C++. Moje pytanie brzmi: czy C++ nadaje się do programowania mikrokontrolerów? Czy nie będzie z tym problemów?

    Pytam bo mam za darmo materiały od kolegów a oni znają ten język (informatycy w technikum) i zawsze mogą mi pomóc w nauce, więc problemów większych nie będzie z nauką. Gorzej z samymi prockami.
  • #2 7751610
    mat_rosner
    Poziom 15  
    jasne ze C++ nadaje sie do programowanie uC...sam sie teraz go ucze i zabieram sie za mikroklocki:) a skoro mowisz ze nie ma czegos takiego jak "programowanie mikrokontrolerow w jezyku C++" to wpisz dokladnie te fraze w googlach;)
  • #3 7751724
    nenpa8lo
    Poziom 17  
    Jak najbardziej, tylko nie ma sensu używać C++ w środowisku w którym masz łącznie 500B RAMu itp. Polecałbym 16- i 32-bit mikrokontrolery z 'odpowiednią' ilością RAMu.
    Także rozważ np. debugowanie programu napisanego w C++ na 8 bitowym kontrolerze z architekturą Harvard ;-) kiepsko to widzę.
  • #4 7751749
    888kf
    Poziom 13  
    C++ jak najbardziej się nadaje. Moją magisterkę robiłem w ten sposób. Pomocnym w tym jest kompilator Keil (materiałów na ten temat znajdziesz dużo w necie). Ja używałem go jeszcze w wersji dos. Jest to kompilator, który tłumaczy program w języku C na kod źródłowy dla procesorów (dodatkowo generuje program w Asemblerze). Jest to podobne narzędzie jak Bascom który operuje na Basicu.
  • #5 7751799
    poorchava
    Poziom 18  
    Język C jest jak najbardziej odpowiedni dla mikrokontrolerów. Jeżeli faktycznie skończy ci sie pamięć operacyjna w mikrokontrolerze, to zawsze możesz poszperać w opcjach kompilatora, zoptymalizować kod ręcznie, ewentualnie tylko krytyczne części programu napisać w asemblerze (np. funkcje obsługi przerwań) a resztę w C.
  • #6 7752120
    Freddie Chopin
    Specjalista - Mikrokontrolery
    jonatan21 napisał:
    Moje pytanie brzmi: czy C++ nadaje się do programowania mikrokontrolerów?

    Nadaje się, ale IMHO nie dla początkujących...

    Cytat:
    Czy nie będzie z tym problemów?

    Będzie. Jak sam widzisz po wiadomości powyżej wiele osób nie rozróżnia C od C++, więc jak będziesz miał jakieś problemy, to szansę na otrzymanie pomocy maleją.

    Problem z programowaniem mikrokontrolerów nie polega na składni języka, tylko na zupełnie innej filozofii niż ta dla komputera PC. To właśnie z tym mają problem początkujący i to właśnie to sprawia problemy. IMHO lepiej zacząć od C, przesiadka na C++ w późniejszym terminie jest prosta i nie nastręcza problemów, więc...

    4\/3!!
  • #7 7752135
    jonatan21
    Poziom 11  
    Ok, więc już wiem że jak najbardziej można korzystać z C++ przy programowaniu procków. Szukałem w Google LITERATURY, KSIĄŻEK związanych z tym i nie ma. A czy jak np. kupię książkę "Mikrokontrolery AVR programowanie w języku C przykłady zastosowań Andrzej Witkowski" to z językiem C++ będę umiał programować korzystając z tej książki, bo to C a nie C++, to jest jakaś wielka różnica? Aha: ja mam książkę dla informatyków z C++ i mam nauczyć się całego języka (nie ma przeszkód) czy tylko wystarczy jakaś podstawowa wiedza do programowania procków?
  • #8 7752396
    tmf
    VIP Zasłużony dla elektroda
    C a C++ to ogromna roznica, to dwa rozne jezyki. Jesli nie znasz C++ to zacznij od programow na PC, zdecydowanie latwiej ci pojdzie. Jak zrozumiesz na czym polega C++ to zabierz sie za mikrokontrolery. Jesli znasz C to rownolegle popisz w C na mikrokontrolerach, zdobyta wiedze wykorzystasz pozniej przy C++. Jak pisze Freddie, pisanie w C++ ma mikrokontrolery powoduje, ze jestes zdany na siebie. Jak przejrzysz to forum, to zauwazysz, ze wiekszosc pisze w Bascomie, pare procent w C i prawie nikt w C++. Dlatego wazne jest, zeby opanowac najpierw ten jezyk. Bo potem otrzymujesz bezsensowne opowiesci wyssane z palca, ze niby SRAM za malo na C++, ze jest bardziej pamieciozerny, wolniejszy itd. Najczesciej od ludzi, ktorzy o C++ przeczytali na Wikipedii.
    Drugi problem to support ze strony tworcow kompilatorow. Nie wiem jak sprawa wyglada w kompilatorach komercyjnych, ale w gcc dla mikrokontrolerow jest kiepsko. Napisze na przykladzie tego co znam - AVR-gcc. Nie ma bibliotek standardowych C++, ba nie ma nawet zdefiniowanych operatorow new i delete (ale to banal). Na szczescie AVR-libc dziala w c++ tez, jesli sa jakies problemy to developerzy nawet to uwzgledniaja. Z tym, ze obecnie nie ma zadnego teamu testujacego C++ na AVR. Niemniej jednak ze swojej strony pisanie w C++ moge jak najbardziej polecic.
  • #9 7752612
    jonatan21
    Poziom 11  
    No to na początek jednak naucze się C. Książka "Mikrokontrolery AVR programowanie w języku C przykłady zastosowań" Andrzej Witkowski to dobry pomysł?
  • #11 7752791
    jonatan21
    Poziom 11  
    Dobra, dobra, czytałem już takie tematy... Nie było pytania ale dzięki wszystkim:)
  • #12 7753080
    mj_2000
    Poziom 15  
    Dla początkujących dobrym rozwiązaniem może być platforma Arduino. W sieci jest coraz więcej informacji na ten temat. Pogooglaj trochę w tym temacie - może będzie odpowiedni dla Ciebie.
  • #13 7753569
    jonatan21
    Poziom 11  
    Z tym Arduino jest tak, że jeżeli np. buduję elektronikę do robota to programuję procki przy pomocy tej platformy i dołączam zaprogramowany już procek do swojego układu? Zakładam że znałbym już C i tym językiem programowałbym.
  • #14 7754457
    omicronNs
    Poziom 21  
    Najpierw może podstawy języka, nawet jeśli w przykładach na PC, to książka P. A. Witkowskiego zakłada że już co nieco kumasz, kumasz? Ja od siebie polecę "Język C Szkoła programowania" S. Prata wszystko świetnie opisane od całkowitego zera. A potem właśnie twoją propozycję tj P. Witkowski.
  • #15 7756011
    lesterasalas
    Poziom 10  
    Cześć,

    Ja też zaczynam z mikrokontrolerami, ale dylematów nie mam.
    Pisze w C, także w C++, materiałów w necie mnóstwo. Prawda jest taka że liczą się głównie Twoje chęci. Studiowanie datasheetów procka Cię i tak nie ominie, szukanie co gdzie i dlaczego ma być w konkretnym rejestrze etc. Ale to frajda :) Jak wejdziesz w AVR'ka to i tak moim skromnym zdaniem jako początkujący NIE zapchasz od razu pamięci. Ucieszysz się że coś działa. Jak będziesz miał dobre biblioteki albo napiszesz sobie kilka funkcji aby nie męczyć się z często wykonywanymi rzeczami, to potem już czysta przyjemność. Plus ogromny jak dla mnie z nauki C czy C++ na mikrokotrolerze to możliwość obejrzenia swojego wyniku na żywo - czyli np. działający wg Twojego algorytmu robocik. Mała rzecz a cieszy skubana :)

    Powodzenia
    A.
REKLAMA