Mikrokontrolery - Jak zacząć?

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

wtorek, 1 marca 2011

Recenzja: AVR & ARM - Paweł Borkowski


Autor: Dondu

AVR & ARM7.
Programowanie mikrokontrolerów dla każdego.

Autor: Paweł Borkowski

Wydanie: maj 2010r.
Stron: 528

Wersja papierowa:
  • okładka: miękka
  • format: 158 x 235 x 24
  • waga: 0,7kg

Wersja eBook w formatach:   

Strona książki w:



Wstęp

Wyobraź sobie, że trzymasz w ręku książkę mającą 528 stron i dotyczącą instrukcji obsługi dwóch skomplikowanych pojazdów: wozu strażackiego i 120 tonowego dźwigu, oraz że książka ta napisana jest w 4 językach i nie znasz żadnego z nich.

Czy tak napisana książka ma szansę nauczyć Ciebie perfekcyjnej obsługi obu pojazdów w czterech językach? Odpowiedź może być tylko jedna: Nie!

Siłą rzeczy więc, książka ta ma istotne ograniczenia.



Na początek jednak zwrócić chcę uwagę na istotny problem z nią związany:

Niebezpieczne uproszczenia schematów

Na forach dyskusyjnych spotakłem się z negatywnymi opiniami na temat tej książki. Postanowiłem poświęcić czas i sprawdzić osobiście, czy są one uzasadnione.

Bodźcem do tego był ten temat na forum Elektroda.pl: Atmega8 - Układ nie działa po zaprogramowaniu.

Autor tematu pokazał schemat kompletnie źle podłączonego mikrokontrolera, który jak się okazało był zaczerpnięty właśnie z tej książki.

Na moją sugestię:

dondu
… albo nie doczytałeś jakiegoś nadrzędnej informacji mówiącej o uproszczeniach na schematach, albo tę książkę trzeba wpisać na listę książek zakazanych.

autor tematu odpowiedział:

yaros79
Prawdopodobnie masz rację co do nadrzędnej informacji, na początku książki jest schemat adaptera do Atmegi , ale go nie robiłem.

I to jest bardzo istotna informacja, ponieważ autor książki chcąc uprościć przedstawianie i rozumienie schematów postanowił, iż wszystkie dotyczące mikrokontrolera AVR, będą oparte o omówiony w jednym z pierwszych rozdziałów adapter, który zawiera wszystkie niezbędne standardowe podłączenia zasilania oraz jego filtrację.

Niestety autor nie stosuje się konsekwentnie do tego założenia i na schematach przedstawia najgorszą możliwą rzecz, jaką można zrobić, czyli pokazanie połowy faktycznego zasilania i braku jego filtrowania w ogóle.

A że użytkownicy książek, rzadko czytają je od deski do deski, to takie podejście autora jest bezpośrednią przyczyną rozpowszechniania poglądów, iż mikrokontroler nie wymaga, żadnych elementów dodatkowych i pełnego zasilania na wszystkich pinach.

Innymi słowy wina leży zarówno po stronie autora jak i czytelnika tej książki.

Podobnie ma się sprawa schematów dot. drugiego omawianego w tej książce mikrokontrolera (ARM). Tutaj autor książki także pokazuje schematy, które mogą zmylić czytelników, którzy nie doczytali, iż to uproszczone wersje i że trzeba brać pod uwagę zasilanie i filtrowanie realizowane na module testowym wykorzystanym w tej książce.

Prawie wszystkie schematy w tej książce (z wyjątkiem programatorów) są tylko schematami poglądowymi nie zapewniającymi prawidłowego działania mikrokontrolera.

Jeżeli budujesz schematy w opraciu o tę książkę, to musisz stosować adapter lub zestaw testowy, który autor przedstawił odpowiednio dla obu mikrokontrolerów.


Niezbędną wiedzę w tym zakresie uzupełnisz tutaj:


