• Obecnie brak na stanie
Język C dla mikrokontrolerów AVR. Od podstaw do zaawansowanych aplikacji. Wydanie II
search
  • Język C dla mikrokontrolerów AVR. Od podstaw do zaawansowanych aplikacji. Wydanie II
ID: 295518

Tomasz Francuz

Wycofany
 

Wysyłka gratis

darmowa wysyłka na terenie Polski dla wszystkich zamówień powyżej 500 PLN

 

Wysyłka tego samego dnia

Jeśli Twoja wpłata zostanie zaksięgowana na naszym koncie do godz. 11:00

 

14 dni na zwrot

Każdy konsument może zwrócić zakupiony towar w ciągu 14 dni bez zbędnych pytań

ISBN: 978-83-246-9814-1
Data wydania: 2015-01-09
Liczba stron: 712
Format: 158x235 mm


Mikrokontroler pod kontrolą!

  • Podstawy budowy mikrokontrolerów, czyli jakie możliwości dają środowisko Atmel Studio i platforma Xplained z ATmega168/328
  • Architektura i zestaw instrukcji, czyli dlaczego mikrokontrolery warto programować w języku C
  • Efektywne pisanie prostych i skomplikowanych programów na AVR, czyli jak wykorzystać różne triki

Mikrokontrolery AVR to grupa układów oferujących ogromne możliwości. Każdy amator elektroniki i programowania wie, że można wykorzystać je na tysiąc sposobów, a prostota budowy, szybkość działania, bogactwo peryferii i wiele darmowych narzędzi czynią je tym bardziej atrakcyjnymi gadżetami. Jeśli chciałbyś zgłębić tajniki programowania mikrokontrolerów albo podszkolić własne umiejętności w tej dziedzinie, czas zajrzeć do tej książki!

W nowym wydaniu uwzględniono zmiany, jakie zaszły w świecie AVR w ciągu ostatnich 3 lat, czyli np. zmianę AVR Studio na Atmel Studio. Znajdziesz tu podstawy posługiwania się nowym IDE, tworzenia oraz debugowania w nim projektów. Dowiesz się więcej o zmianach w kompilatorze avr-gcc, a szczególnie o tzw. nazwanych przestrzeniach adresowych, które ułatwiły dostęp do danych umieszczonych w pamięci FLASH mikrokontrolera. Odkryjesz, jak wykorzystać piloty telewizyjne do sterowania pisanym programem i jak połączyć program w C z asemblerem. Miłośnicy LED-ów zrozumieją, jak obsługiwać wielokolorowe matryce z wykorzystaniem peryferii dostępnych w AVR oraz jak sprzętowo realizować wymianę danych z popularnymi diodami ze sterownikiem WS2812B. Jeśli chcesz, by mikrokontroler stał się Twoim sprzymierzeńcem, musisz przeczytać tę książkę!

  • Mikrokontroler i jego otoczenie, programatory
  • Arytmetyka i operacje bitowe
  • Zarządzanie projektem i preprocesor
  • Kontrola rdzenia i zarządzanie poborem energii
  • Dynamiczna alokacja pamięci i wbudowana pamięć EEPROM
  • Dostęp do pamięci FLASH i portów IO mikrokontrolera
  • Rejestry IO ogólnego przeznaczenia
  • Przerwania i timery
  • Komparator i przetwornik analogowo-cyfrowy
  • Obsługa wyświetlaczy i interfejsy (USART, SPI, TWI, USI, 1-wire)
  • Łączenie kodu C i asemblera
  • Bootloader i debugowanie programu

Mikrokontroler wielkich możliwości do Twoich usług!


Spis treści

Wstęp do wydania drugiego (13)

Wstęp (15)

  • Kody przykładów (16)
  • Schematy (16)
  • Wymagane części (16)
  • Wsparcie (18)

Rozdział 1. Jak zacząć, czyli instalacja środowiska (19)

  • Atmel Studio 6 - podstawy (20)
    • Rozpoczynamy pracę - nowy projekt (20)
    • Opcje projektu (22)
  • Atmel Studio - dodatki (27)
    • Naggy (28)
    • MarginOfError (28)
    • Data Size Viewer (29)
    • Doxygen Integrator (29)
    • AnkhSVN (30)
  • AVR w systemie GNU/Linux (30)

