Elektroda.pl
Elektroda.pl
X
Szkolenia elektronika Udemy
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

Programowanie w c++ - Kurs programowania w c++

filip10 17 Kwi 2016 01:23 2721 36
  • #1 17 Kwi 2016 01:23
    filip10
    Poziom 9  

    Cześć.
    Czy jest ktoś w stanie podać jakąś książkę, kurs lub cokolwiek z czego można się kształcić w programowaniu mikrokontrolerów w c++?

    0 29
  • Szkolenia elektronika Udemy
  • #2 17 Kwi 2016 08:29
    Freddie Chopin
    Specjalista - Mikrokontrolery
  • #3 17 Kwi 2016 10:41
    filip10
    Poziom 9  

    Chodzi mi o C++.
    Mikrokontrolery AVR,
    C musiałbym się uczyć od podstaw żeby zacząć ten temat.

    0
  • Szkolenia elektronika Udemy
  • #4 17 Kwi 2016 11:42
    atom1477
    Poziom 43  

    Przecież C opiera się na C++ (składnia, pętle, ify, itp.).
    Skoro piszesz że C musiał byś się uczyć od podstaw, to zakładam że nie znasz tych podstaw.
    To jak chcesz nauczyć się C++?

    0
  • #5 17 Kwi 2016 12:08
    filip10
    Poziom 9  

    Wiem, że się opiera C++ na C ale się jednak różnią. Gdyby się nie różniły to nazywałyby się tak samo, czyż nie?
    Pytanie w dalszym ciągu brzmi czy jest coś z czego można się kształcić w C++ dla mikrokontrolerów.

    0
  • #6 17 Kwi 2016 12:10
    atom1477
    Poziom 43  

    Ale różnica polega na dodaniu czegoś do C.
    C++ ma po prostu więcej "czegoś" niż C.
    Ale wciąż zawiera to co zawierało C.
    Więc C i tak musisz poznać żeby poznać C++.

    Czy na kursie języka angielskiego w Polsce uczą kaligrafii? (tzn. ogólnie pisania liter)
    Nie bardzo, bo alfabet angielski i polski są mniej więcej zgodne (angielski nie ma niczego ponad to co ma polski).
    A alfabetu polskiego uczą wcześniej na lekcjach j. polskiego.

    I tak samo z C++. Na pewno można by tam uczyć podstaw samego C, ale nikt tego nie robi.
    Zobacz dowolny kurs C++. Praktycznie zawsze będzie podany wymóg że wcześniej trzeba poznać podstawy C.

    0
  • #7 17 Kwi 2016 12:27
    filip10
    Poziom 9  

    Nie zacząłem tego tematu żeby się z Tobą kłócić.
    Zacząłem się uczyć c++ bez poznania C.
    Jest mi wygodniej pisać w c++, czy tak trudno mnie zrozumieć?

    0
  • #8 17 Kwi 2016 12:36
    atom1477
    Poziom 43  

    Myślę że to Ty nie rozumiesz o co mi chodzi.
    C++ z racji swego wysokiego poziomu będzie takie samo na PC jak i na AVR.
    Jeżeli umiesz C++ na PC to i umiesz bo na AVR.
    A jeżeli są jakieś różnice pomiędzy PC a AVR, to będę one na niskich poziomach a więc na poziomie C.
    Jeżeli nawet istnieje jakiś kurs C++ na AVR to przy wszelkich różnicach będą odwołania do kursów C (np. rozdział na niezależne pamięci danych i programu, czego nie ma na PC).
    Bo nikt nie będzie powielał tego samego co było w kursie C, na kursie C++.
    To miałem na myśli.

    2
  • #9 17 Kwi 2016 13:06
    filip10
    Poziom 9  

    Wiem o co Ci chodzi.
    Ale czy jest coś związanego z uKontrolerami i C++ ewentualnie asembler od podstaw?

    0
  • #10 17 Kwi 2016 15:22
    tmf
    Moderator Mikrokontrolery Projektowanie

    C++, assembler - spory rozrzut masz. O C++ na MCU nic nie spotkałem, IMHO wystarczy kupić porządną książkę od C++, żeby poznać język. Swoją drogą C++ na AVR to dosyć nietypowe zadanie (pomijam Arduino), jak będziesz miał jakiś konkretny problem to pisz, z pewnością ktoś pomoże. IMHO jedyny drobny problem z C++ na AVR i ogólnie na MCU to handlery przerwań, cała reszta nie jest jakoś szczególnie związana z jakimś konkretnym językiem. Więc jeśli poznasz MCU, to jezyk nie będzie stanowił jakiejś istotnej przeszkody.

    1
  • #11 17 Kwi 2016 15:41
    filip10
    Poziom 9  

    Tzn. mi nie chodzi o naukę C++ tylko o wykorzystanie go w MCU.
    Jakieś przykładowe proste programy itp.
    Zależy mi na możliwości symulowania kodu "na sucho" w aplikacji.

    0
  • #12 17 Kwi 2016 15:53
    atom1477
    Poziom 43  

    No i w koło Macieju.
    A czym miał by sterować ten C++ w mikrokontrolerze?
    Jeżeli klasami, destruktorami, itp. to nie ma różnicy czy będzie na uC czy na PC.
    A jeżeli peryferiami, to nie wiem czy jakikolwiek element języka C++ (w sensie taki którego nie ma w C) mógłby czymś w mikrokontrolerze sterować. Bo sterowanie elementem mikrokontrolera to zwykłe zapisy i odczyty rejestrów. A to element C a nie C++.

    0
  • #13 17 Kwi 2016 16:03
    miro340
    Poziom 12  

    Witam,
    Nie kombinuj, jeśli znasz C++ to znasz też C i w tej kwestii to by było na tyle. Potrzebujesz normalnego kursu programowania w C bo takiego języka używa się do programowania 8 bitowych AVRów. Różnica jest tylko taka, że nie korzystasz z obiektów. Jeśli na siłę chcesz używać C++ to chyba tylko Arduino wchodzi w rachubę ale i tak musisz wyjść z C.

    0
  • #14 17 Kwi 2016 16:42
    tmf
    Moderator Mikrokontrolery Projektowanie

    filip10 napisał:
    Tzn. mi nie chodzi o naukę C++ tylko o wykorzystanie go w MCU.
    Jakieś przykładowe proste programy itp.
    Zależy mi na możliwości symulowania kodu "na sucho" w aplikacji.


    Kolega atom już opisał co i jak. Nie wiem z czym masz problem, bo nic nie zdradzasz. Jeśli znasz C++ to co cie powstrzymuje przed jego użyciem np. z AVR? Symulację na sucho możesz zrobić w Atmel Studio - masz tam symulator i możesz sobie wszystko prześledzić. Na żywca sprawdzisz wszystko kupując jakiegoś JTAGa, lub jeśli masz XMEGA to programator/debugger z PDI. Sam styk z MCU jest praktycznie w każdym jezyku taki sam i polega na zapisie/odczycie rejestrów MCU. C się tu niczym nie różni od C++, więc ksiązki o MCU i C będą równie dobre. Zacznij poznawać MCU, a szybko się przekonasz, że język programowania to kwestia wtórna.

    0
  • #15 17 Kwi 2016 18:54
    atom1477
    Poziom 43  

    Myślę że problem w zdefiniowaniu czego on się chce nauczyć.
    Ja to widzę tak. Nauczył się C++ na PC (co od razu zapewnia nauczenie się samego C).
    Na PC ma różne strumienie wejścia wyjścia (można np. wypuścić tekst do okna).
    A tego na uC nie ma bo uC nie ma wbudowanego ekranu.
    I teraz wcale nie chodzi o nauczenie się "C++ na mikrokontrolery", lecz po prostu o nauczenie się "mikrokontrolerów".
    A C++ się tu wplątało tylko z tego powodu że filip10 już C++ (na PC) zna.
    Tylko że to nic nie zmienia.
    Użycie mikrokontrolera wymaga zapisywania rejestrów, a to się robi tak samo i w assemblerze (w sensie zapisywanych wartości), w BASICu/BASCOMie, w C, czy C++.
    Ot po prostu trzeba wziąć datasheeta i tam znaleźć wartości jakie trzeba wpisywać do uzyskania określonego działania. Użycie C++ zamiast C w tej kwestii niczego nie zmienia.
    To też pewnie powód braku tutoriala uczącego C++ dla uC.
    Bo C++ można się nauczyć gdzie indziej (no i gdzie indziej jest łatwiej, np. na PC).
    Tutorial to co najwyżej może być na temat skonfigurowania kompilatora żeby pisać w C++ zamiast w C.
    I taki tutorial np. dla AVRtudio znalazłem.

    I to nie koniec. Pewnie chodzi też o to że filip10 do uC znalazł tylko tutoriale do C, i uznał że to coś zupełnie innego niż C++. Albo przynajmniej gorszego (w końcu C nie ma dwóch plusów więc na pewno będzie gorsze).
    I ty dwie sprawy.
    1. C++ wcale nie będzie lepsze, szczególnie na małe mikrokontrolery jak AVR. I nie chodzi tylko o rozmiar pamięci, ale o architekturę Harvard.
    2. Jeżeli problemem jest jedynie sprzęgnięcie C++ z uC (wszak filip10 pisał że samo C++ już zna), to do nauki wystarczy tutorial C. Bo w takim tutorialu większość stanowi konfiguracja peryferiów mikrokontrolera. Opis podstaw C można sobie w takim tutorialu po prostu pominąć.
    I te funkcje konfigurujące peryferia (czy inne, np. wysyłające dane przez UART) będą działały po ich przeniesieniu do C++.

    0
  • #16 17 Kwi 2016 21:13
    grko
    Poziom 33  

    @atom1477

    Cytat:

    1. C++ wcale nie będzie lepsze, szczególnie na małe mikrokontrolery jak AVR. I nie chodzi tylko o rozmiar pamięci, ale o architekturę Harvard.


    Mógłbyś rozwinąć ten punkt?

    ---
    Używanie C++ w samych mikrokontrolerach ma pewne ograniczenia. Na początek należy się pożegnać z wyjątkami oraz RTTI. Są też pewne smaczki związane z deklarowaniem wektorów przerwań: trzeba pamiętać o extern "C". Jeśli chodzi o książkę to nie spotkałem typowo dla MCU. Do samego C++ to autor języka ma całkiem przyzwoitą książkę dostępną online.

    0
  • #17 17 Kwi 2016 21:21
    atom1477
    Poziom 43  

    Chodzi o architekturę Harvard?
    No to chodziło mi po prostu takie samo ograniczenie jak w C. Że dostęp do zasobów różni się w zależności od tego czy dane są pamięci programu czy pamięci danych.

    0
  • #18 17 Kwi 2016 21:27
    tmf
    Moderator Mikrokontrolery Projektowanie

    C++ na AVR jest problematyczny z jednego powodu - tabele metod wirtualnych kopiowane są do SRAM, co powoduje duże zajęcie tej pamięci, jeśli intensywnie korzystamy z metod wirtualnych. Nie jest to wada C++ jako takiego, lecz implementacji frontendu C++ w avr-g++. Niestety C++ na AVR z developerów gcc nikt się na poważnie nie zajmuje, więc nie sądzę, aby wada ta miała być w przewidywalnej przyszłości wyeliminowana.

    0
  • #19 18 Kwi 2016 17:42
    filip10
    Poziom 9  

    Pomijając to co wcześniej pisałem...
    Zacząłem od Keil'a, MUC 8051 i języka C.
    Mam problem w pierwszym prostym programie z biblioteką.
    Program nie może otworzyć pliku: #include <sfr51.h>
    Projekt stworzyłem dla MUC podanego w książce i program też przepisałem z książki.

    0
  • #20 18 Kwi 2016 17:53
    arecoag
    Poziom 19  

    Spróbuj wpisać #include<c:/jakiś_katalog/kolejny/sfr51.h>

    0
  • #21 18 Kwi 2016 17:59
    filip10
    Poziom 9  

    W folderze z programem nie ma takiego pliki.

    0
  • #22 18 Kwi 2016 18:03
    grko
    Poziom 33  

    @filip10
    Jeżeli znasz C++ to powinieneś wiedzieć, że istnieją nagłówki bibliotek, które nie są w projekcie. Powinieneś przeszukać katalog gdzie zainstalowałeś Keila. Jeżeli już go znajdziesz to trzeba się zastanowić dlaczego twój nagłówek się nie załącza do projektu bo rozwiązanie proponowane przez @arecoag jest tylko obejściem problemu.

    0
  • #23 18 Kwi 2016 18:09
    arecoag
    Poziom 19  

    Zacznij od wgrania i uruchomienia "Atmel Studio " jest to darmowy program do programowania mikroprocesorów. Oczywiście programujesz w [C] lub [C++]. Procesory serii 8051 są na dzień dzisiejszy dość zabytkowe, a oprogramowanie do programowania jest płatne.

    0
  • #24 18 Kwi 2016 18:22
    filip10
    Poziom 9  

    ok. Instaluję Atmel Studio. Czy jest tam możliwość symulowania kodu w samym programie?
    Mam dwa dni na nauczenie się podstaw więc to nie za wiele czasu i potrzebuję do tego łopatologicznie pisanego kursu.

    0
  • #25 18 Kwi 2016 18:27
    arecoag
    Poziom 19  

    Tak Atmel Studio ma możliwość symulowania kodu, chociaż nauczenie się programowania w dwa dni - rekord świata. Życzę powodzenia

    0
  • #26 18 Kwi 2016 20:58
    filip10
    Poziom 9  

    Podpowie ktoś jak zacząć symulacje?
    Diody przypisane do PORTB powinny migać na przemian.
    Programowanie w c++ - Kurs programowania w c++

    0
  • #27 18 Kwi 2016 21:21
    tmf
    Moderator Mikrokontrolery Projektowanie

    Na listwie oprócz wybranego typu procesora, masz po prawej stronie napisane jakie jest narzędzie do programowania. Zamień je na Simulator, a następnie rozpocznij debuggowanie. W ten sposób będziesz pracował na symulowanym mikrokontrolerze.

    0
  • #28 18 Kwi 2016 21:41
    filip10
    Poziom 9  

    Programowanie w c++ - Kurs programowania w c++

    Mam coś takiego od początku ustawione a jak próbuje zdebugować to pojawia się no tool i wywala komunikat "Timed out waiting for initial target stop event".

    0
  • #29 19 Kwi 2016 10:15
    435758
    Użytkownik usunął konto  
  • #30 19 Kwi 2016 10:21
    tmf
    Moderator Mikrokontrolery Projektowanie

    Kod nie ma wpływu na start debuggera.
    @filip10 Nie dotykałeś czasami fusebitów?
    Stwórz nowy projekt i spróbuj ponownie.

    0