Do Autora (o ile przeczyta tę recenzję):
W następnym wydaniu warto byłoby dodać do każdego schematu podpis z gwiazdką, iż prezentowany schemat musi być budowany w oparciu o przedstawiony adapter … bo jak widać czytelnicy nie uwzględniają tego, przez co mają problemy.


Uproszczenia w schematach są ułatwieniem.
Pomimo powyższych zastrzeżeń, należy jednak podkreślić, że takie uproszczenie schematów ułatwia zrozumienie omawianego w danym schemacie zagadnienia.







Klej do wszystkiego, czyli … a może jednak to ma sens?

Dwie różne rodziny mikrokontrolerów plus cztery języki w jednej książce – w jakim celu?

Hmmm, na pewno nie w celu nauczenia się szerokiego zakresu wiedzy o jednej z dwóch omawianych rodzin mikrokontrolerów i jednym z prezentowanych języków.

W takim układzie, czego właściwie się nauczymy?

Języki - ogólnie

W przypadku mikrokontrolera AVR autor omawia każdy temat w 4 językach (BASCOM, Pascal, C oraz Assembler). O tyle w przypadku mikrokontrolera ARM, jedynie C i Assembler. To akurat jest związane z tym, że w BASCOM nie ma możliwości programowania właściwie żadnych innych mikrokontrolerów  poza AVR'ami i starą rodziną 8051.

Na pewno nauczysz się bardzo początkowej wiedzy o czterech różnych językach. Da Ci to pewne pojęcie o nich i pozwoli na decyzję wyboru języka, którego chcesz się uczyć. 

To jest jakaś konkretna zaleta tej książki, ponieważ każdy czytelnik ma inne cele i inne doświadczenie lub jego całkowity brak. Poprzez realizowanie tych samych zadań w czterech językach masz możliwość ich bezpośredniego porównania.

Ale na pewno nie możesz liczyć na to, że wiedza o języku, który wybierzesz jest kompletna. Wystarczy popatrzeć na ilość stron w książkach stricte o każdym z tych języków, by zauważyć, że mają one pomiędzy 500, a 1000 stron! I to tylko o jednym języku!


Język C

Należy zwrócić uwagę na pewne założenie autora:

Paweł Borkowski
… kiedy przedstawiam kod języka C, zakładam, że Czytelnik posiada podstawową znajomość jego składni (choć i tę staram się tłumaczyć, o ile to możliwe). Pozostałe języki … wprowadzam od podstaw.

Ale w przypadku języka C nie musisz się tego obawiać, ponieważ wiedzę na jego temat możesz uzupełniać i ćwiczyć tutaj: Kurs języka C z kompilatorem CManiak (online)


Assembler

Podstawy assemblera dobrze jest znać i to jest prawda niepodważalna. Umiejętność ta przydaje się w rozumieniu zasad programowania mikrokontrolerów oraz newralgicznych punktach w szczególności, gdy zależy nam na szybkości, albo gdy mamy do dyspozycji 256B pamięci programu - tak, tak bajtów, nie kilobajtów.

Dlatego na pochwałę zasługuje pokazanie assemblera w prosty i przyjazny sposób. Niestety to tylko bardzo mały wycinek tej wiedzy z powodów, o których piszę powyżej.


Przesiadkowicze – istotny plus

I tutaj (w mojej opinii) leży największa siła tej książki. Mam na myśli osoby, które znają np. BASCOM, czy Pascal, a chcą nauczyć się języka C i/lub assemblera. Ta książka poprzez swoją uniwersalność, ułatwi takim osobom „przesiadkę” pomiędzy tymi językami.

Niestety tylko w podstawowym zakresie .. wiecie już dlaczego.


Mikrokontrolery

Tutaj podobnie jak z językami. Właściwie dowiesz się tylko totalnych podstaw o obu rodzinach (AVR i ARM). Moim zdaniem jest tutaj nieco gorzej niż w przypadku języków. Autor właściwie przedstawia jedynie operowanie pinami na przykładach migania LED i przycisków.