Rozdział 2. Mikrokontroler i jego otoczenie (33)

  • Podłączenie zasilania (33)
    • Odsprzęganie zasilania (34)
  • Filtrowanie zasilania dla części analogowej procesora (35)
    • Zasilacz (36)
  • Łączenie mikrokontrolera z układami pracującymi w innej domenie napięciowej (39)
    • Konwersja poziomów logicznych pomiędzy układami pracującymi z różnymi napięciami zasilającymi (40)
    • Piny wejściowe i wyjściowe (40)
    • Łączenie wyjścia procesora z układem pracującym z napięciem 5 V (43)
    • Zastosowanie aktywnego konwertera (45)
    • Konwersja z napięcia wyższego na niższe (45)
    • Dzielnik rezystorowy (46)
    • Użycie do konwersji napięć buforów scalonych (47)
    • Bufor dwukierunkowy stosowany w magistralach typu open drain (47)
  • Oscylatory zegarowe (49)
  • Zasady wykorzystania zewnętrznego kwarcu (50)
  • Generator kwarcowy 32768 Hz (52)

Rozdział 3. Programatory (53)

  • Podłączenie - uwagi ogólne (54)
    • Problemy (56)
  • Programowanie AVR (56)
    • Programatory ISP (57)
  • Programatory (59)
    • Programator AVRISP mkII (59)
    • Programator USBASP (60)
  • Programatory JTAG (60)
    • Programator JTAGICE mkII (62)
    • JTAGICEIII (62)
    • AVROne! (63)
    • AVR Dragon (63)
    • Interfejs debugWIRE (67)
  • Programowanie z poziomu AS6 - dlaczego warto korzystać z plików w formacie elf (68)
  • Kilka procesorów i interfejs ISP (69)
  • Kilka procesorów w jednym układzie (70)
  • Programatory HV i równoległe (71)
  • Tryb TPI (71)
  • Programator Atmel-ICE (72)
    • Uaktualnianie firmware narzędzi (73)
  • Czy nie da się taniej? (73)
  • Programowanie przy pomocy narzędzi dostarczonych przez firmę Atmel (74)
  • Program AVRDUDE (75)

Rozdział 4. Na czym pracujemy, czyli ATmega168/328 Xplained Mini w skrócie (77)

  • Podłączenie modułu (78)
  • Xplained Mini w Atmel Studio (78)
  • Piny IO (79)
  • Pierwszy program (80)
    • Wgrywamy pierwszy program (83)

Rozdział 5. Bity konfiguracyjne (85)

  • Co to takiego? (85)
    • Lockbity (86)
    • Fusebity (86)
  • Sygnatura (90)
  • Konfiguracja fuse- i lockbitów w AVR-libc (90)
    • Lockbity w AVR-libc (91)
    • Fusebity w AVR-libc (91)
  • Konfiguracja w Atmel Studio (92)

Rozdział 6. Arytmetyka i operacje bitowe (95)

  • Arytmetyka (95)
    • Reprezentacja binarna liczb (95)
    • Proste typy danych (97)
    • Arytmetyka stałopozycyjna (102)
    • Arytmetyka zmiennopozycyjna (108)
  • Operacje bitowe (116)
    • Operacja iloczynu bitowego (116)
    • Operacja sumy bitowej (117)
    • Operacja sumy wyłączającej (118)
    • Operacja negacji bitowej (119)
    • Operacje przesunięć bitowych (120)

Rozdział 7. Podstawy języka C na AVR (123)

  • Zasięg zmiennych (123)
    • Zmienne globalne (124)
    • Zmienne lokalne (125)
    • Wskaźniki (127)
    • Tablice (133)
  • Struktury (137)
    • Wskaźniki i struktury (138)
    • Struktury anonimowe (139)
    • Inicjalizacja pól struktury (139)
    • Unie (140)
    • Pola bitowe (141)
    • Definicja a deklaracja (142)
  • Funkcje (143)
    • Przekazywanie parametrów przez wartość i referencję (145)
    • Rekurencyjne wywołania funkcji (145)
  • Słowa kluczowe (146)
    • Operatory (146)
    • Instrukcje sterujące (150)

