[C] Język programowania C jak uczyć się
-
rymek94
- Użytkownik

- Posty: 273
- Rejestracja: 9 paź 2013, o 19:34
- Płeć: Mężczyzna
- Lokalizacja: Warszawa
- Podziękował: 75 razy
- Pomógł: 18 razy
[C] Język programowania C jak uczyć się
Witam, Jak w temacie, chciałem nauczyć się programować w języku C. docelowo chodziło by mi o programowanie mikroprocesorów, ogólnie nie zaczynam od 0, tzn wiem co to kompilator, wydjae mi się że wiem o co chodzi we wskaźnikach. umiem tworzyć tablice, dwu i więcej wymiarowe, dynamiczne statyczne... . Jednak mam chciałbym nauczyć się trochę więcej i usystematyzować to co już wiem. W sumie to zaczynam trochę powyżej linii startu. Potrzebowałbym ćwiczeń, które pozwoliłyby mi wykorzystywać to co już się nauczyłem. Czy ktoś zna jakieś dobre książki lub jakieś materiały, w których znajdę ćwiczenia do przerobienia by móc. No i docelowo to mikroprocesory, czy znacie jakieś godne polecenia pozycje które wprowadzają krok po kroku jak programować taki mikroprocesor, z uwzględnieniem jak taki mikroprocesor podłączyć do komputera itd...
Ostatnio zmieniony 26 cze 2015, o 08:40 przez Afish, łącznie zmieniany 1 raz.
Powód: Poprawa wiadomości.
Powód: Poprawa wiadomości.
-
chlorofil
- Użytkownik

- Posty: 548
- Rejestracja: 16 cze 2010, o 18:30
- Płeć: Mężczyzna
- Lokalizacja: Warszawa
- Podziękował: 29 razy
- Pomógł: 96 razy
[C] Język programowania C jak uczyć się
Do usystematyzowania wiedzy najlepsza na początek będzie nieśmiertelna książka Kernighana i Ritchiego pt. "Język ANSI C". W książce jest zawarte całkiem sporo ćwiczeń. Przy ich rozwiązywaniu na pewno uzupełnisz swoją wiedzę oraz ją usystematyzujesz.
-
chlorofil
- Użytkownik

- Posty: 548
- Rejestracja: 16 cze 2010, o 18:30
- Płeć: Mężczyzna
- Lokalizacja: Warszawa
- Podziękował: 29 razy
- Pomógł: 96 razy
[C] Język programowania C jak uczyć się
Wiesz, zasadniczo język C w ogóle jest "archaiczny" i nie zmienił się wiele od tamtej pory. Naprawdę to jest podstawowa książka, którą należy przeczytać i której materiał należy znać. Jak zrozumiesz wszystkie rozdziały i zrobisz zadania z tej książki, to będziesz mógł poczytać coś pod konkretne mikroprocesory/systemy.
[C] Język programowania C jak uczyć się
Ja polecam książkę K.N Kinga "C Programming: A Modern Approach" .Omówiona dość spora liczba zagadnień a na końcu każdego rozdziału jest sporo ćwiczeń i zadań do zrobienia.Pdfa można łatwo w necie znaleźć.
- miki999
- Użytkownik