Z „bebechów” mikrokontrolerów AVR omówiony jest bardzo pobieżnie EEPROM i USART. Na pochwałę zasługuje rozdział dot. pinów i portów wejścia-wyjścia. Pokazane są schematy ideowe wewnętrznej budowy portów i ich praca w zależności od sposobu w jaki wykorzystujemy dany pin.

A gdzie reszta, czyli jakieś „na oko” 95% możliwości tych mikrokontrolerów?
Gdzie takie podstawy jak timery, przetworniki ADC, komparatory, interfejsy SPI, I2C, itd.?

Odpowiedź jest prosta: Zabrakło miejsca w książce. No cóż, coś za coś. W przypadku dwóch rodzin (AVR i ARM) i czterech języków książka ta musiałaby mieć, co najmniej 3tys stron :-)

Plusem natomiast jest to, iż jako podstawę autor wybrał najbardziej popularny mikrokontroler AVR jakim jest Atmega8. To bardzo ułatwia naukę, ze względu na kolosalne ilości różnych projektów dostępnych w sieci Internet wraz z programami. Jest to także mikrokontroler, który zawiera prawie wszystkie możliwe "wewnętrzne bebechy" spotykane w AVR'ach.

Dobrym więc uzupełnieniem tej książki pod względem tego mikrokontrolera, jest Kurs mikrokontrolerów AVR w języku C - Drzaśkowy pamiętnik.


Sterowanie LCD wraz z definiowaniem własnych znaków

Ten temat jest bardzo ładnie omówiony zarówno w przypadku AVR jak i ARM.

Dla mikrokontrolerów AVR temat oparty jest o najpopularniejszy rodzaj wyświetlaczy LCD w wersji 2x16 znaków wykorzystujących sterownik HD44780. Całość oczywiście we wszystkich czterech językach. W przypadku ARM poznasz wykorzystać wyświetlacz z telefonu Siemens S65.

Ale właściwie nic nie stoi na przeszkodzie, byś we własnym zakresie na podstawie powyższych rozdziałów mógł wykorzystać wyświetlacze Siemens S65 z AVR, a HD44780 z ARM - może być to bardzo dobre ćwiczenie własnych umiejętności.


Sterowanie serwem

W przypadku ARM autor dodatkowo zamieścił rozdział o sterowaniu serwomechanizmem. To na pewno jest dużą zaletą dla tych osób, które chcą iść w tym kierunku ze swoimi projektami. Niestety ten rozdział operuje tylko przykładami dla języka C.


FreeRTOS – czyli rozdział „Ni z gruchy, ni z pietruchy”.

Ten rozdział jest dla mnie największym zaskoczeniem. Cała książka to sam początek nauki mikrokontrolerów, a tutaj nagle wpadamy w skomplikowane świat systemów czasu rzeczywistego. Taki przeskok poziomu trudności jest zaskakujący.

Ale z drugiej strony … jako poznanie zagadnienia, stanowi jakąś wartość, która przyda się, ale jak sądzę tylko nielicznym czytelnikom tej książki.'

Na szczęście to zaledwie niewielki fragment książki, więc nie płacisz za niego zbyt wiele, a może jednak kiedyś się przyda :-)







Płyta CD

Do książki załączona jest płyta CD z sporej objętości zawartością. Znajdziesz na niej:
  • lekcje
  • ćwiczenia
  • programy (kompilatory, programatory, itp.),
  • dodatkowe pliki, o których autor pisze w książce.

To bardzo istotny dodatek do książki.

Lekcje i ćwiczenia to wręcz obowiązek i nie ma właściwie co omawiać – są i już :-)

Niemniej, a może nawet bardziej istotne są załączone kompilatory oraz inne narzędzia programistyczne, które używane są w książce. Są to wersje pełne (o ile są darmowe) i demo np. BASCOM.