Rozdział 8. Zarządzanie projektem i preprocesor (155)

  • Preprocesor (155)
    • Dyrektywa #include (156)
    • Dyrektywy kompilacji warunkowej (157)
    • Dyrektywa #define (158)
  • Komentarze (160)
  • Nazewnictwo (161)
    • Literały (163)
  • Podział kodu na pliki (165)
    • Widoczność funkcji (169)
    • Widoczność zmiennych - słowo kluczowe extern (170)
    • Podkatalogi (172)
  • Modyfikator const (173)
  • Słowo kluczowe static (175)
  • Dyrektywa inline (175)
    • inline funkcja(); (177)
    • static inline funkcja(); (178)
    • extern inline funkcja(); (179)
  • Modyfikator register (180)

Rozdział 9. Sekcje programu (183)

  • Sekcje danych (184)
    • Sekcja .text (184)
    • Sekcja .data (184)
    • Sekcja .bss (185)
    • Sekcja .eeprom (186)
  • Sekcje zawierające kod programu (186)
    • Podsekcje .init[0-9] (187)
    • Podsekcje .fini[0-9] (188)
  • Sekcje specjalne (188)
  • Sekcje a opcje kompilacji (188)
  • Sekcje tworzone przez programistę (190)
  • Umieszczanie sekcji pod wskazanym adresem (191)

Rozdział 10. Kontrola rdzenia i zarządzanie poborem energii (193)

  • Źródła sygnału RESET (193)
    • Power-on Reset (195)
    • Zewnętrzny sygnał RESET (195)
    • Brown-out Detector (195)
    • Układ watchdog (196)
  • Zarządzanie poborem energii (201)
    • Usypianie procesora (201)
    • Wyłączanie układu BOD (202)
    • Wyłączanie podsystemów procesora (203)
    • Preskaler zegara (203)
    • Inne sposoby minimalizowania poboru energii (204)

Rozdział 11. Dynamiczna alokacja pamięci (207)

  • Alokacja pamięci w bibliotece AVR-libc (209)
    • Funkcja malloc (212)
    • Funkcja calloc (212)
    • Funkcja realloc (212)
    • Funkcja free (214)
  • Wycieki pamięci i błędne użycie pamięci alokowanej dynamicznie (214)
  • Wykrywanie kolizji sterty i stosu (216)
    • Metoda I - własne funkcje alokujące pamięć (217)
    • Metoda II - sprawdzanie ilości dostępnej pamięci (217)
    • Metoda III - marker (217)
    • Metoda IV - wykorzystanie interfejsu JTAG lub debugWire (217)
    • Metoda V - wzór w pamięci (219)

Rozdział 12. Wbudowana pamięć EEPROM (223)

  • Kilka słów, czym jest EEPROM (223)
  • Dostęp do EEPROM w AVR (224)
  • Zapobieganie uszkodzeniu zawartości pamięci EEPROM (225)
  • Kontrola odczytu i zapisu do pamięci EEPROM (226)
    • Odczyt zawartości komórki pamięci (226)
    • Zapis do komórki pamięci (226)
  • Dostęp do EEPROM z poziomu AVR-libc (228)
    • Deklaracje danych w pamięci EEPROM (228)
    • Funkcje realizujące dostęp do pamięci EEPROM (230)
    • Inne funkcje operujące na EEPROM (232)
  • Techniki wear leveling (233)
  • EEPROM i awaria zasilania (235)
  • Problem atomowości przy dostępie do EEPROM (241)
  • Zapis do EEPROM z użyciem przerwań (241)

Rozdział 13. Dostęp do pamięci FLASH (245)

  • Wskaźniki wykorzystujące przestrzenie adresowe (248)
  • Jak to bywało dawniej... (252)
  • Dostęp do pamięci FLASH > 64 kB (253)
  • Typy 24-bitowe (254)