- Posty: 8358
- Rejestracja: 28 lis 2007, o 18:10
- Płeć: Mężczyzna
- Lokalizacja: Gdańsk
- Podziękował: 36 razy
- Pomógł: 1001 razy
[C] Język programowania C jak uczyć się
Do embedded (czyli właśnie między innymi programowanie mikrokontrolerów) teraz bardzo prosto wejść. Można bardzo prosto zacząć pisać oprogramowanie migające diodami, wyświetlającego coś na LCD albo przesyłające dane do PC. Najpopularniejsze i w Polsce są (lub były kilka lat temu) są atmegi. Są do nich nawet polskojęzyczne książki. Od siebie mogę polecić rodzinę MSP430 z bardzo tanim zestawem rozwojowym od producenta. Są jeszcze arm cortex, które są trochę bardziej skomplikowane (w sensie więcej trzeba się naczytać i napisać, by napisać pierwszy program, ale na pewno jest to cenny kolejny etap). Odradzam Arduino i tego typu wynalazki i nie uzależniać się od jakiegokolwiek środowiska typu AtmelStudio, CodeComposerStudio, CooCox itp. (chociaż oczywiście warto próbować wszystkiego, by na końcu stwierdzić, że rzeczywiście Eclipse jest najlepszy ).
Warto zaznaczyć, że podstawy elektroniki są bardzo przydatne, o ile nie konieczne. Czyli należy wiedzieć co to kondensator, rezystor, cewka i co powodują pojemności, opór, indukcyjność. Znać filtr RC, diody (zwykłe, LED), rozumieć np. klawiaturę matrycową, rozumieć różnicę między napięciem a natężeniem, pamięci flash, RAM itd. Dodatkowo czytanie schematów (często są ilustracje w dokumentacjach) gdzie mamy bufory, multipleksery, diody, bramki logiczne itp. Projektowanie i samodzielne wykonywanie PCB, to również fajna zabawa - nie zawsze gotowe płytki spełniają nasze oczekiwania.
Co do języka C. Samodzielna nauka bardzo dużo daje itp., ale jestem zdania, że dopóki nie zacznie się czegoś robić w jakimś profesjonalnym projekcie lub nie zacznie pracować, to nie jest w zwyczaju wyrabianie odpowiednich nawyków, więc zachęcam po poznaniu samej składni C i napisaniu nieco programów, zobaczyć jak robią to inni. Niekiedy to prawdziwa magia.
Kolejna rzecz ważna w embedded, to rozumienie co się kryje za tym co robimy. Czyli dlaczego przekazujemy wskaźnik a nie samą zmienną. Co się dzieje przy wchodzeniu do funkcji, co przy przerwaniu. Co oznacza, że zmienna jest const, volatile, static i gdzie się znajdują, zmienne automatyczne, stos. Co dzieje się przy budowaniu programu, kompilacja, linkowanie, sekcje pamięci.
Przy okazji warto wspomnieć, że podałem tu wiele zagadnień, o które pyta się podczas rozmów kwalifikacyjnych
Pozdrawiam.
Warto zaznaczyć, że podstawy elektroniki są bardzo przydatne, o ile nie konieczne. Czyli należy wiedzieć co to kondensator, rezystor, cewka i co powodują pojemności, opór, indukcyjność. Znać filtr RC, diody (zwykłe, LED), rozumieć np. klawiaturę matrycową, rozumieć różnicę między napięciem a natężeniem, pamięci flash, RAM itd. Dodatkowo czytanie schematów (często są ilustracje w dokumentacjach) gdzie mamy bufory, multipleksery, diody, bramki logiczne itp. Projektowanie i samodzielne wykonywanie PCB, to również fajna zabawa - nie zawsze gotowe płytki spełniają nasze oczekiwania.
Co do języka C. Samodzielna nauka bardzo dużo daje itp., ale jestem zdania, że dopóki nie zacznie się czegoś robić w jakimś profesjonalnym projekcie lub nie zacznie pracować, to nie jest w zwyczaju wyrabianie odpowiednich nawyków, więc zachęcam po poznaniu samej składni C i napisaniu nieco programów, zobaczyć jak robią to inni. Niekiedy to prawdziwa magia.
Kolejna rzecz ważna w embedded, to rozumienie co się kryje za tym co robimy. Czyli dlaczego przekazujemy wskaźnik a nie samą zmienną. Co się dzieje przy wchodzeniu do funkcji, co przy przerwaniu. Co oznacza, że zmienna jest const, volatile, static i gdzie się znajdują, zmienne automatyczne, stos. Co dzieje się przy budowaniu programu, kompilacja, linkowanie, sekcje pamięci.
Przy okazji warto wspomnieć, że podałem tu wiele zagadnień, o które pyta się podczas rozmów kwalifikacyjnych
Pozdrawiam.
-
liu
- Użytkownik

- Posty: 1276
- Rejestracja: 10 paź 2004, o 13:30
- Płeć: Mężczyzna
- Lokalizacja: Suchedniów
- Pomógł: 104 razy
[C] Język programowania C jak uczyć się
miki999, "Eclipse najlepszy" - przecież Atmel Studio to jest industry standard:P
W praktyce samo C stosowane w programowaniu mikrokontrolerów (szczególnie 8-bitowych) jest trywialne, bo jakież to zaawansowane mechanizmy (zarządzania pamięcią i tak dalej) da się wcisnąć w coś o architekturze harwardzkiej i do tego z 2 kB RAMu, większość kodu to przestawianie flag w rejestrach konfiguracyjnych i obsługa przerwań.
.
Za to należy się nauczyć obsługi funkcji mikrokontrolera, które nie występują w "dużej" informatyce (a przynajmniej nie oprogramowuje się ich bezpośrednio), czyli jak działa przetwornik A/D, jak się używa wbudowanych timerów, watchdoga, jak działa transmisja szeregowa, jakieś I2C i tak dalej, na czym polega PWM, czy dlaczego podpięcie silnika elektrycznego bezpośrednio pod pin wyjściowy mikrokontrolera jest słabym pomysłem.
W praktyce samo C stosowane w programowaniu mikrokontrolerów (szczególnie 8-bitowych) jest trywialne, bo jakież to zaawansowane mechanizmy (zarządzania pamięcią i tak dalej) da się wcisnąć w coś o architekturze harwardzkiej i do tego z 2 kB RAMu, większość kodu to przestawianie flag w rejestrach konfiguracyjnych i obsługa przerwań.
.
Za to należy się nauczyć obsługi funkcji mikrokontrolera, które nie występują w "dużej" informatyce (a przynajmniej nie oprogramowuje się ich bezpośrednio), czyli jak działa przetwornik A/D, jak się używa wbudowanych timerów, watchdoga, jak działa transmisja szeregowa, jakieś I2C i tak dalej, na czym polega PWM, czy dlaczego podpięcie silnika elektrycznego bezpośrednio pod pin wyjściowy mikrokontrolera jest słabym pomysłem.