Dlaczego to takie istotne?

Ponieważ oprogramowanie szybko podlega modyfikacjom ze strony producentów, przez co jego funkcjonalności i obsługa mogą znacznie różnić się od wersji opisanej w książce, co utrudniłoby naukę. Autor zadbał o to, byś tego problemu nie miał i otrzymujesz narzędzia do zainstalowania dokładnie w wersjach, których w książce używa autor.

Łącznie istotna zawartość CD, to 368MB.






Z dodatkiem humoru ...

Autor wychodzi z założenia, że:

Paweł Borkowski
Prowadząc zajęcia ze studentami, staram się, by nikt, łącznie ze mną, nie był nimi znudzony.

By to zrealizować autor wprowadza elementy humoru w postaci historyjek słownych i obrazkowych, które często są związane z omawianym zagadnieniem. Jest to nietypowe podejście, które jak każde inne ma swoje zalety i wady. Z jednej strony nie ma nudy, z drugiej nie każdemu przypadnie to do gustu.

Moim zdaniem, trochę humoru nie zaszkodzi, byle mieć umiar :-)






Wykonanie

Książka ma miękką okładkę i jest w wersji klejonej. Okładka powlekana folią, więc nie brudzi się i nie podlega szybkiemu niszczeniu, co jest istotne w przypadku elektroników, gdyż nasze miejsca pracy nie zawsze są czyste.

Papier wysokiej jakości, a druk bardzo czytelny (duży kontrast). Jednakże cienki papier (mała gramatura) powoduje prześwitywanie tekstu z drugiej strony, stąd minimalnie pogarsza to czasami czytelność tekstu we fragmentach, w których na odwrocie strony są duże płaszczyzny z ciemną zawartością.

Klej bardzo mocny - śmiało można otwierać książkę kładąc na biurku i dociskając jakimś przedmiotem, co często się dzieje, gdyż ręce mamy zajęte miernikami i lutownicami :-)

Reasumując - bardzo dobrze wykonana książka.

eBook rulez!

Polecam wersję eBook, ponieważ:
  • umożliwia automatyczne wyszukiwanie tekstu w książce (bardzo pomocne!),
  • umożliwia kopiowanie fragmentów programów (Ctrl-C oraz Ctrl-V),
  • umożliwia noszenie jej zawsze „przy sobie”,
  • eBook jest tańszy o około 17zł :-)
  • dostępny w wersjach PDFePubMobi.






Podsumowanie

Czas podjąć decyzję dla kogo właściwie jest ta książka.

Dla gimnazjalisty TAK, dla studenta elektroniki NIE.
Aczkolwiek, może na zaliczenie przedmiotu z podstaw obu rodzin (AVR i ARM) wystarczy?

A modelarze, krótkofalowcy, samochodziarze, … amatorzy w starszym wieku?

Autor we wstępie napisał:

Paweł Borkowski
Moim zamierzeniem było, by podręcznik mógł służyć jak najszerszemu kręgowi odbiorców – od gimnazjalisty do profesora.


Jednak moim zdaniem patrząc na:
  • zawartość książki,
  • sposób pisania tekstu,
  • dodatkowy humor obrazkowy i słowny,
ta książka absolutnie nie jest dla studenta elektroniki i pokrewnych. Studenci tych kierunków potrzebują książki takiej jak ta książka.

Ale już dla studenta przedmiotów innych niż związanych z elektroniką i/lub informatyką, który chce programować mikrokontrolery, jak najbardziej ta książka jest właściwa.

Szczególnie polecą ją natomiast gimnazjalistom i ewentualnie uczniom wczesnych klas szkół ponadgimnazjalnych. Dla Was ważne jest, by książki nie były pisane sztywnym, trudnym w odbiorze, naukowym językiem. Ta książka jest właśnie tym czego potrzebujecie w tym zakresie ponieważ opisy są przyjemne w czytaniu i co najważniejsze zrozumiałe.