Rozdział 14. Dostęp do 16-bitowych rejestrów IO (255)

  • Dostęp do 16-bitowego rejestru ADC (255)
  • Dostęp do 16-bitowych rejestrów timerów (256)

Rozdział 15. Zwalniamy, czyli kiedy opóźnienia są konieczne (259)

  • Opóźnienia przy zmiennym taktowaniu (263)
  • Wykorzystanie timerów do realizacji opóźnień (265)

Rozdział 16. Pliki z danymi - jak je dodawać do projektu? (267)

  • Kompilacja plików binarnych (268)
  • Łączenie plików obiektowych z projektem (270)
  • Dostęp do danych binarnych (273)
    • Dostęp do danych z wykorzystaniem przestrzeni adresowych (275)

Rozdział 17. Dostęp do portów IO mikrokontrolera (277)

  • Konfiguracja pinu IO (278)
  • Manipulacje stanem pinów IO (282)
    • Zmiana stanu portu na przeciwny (282)
    • Ustawianie linii IO (283)
    • Zerowanie linii IO (283)
    • Makrodefinicja _BV() (283)
    • Użycie pól bitowych (284)
  • Synchronizator (285)
  • Przekazywanie rejestru jako parametru funkcji (286)
  • Przykłady praktyczne (287)
    • Sterowanie wyświetlaczem 7-segmentowym (287)
    • Podłączenie przycisków (290)
    • Enkoder obrotowy (294)
    • Klawiatura matrycowa (299)

Rozdział 18. Rejestry IO ogólnego przeznaczenia (303)

  • Wykorzystanie innych rejestrów jako GPIOR (305)

Rozdział 19. Przerwania (307)

    • Czym są przerwania? (307)
    • Przerwania maskowalne (308)
    • Źródła przerwań (309)
    • Wektory przerwań (311)
  • Obsługa przerwań (312)
    • Puste wektory przerwań (314)
    • Puste przerwania (314)
    • Współdzielenie kodu przez przerwania (315)
    • sei()/cli() (316)
    • Atrybut naked i obsługa przerwań w asemblerze (317)
    • Modyfikator volatile (319)
    • Atomowość dostępu do danych (324)
    • Funkcje reentrant (327)
  • Przykłady praktyczne (328)
    • Wyświetlanie multipleksowane (329)
    • Wyświetlanie multipleksowane z regulacją jasności wyświetlacza (333)
    • Obsługa przycisków (336)
    • Obsługa enkodera (339)
    • Klawiatura matrycowa (340)

Rozdział 20. Timery (343)

  • Sygnał taktujący (344)
    • Wewnętrzny sygnał taktujący (344)
    • Zewnętrzny sygnał taktujący (345)
  • Licznik (346)
  • Układ porównujący (346)
    • Wpływ na piny IO (347)
  • Moduł przechwytywania zdarzeń zewnętrznych (348)
    • Eliminacja szumów (349)
    • Komparator jako wyzwalacz zdarzenia ICP (349)
  • Tryby pracy timera (349)
    • Tryb prosty (349)
    • Tryb CTC (352)
    • Tryby PWM (353)
    • Układ ochronny (358)
    • Modulator sygnału wyjściowego (359)
  • Miernik częstotliwości i wypełnienia (360)

Rozdział 21. RTC - czyli trochę o zegarach (365)

    • Realizacja sprzętowa (366)
    • Realizacja programowa (366)
  • Czas drogą radiową, czyli DCF77 (369)
    • Trochę więcej o DCF77 (369)
    • Dekodowanie danych (370)
    • Funkcje konwersji czasu (372)
    • Moduł odbiornika DCF77 (372)

Rozdział 22. Komparator (379)

  • Funkcje dodatkowe (380)
    • Blokowanie pinów (380)
    • Wyzwalanie zdarzeń timera (380)
    • Wybór wejścia komparatora (380)
    • Wyzwalanie przetwornika ADC (381)

