Witam.
Mam pytanie dotyczące C++ na AVR, strasznie ciężko coś w tym temacie znaleźć praktycznie wszystko opiera się na C.
Otóż chciałbym nauczyć się programowania AVR, ale o wiele bardziej interesuje mnie podejście bardziej obiektowe, jakie prezentuje C++, lecz nie wiem gdzie znajdę materiały dotyczące nauki C++ na AVR (składnie C++ znam i programowałem na komputery w nim). Mam na myśli tutaj od stworzenia najprostszej klasy, obsługi diody po jakieś trudniejsze rzeczy. Może są jakieś materiały dotyczącego tego po Angielsku. Z tego co widzę tutorial tutaj na forum wymaga już pewnego obycia z programowaniem AVRów w C.
Więc znacie jakąś książkę/tutorial wprowadzający w AVR w C++ od podstaw ?
Czy raczej moje zamiary są daremne i nie ma sensu na początku zaprzątać sobie głowy C++ ?
C++ od zera na AVR
- Antystatyczny
- Geek
- Posty: 1168
- Rejestracja: czwartek 03 wrz 2015, 22:02
Re: C++ od zera na AVR
Zasadniczo publikujesz pytanie w dziale, w którym znajdują się poradniki dotyczące C++ i AVR (od zera). A oto link: viewforum.php?f=70" target="_blank
Edit:
Ok, Ty chcesz poradnik "od początku świata w C++"... No to raczej będziesz musiał poczytać o podstawach w kontekście języka C. Tego nie ma wiele tak naprawdę.
Edit:
Ok, Ty chcesz poradnik "od początku świata w C++"... No to raczej będziesz musiał poczytać o podstawach w kontekście języka C. Tego nie ma wiele tak naprawdę.
"The true sign of intelligence is not knowledge but imagination" Albert Einstein.
Re: C++ od zera na AVR
Pytanie na początek: czy chcesz się nauczyć C++? czy znasz dobrze C++?
To istotne, bo nauka programowania powinna się zacząć od pisania programów na PC, czyli w przyjaznym środowisku, z debugerem itp.
Zaczynanie programowania zorientowanego na mikrokontrolery to zły początek.
Programy na uc mają istotne ograniczenia, przykladowo:
- ograniczony rozmiar stosu;
- funkcje muszą być reentrantne, czyli nierekurencyjne - kazde wywolanie funkcji nie zmienia stosu;
- brak heapa, czyli niemożność wykonania new albo malloca.
Nauka programowania od zera zaczynajac mikrokontrolery to w ogole jakis poroniony pomysl wg mnie.
Mam tu na mysli wszelkie kursy programowania na arduino, avr itp.
To istotne, bo nauka programowania powinna się zacząć od pisania programów na PC, czyli w przyjaznym środowisku, z debugerem itp.
Zaczynanie programowania zorientowanego na mikrokontrolery to zły początek.
Programy na uc mają istotne ograniczenia, przykladowo:
- ograniczony rozmiar stosu;
- funkcje muszą być reentrantne, czyli nierekurencyjne - kazde wywolanie funkcji nie zmienia stosu;
- brak heapa, czyli niemożność wykonania new albo malloca.
Nauka programowania od zera zaczynajac mikrokontrolery to w ogole jakis poroniony pomysl wg mnie.
Mam tu na mysli wszelkie kursy programowania na arduino, avr itp.
- Antystatyczny
- Geek
- Posty: 1168
- Rejestracja: czwartek 03 wrz 2015, 22:02
Re: C++ od zera na AVR
piotrek pisze:To istotne, bo nauka programowania powinna się zacząć od pisania programów na PC
Trudno się z tym zgodzić. Programowanie można opanować równie dobrze i szybko, ucząc się na mikrokontrolerach. Osobiście odnoszę wrażenie, że nauka na mikrokontrolerach jest momentami wręcz banalnie łatwa, bo wszystko jest transparentne.
piotrek pisze:funkcje muszą być reentrantne
Nie muszą być - o tym decyduje programista. Zasadniczo program realizowany jest liniowo, a więc wywołana funkcja wykonywana jest od początku do jej zaprogramowanego końca, a przerwać jej naturalny przebieg może przerwanie. Ponowne wywołanie funkcji, z której się nie wyszło, spowoduje trudne do przewidzenia przez programistę skutki. To jest oczywiście taki dość naciągany przypadek. Funkcje wywoływane w przerwaniach są zazwyczaj odpowiednio nazwane, by nikt nie miał wątpliwości, że właśnie do tego służą.
piotrek pisze:brak heapa, czyli niemożność wykonania new albo malloca.
Sterta (heap) jest jak najbardziej obecna i można z niej korzystać w AVR. Inną sprawą jest sensowność jej użycia, narzut kodu oraz fragmentacja pamięci. Malloc w AVR działa pierwszorzędnie, co niejednokrotnie sprawdziłem. Dynamicznej alokacji nie miały wcześniejsze wersje narzędzi programistycznych dla PIC16/18, ale ta sytuacja uległa zmianie. Mimo to malloc nie jest polecany przy PIC z powodu bankowanej pamięci i dodatkowych komplikacji z tym związanych. Temat jednak tyczy się AVR, a więc powtórzę, że sterta oraz dynamiczna alokacja są obecne i operatywne.
piotrek pisze:Nauka programowania od zera zaczynajac mikrokontrolery to w ogole jakis poroniony pomysl wg mnie.
Mam tu na mysli wszelkie kursy programowania na arduino, avr itp.
Każdy średnio rozgarnięty człowiek nauczy się tego, w stopniu umożliwiającym pisanie prostych programów, w ciągu kilku miesięcy. Nie widzę w tym pomyśle niczego poronionego. Bierzesz kawałek mikrokontrolera oraz książkę/kurs i zaczynasz studiować. Jak dla mnie najlepsza nauka (sam się tak nauczyłem).
"The true sign of intelligence is not knowledge but imagination" Albert Einstein.
Re: C++ od zera na AVR
A co jeżeli taki programista, który zaczynał od programowania uc, jest już pewien swoich umiejętności i dostanie zadanie np. posortować tablicę miliona intów albo znaleźć liczbę elementów w pewnym przedziale czy chociażby wyświetlić wszystkie elementy drzewa w kolejności od lewej do prawej.
Takich rzeczy nie nauczy się w ograniczonym środowisku AVR. Nie wspominam tutaj nawet o takich dobrodziejstwach C++ jak biblioteka STL czy boost.
Takich rzeczy nie nauczy się w ograniczonym środowisku AVR. Nie wspominam tutaj nawet o takich dobrodziejstwach C++ jak biblioteka STL czy boost.
- Antystatyczny
- Geek
- Posty: 1168
- Rejestracja: czwartek 03 wrz 2015, 22:02
Re: C++ od zera na AVR
piotrek pisze:A co jeżeli taki programista, który zaczynał od programowania uc, jest już pewien swoich umiejętności i dostanie zadanie np. posortować tablicę miliona intów albo znaleźć liczbę elementów w pewnym przedziale czy chociażby wyświetlić wszystkie elementy drzewa w kolejności od lewej do prawej.
Wtedy taki programista poszerzy wiedzę, którą dotychczas posiadał. Co za problem doczytać o Boost, STL czy Qt? Również nikt nie będzie płakał z powodu braku biblioteki SDL2 na AVR, a trzeba przecież napisać grę. Te "a co jeżeli" można mnożyć niemal w nieskończoność, przerzucać argumenty na szale jednej lub drugiej strony w dyskusji, a prawda jest taka, że ludzie mają różne zapotrzebowania. Dla Ciebie kluczowe są wspomniane już biblioteki, a dla mnie kluczowy jest dostęp do "drutów", a z bibliotek lubię HAL czy odchodzący już w niebyt SPL.
Żeby już nie przedłużać...
Zonced pisze: (składnie C++ znam i programowałem na komputery w nim)
Autor wątku wyraźnie zaznaczył, że nie jest początkującym programistą w ogólnym znaczeniu. Składnia języka oraz zasady programowania są mu znane, a pyta o warstwę sprzętową i jej najbliższe okolice.
Myślę, że w bibliotekach pisanych dla środowiska arduino można znaleźć rozwiązania dotyczące dostępu do "drutów" z poziomu języka C++.
"The true sign of intelligence is not knowledge but imagination" Albert Einstein.
- mokrowski
- User
- Posty: 190
- Rejestracja: czwartek 08 paź 2015, 20:50
- Lokalizacja: Tam gdzie Centymetro
Re: C++ od zera na AVR
@Zonced rzeczywiście, mało jest literatury na ten temat. Przychylam się do zdania @Antystatyczny. Zacznij od C na AVR poszerzając swoją wiedzę o C++ programując na PC. Tworzenie wydajnego kodu w C++ na AVR (zresztą nie tylko na tym MCU), wymaga już biegłego zaznajomienia się np. z szablonami.
Dość że jak zapytasz, bardzo chętnie odpowiem a i przykłady kodu chętnie wrzucę
Jest kilka wątków na tym forum związanych z pisaniem kodu w C++ na AVR. W nich także pytaj
PS. O sortowanie miliona int'ów i drzewa także możesz zapytać
Dość że jak zapytasz, bardzo chętnie odpowiem a i przykłady kodu chętnie wrzucę
Jest kilka wątków na tym forum związanych z pisaniem kodu w C++ na AVR. W nich także pytaj
PS. O sortowanie miliona int'ów i drzewa także możesz zapytać
,,Myślenie nie jest łatwe, ale można się do niego przyzwyczaić" - Alan Alexander Milne: Kubuś Puchatek
Wróć do „Programowanie AVR w C++”
Kto jest online
Użytkownicy przeglądający to forum: Bing [Bot] i 0 gości