A pozostali?
W aktualnych czasach nie tylko ludzie młodzi zaczynają zabawę z elektroniką. Także modelarze, krótkofalowcy, samochodziarze i wiele innych grup osób w „słusznym wieku” sięga po lutownicę i programator, choć wcześniej z elektroniką nie nie mieli nic wspólnego. Moim zdaniem książka ta będzie dla nich dobrym początkiem tej wspaniałej przygody :-)

Dlatego też należy uznać, że tytuł książki odzwierciedla w pełni jej adresata.


Moim zdaniem

Książka ta przyda się bardzo młodym użytkownikom (gimnazjalistom), którzy z mikrokontrolerami, a być może i z elektronika nie mieli nic wspólnego, a chcą się zająć tą piękną i przyszłościową dziedziną.

Takie osoby znajdą w książce spory fragment początkowej wiedzy począwszy od zbudowania prostymi środkami programatora i adaptera, będącego jednocześnie płytką testową do zabawy z mikrokontrolerami.

Znajdą także wiedzę na temat możliwych do wyboru języków oraz praktyczne podstawowe informacje, które pozwolą zapalić diodę, pobawić się przyciskami – czyli sam początek.

Także książka może być dobrą pozycją w ręku amatorów w starszym wieku modelarzy, krótkofalowców, itp.

Można na podstawie tej książki podjąć decyzję o docelowej nauce jednego z przedstawionych w niej języków – oczywiście pod warunkiem, że będzie to język C. :-)

Henry Ford
Każdy nasz klient może mieć Forda pomalowanego w dowolnym kolorze jaki zechce, pod warunkiem, że jest to kolor czarny.

Jeżeli jesteś studentem elektroniki i/lub informatyki i dziedzin pokrewnych – nie kupuj tej książki. To nie jest książka dla Ciebie.

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