Rozdział 23. Przetwornik analogowo-cyfrowy (383)

  • Wybór napięcia referencyjnego (384)
  • Co to jest LSB? (385)
  • Kalibracja ADC (386)
  • Nadpróbkowanie (387)
    • Uśrednianie (388)
    • Decymacja i interpolacja (389)
  • Jak zwiększyć precyzję pomiarów? (389)
  • Multiplekser (390)
  • Blokowanie pinów cyfrowych (391)
  • Przetwornik ADC (392)
    • Tryb pojedynczej konwersji (393)
    • Tryb ciągłej konwersji (393)
  • Wejścia pojedyncze i różnicowe (394)
  • Wynik (395)
  • Wyzwalacze (395)
  • Przerwania ADC (396)
  • Precyzyjne pomiary przy pomocy ADC (397)
  • Przykłady (399)
    • Termometr analogowy LM35 (399)
    • Klawisze (401)

Rozdział 24. Obsługa alfanumerycznych wyświetlaczy LCD (407)

  • Obsługa wyświetlaczy alfanumerycznych (408)
    • Funkcje biblioteczne (413)
    • Definiowanie własnych znaków (418)
  • Transakcyjna obsługa LCD (420)
    • Przykład - menu (430)

Rozdział 25. Monochromatyczne wyświetlacze graficzne (439)

  • Wizyta w muzeum, czyli wyświetlacze wykorzystujące KS0108 (441)
  • Moduły wykorzystujące kontroler ST7565R (450)
  • Budowa i funkcje kontrolera ST7565R (451)
  • Funkcje specjalne kontrolera (457)
    • Obracanie obrazu (457)
    • Regulacja kontrastu (458)
    • Numer pierwszej wyświetlanej linii (459)
  • Czcionki (460)
  • Mała optymalizacja (465)
  • Podwójne buforowanie (467)
    • Adres początku wyświetlania obrazu (468)
  • Menu (469)
    • Menu oparte na piktogramach (471)

Rozdział 26. Interfejs USART (477)

  • Interfejsy szeregowe (477)
  • Interfejs USART (478)
  • Format transmisji danych (480)
  • Interfejs USART mikrokontrolera AVR (482)
    • Szybkość transmisji (482)
    • Dobór kwarcu (484)
    • Formaty ramek danych (484)
    • Nadajnik i odbiornik USART (485)
  • Kontrola poprawności danych (486)
  • USART z Xplained Mini (487)
  • Terminal (487)
  • Wykorzystanie przerwań (488)
  • Równoczesny dostęp do USART z wielu "wątków" (493)
  • Dostęp do USART z wykorzystaniem strumieni (495)
    • Metoda get (496)
    • Metoda put (496)
    • Otwieranie strumienia (497)
  • Połączenie mikrokontroler - mikrokontroler (498)
    • Tryb synchroniczny pracy USART (499)
  • RS485 (504)
  • Tryb MPCM (506)
    • Komputer w charakterze urządzenia master MPCM (509)

Rozdział 27. Interfejs SPI (511)

  • Inicjalizacja interfejsu (513)
    • Ustawienie pinów IO (514)
    • Zegar taktujący (516)
    • Procesor w trybie Master SPI (516)
    • Procesor w trybie slave SPI (516)
  • Przykłady (517)
    • Połączenie AVR - AVR (517)
    • Połączenie AVR - rejestr szeregowy (522)
  • Interfejs USART w trybie SPI (526)
    • Taktowanie magistrali SPI (527)
    • Tryb pracy SPI (528)
    • Format ramki danych (528)
    • Konfiguracja interfejsu (528)

Rozdział 28. Interfejs TWI (531)

  • Tryb multimaster (534)
  • Inicjalizacja interfejsu (535)
  • Mikrokontroler w trybie I2C master (535)
    • Bity START i STOP (535)
    • Podstawowe funkcje do współpracy z I2C (536)
    • Współpraca z zewnętrzną pamięcią EEPROM (539)
    • Współpraca z zewnętrzną pamięcią FRAM (544)
    • Umieszczanie zmiennych w zewnętrznej pamięci EEPROM (545)
    • Współpraca z zegarem RTC (547)
    • Obsługa ekspandera IO PCF8574 (551)
  • Procesor w trybie I2C slave (552)
    • Przykład (555)

Rozdział 29. Interfejs USI (563)

  • 4-bitowy licznik i zegar (563)
  • Przerwania USI (564)
  • Zmiana pozycji pinów (565)
  • Wykorzystanie interfejsu USI w trybie SPI (566)
    • Tryb SPI master (566)
    • Tryb SPI slave (567)

Rozdział 30. Interfejs 1-wire (569)

  • Realizacja master 1-wire na AVR (572)
    • Realizacja master 1-wire przy pomocy pinów IO (573)
    • Realizacja master 1-wire przy pomocy interfejsu UART (576)
    • Wysokopoziomowe funkcje obsługi 1-wire (581)
  • Termometr cyfrowy DS1820 (584)

Rozdział 31. Dużo LED-ów, dużo zabawy (587)

  • Matryce LED (587)
    • Projekt PCB i zasilanie (588)
    • Układ z matrycą dwukolorową (590)
    • Sterowanie matrycą (591)
  • Sterownik WS2812B (593)
    • Zasilanie (595)
    • Bit banging (596)
    • Wykorzystanie SPI (597)

Rozdział 32. Piloty TV (601)

  • Część sprzętowa, czyli odbiornik IR (603)
  • Część programowa, czyli standardy kodowania (604)
    • Standard NEC i pokrewne (604)
  • RC5 (610)
    • Kod Manchester (610)
    • Dekoder RC5 (611)
    • Inne standardy kodowania (615)

Rozdział 33. Łączenie kodu C i asemblera (617)

  • ABI (618)
  • Słowo kluczowe asm (621)
    • Typy operandów (623)
    • Dostęp do portów IO (625)
    • Dostęp do danych wielobajtowych (626)
    • Dostęp do wskaźników (627)
    • Lista modyfikowanych rejestrów (627)
    • Wielokrotne użycie wstawki asemblerowej (628)
  • Pliki .S (629)
    • Definicje (630)
    • Definicja symboli globalnych (630)
    • Dyrektywy asemblera (635)
    • Wywołanie funkcji języka C z asemblera (637)

Rozdział 34. Bootloader (639)

  • Pamięć NRWW i RWW (640)
  • Bity konfiguracyjne bootloadera (641)
    • Konfiguracja lockbitów z poziomu aplikacji (642)
  • Programowanie pamięci FLASH (643)
  • Wykorzystanie przerwań w kodzie bootloadera (645)
    • Usuwanie tablicy wektorów przerwań (645)
    • Skrócenie tablicy wektorów przerwań (647)
  • Start bootloadera (650)
    • Wykorzystanie dodatkowego przycisku/zworki (650)
    • Wykorzystanie markerów w pamięci EEPROM (651)
    • Oczekiwanie na specjalny znak w wybranym kanale komunikacji (652)
    • Start aplikacji (652)
  • Współdzielenie kodu aplikacji i bootloadera (653)
    • Wywoływanie funkcji bootloadera w procesorach ATMega256x (655)
    • Wywoływanie funkcji obsługi przerwań zawartych w kodzie bootloadera (658)
    • Współdzielenie zmiennych pomiędzy aplikacją a bootloaderem (658)

Rozdział 35. Debugowanie programu (661)

  • Konfiguracja debuggera (663)
  • Konfiguracja projektu do debugowania (664)
  • Debugger sprzętowy (665)
  • Debugger programowy (symulator) (667)
    • Plik stymulacji (668)
  • Pułapki (674)
    • Pułapki na dane (678)
    • Punkty śledzenia (679)
    • Pułapki warunkowe (681)
  • Podgląd pamięci (683)
  • Podgląd stosu wywołań (684)
  • Określenie czasu symulacji (684)
  • Okno dezasemblera (685)
  • Okno podglądu zmiennych (686)
    • Łańcuchy formatujące (687)
  • Makrodefinicja ASSERT (688)
  • Przerwania w trakcie debugowania (692)
  • _delay_xx i symulator (693)

Skorowidz (695)

295518

Produkty z tej samej kategorii (16)