12 komentarzy:

  1. Zastanawiałem się nad tą książką i miałem wątpliwości po przejrzeniu samego tylko spisu treści, teraz z czystym sumieniem mogę ją sobie odpuścić i zamiast tego sięgnąć po bardziej zaawansowane pozycje lub dozbroić warsztat. Dzięki za recenzję. :)

    OdpowiedzUsuń
  2. Proszę bardzo :-)
    Sądzę, że jesteś studentem lub blisko tej granicy, więc nie jest dla Ciebie. Tobie potrzebna jest zapewne ta książka: Język C dla mikrokontrolerów AVR. Od podstaw do zaawansowanych aplikacji.
    o ile mówimy o AVR.
    Pozdrawiam.

    -----------

    Dodam jeszcze:

    Moim zdaniem każda książka ma swojego docelowego odbiorcę i pod takim kątem staram się je obiektywnie oceniać. I na taką obiektywną, lecz jednak subiektywną moją ocenę zawsze można liczyć.

    Także i ta książka ma grupę, dla której jest moim zdaniem bardzo dobra - czytających ten komentarz po szczegóły odsyłam do końcowej części recenzji.

    OdpowiedzUsuń
  3. Posiadam tę książkę i jestem z niej zadowolony. Jak się czyta "od deski do deski" tak jak autor tłumaczy czyli rozdział o asm, a później język którego chce się uczyć to raczej nie ma żadnych problemów. Gdy dokończę książkę (został 1 rozdział AVR) to przesiadam się na "Język C dla mikrokontrolerów AVR. Od podstaw do zaawansowanych aplikacji by poszerzyć swoją wiedzę i również zrobić podwaliny pod kierunek studiów (automatyka i robotyka)

    OdpowiedzUsuń
  4. Bardzo bobrze powiedziane:
    cyt. Czytać od deski do deski.
    Ja także na to zwracam uwagę w szczególności w recenzji tej drugiej książki, o której piszesz :-)






    OdpowiedzUsuń
  5. @Dondu, prawie dokładnie. Chociaż jestem trochę zasmucony zarzutem niedoczytania. ;)

    Język C dla mikrokontrolerów AVR mam i jestem bardzo z tej książki zadowolony, czekam również na kolejną część. W biblioteczce czeka też na doczytanie Mikrokontrolery AVR Dolińskiego więc myślę, że to w zupełności wystarczy. Mówiąc o bardziej zaawansowanych pozycjach miałem raczej na myśli książki traktujące o zupełnie innych rzeczach (np. przetwarzanie sygnałów, rozszerzenie ogólnej wiedzy o elektronice, coś o łączności bezprzewodowej może coś o innej rodzinie mikrokontrolerów).

    OdpowiedzUsuń
  6. I jest jeszcze argument, który ostatecznie przeważył za niekupieniem tej książki jeszcze przed tą recenzją. Mianowicie zawiera opis dwóch języków dość niszowych – jeden ograniczony do platformy, drugi jest praktycznie na wymarciu, wyparty przez inne języki. Trochę szkoda płacić za coś czego i tak bym nie czytał.

    OdpowiedzUsuń
  7. Sebastianie, to nie była uwaga w stosunku do Ciebie, tylko ogólna, o której piszę na samym końcu tutaj.
    :-)

    OdpowiedzUsuń
  8. Polecam książkę dla tych, którzy nigdy nie mieli nigdy styczności z mikrokontrolerami. Wszystko jest tłumaczone powoli i dokładnie przy pomocy fajnych porównań. Jednak dla tych, którzy coś już dłubali z uC przykładów jest za mało i za wolno "akcja się rozwija"

    OdpowiedzUsuń
  9. od dziś mówcie do mnie STUDENT1 października 2012 14:19

    A ja po konsultacjach z kolegami ze starszego rocznika (zakres literatury podawanej przez wykładowców) i przeczytaniu spisu treści i pokazanego rozdziału kupiłem tę książkę.

    Właśnie przed chwilą kurier ją dostarczył. Przeglądnąłem parę stron i już widzę, że dobrze zrobiłem. Wprawdzie BASCOM na teorii i warsztatach mieć nie będziemy (ta część książki mnie się nie przyda), to Pascal, C i Assembler będą i to nie w jakimś zaawansowanym zakresie więc ta książka mi w zupełności wystarczy.

    OdpowiedzUsuń
  10. Nie bardzo zgadzam się z autorem recenzji. Jako student korzystałem z tej książki zaraz po jej wydaniu w 2010 roku i bardzo sobie chwalę. Pomogła mi zaliczyć na 4 "Systemy mikroprocesorowe w zastosowaniach wbudowanych".

    OdpowiedzUsuń
  11. Ja ją również polecam początkującym, ale jeśli chcą się uczyć przynajmniej dwóch języków-inaczej nie opłaca się kupować. Ja uczę się tylko C i książkę wypożyczyłem z biblioteki. Zbudowałem też adapter z książki- bardzo fajne ze strony autora, że wprowadza czytelników w świat elektroniki totalnie od zera. Myślę nawet, że wcale nie trzeba mieć podstaw C- wszystko i tak jest wyjaśnione.

    OdpowiedzUsuń
  12. W zupełności się zgadzam z stwierdzeniem, że brakuje części o timerach i przetwornikach analogowo-cyfrowych. W książce jedyne co mnie irytuje to sposób przedstawiania poszczególnych rejestrów. Lubię kiedy autorzy książek stosują zasadę "od ogółu do szczegółu", najpierw wymieniłbym wszystkie rejestry a później po kolei opisywał. Pomogło by to wg. mnie w późniejszym użytkowaniu wiedzy w niej zawartej. Potrzeba nauczenia się Assemblera na zajęcia i zamiar przeniesienie się na C, który króluje na forach sprawia, że ta książka nie była złym zakupem. Na pewno będę teraz poszerzał swoją bibliotekę o dodatkowe pozycje.

    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.