AVR. Praktyczne projekty - Helion
ISBN: 978-83-246-7877-8
stron: 632, Format: 158x235, okładka: miękka
Data wydania: 2013-09-05
Księgarnia: Helion
Cena książki: 77,40 zł (poprzednio: 129,00 zł)
Oszczędzasz: 40% (-51,60 zł)
Programowanie mikrokontrolerów to nic trudnego! Czas się o tym przekonać!
- Poznaj mikrokontrolery AVR z rodziny XMEGA
- Naucz się praktycznie programować je w języku C
- Zdobądź doświadczenie w stosowaniu układów AVR
Układy AVR przebojem wdarły się na rynek mikrokontrolerów. Szybko zdobyły serca hobbystów i profesjonalistów - zdecydowały o tym niska cena, ogromne możliwości i wydajność obliczeniowa oraz prostota używania i dostępność darmowych narzędzi, które ułatwiają programowanie tych układów. Szczególnie dużym uznaniem wśród użytkowników mikrokontrolerów cieszą się układy należące do rodziny XMEGA, jednak do tej pory brak było na polskim rynku publikacji opisujących ich architekturę, programowanie i zastosowanie.
Lukę tę doskonale wypełnia książka „AVR. Praktyczne projekty ”, której autor postawił sobie za cel szczegółowe omówienie problemów związanych z programowaniem mikrokontrolerów XMEGA, z uwzględnieniem modułów, które nie występują w układach należących do innych rodzin AVR. Jeśli posiadasz już podstawowe umiejętności w zakresie programowania mikrokontrolerów, pozycja ta umożliwi Ci praktyczne rozwinięcie talentów w tej dziedzinie - samodzielnie zrealizujesz m.in. projekt zegara, analizatora logicznego i wiele innych!
To doskonała pozycja zarówno dla czytelników pierwszej książki Tomasza Francuza „Język C dla mikrokontrolerów AVR. Od podstaw do zaawansowanych aplikacji”, jak i dla osób, które opanowały podstawy programowania mikrokontrolerów we własnym zakresie.
- Architektura układów AVR XMEGA
- Warsztat pracy programisty mikrokontrolerów
- Tworzenie projektów i zarządzanie nimi
- Sposoby pisania efektywnego kodu
- Korzystanie z różnych typów danych
- Wykonywanie operacji wejścia-wyjścia
- Zarządzanie pamięcią mikrokontrolera
- Sterowanie pracą zegara
- Obsługa przerwań i system zdarzeń
- Używanie timerów i liczników
- Sterowanie urządzeniami zewnętrznymi
- Praktyczne przykłady zastosowań mikrokontrolerów
Dowiedz się, co można osiągnąć za pomocą języka C i układów AVR!
Przeczytaj kompleksową recenzję książki na portalu Mikrokontrolery.blogspot.com >>
Osoby które kupowały "AVR. Praktyczne projekty", wybierały także:
- Arduino. Kurs video. Poziom pierwszy. Podstawowe techniki dla własnych projektów elektronicznych 99,00 zł, (44,55 zł -55%)
- Elektronika. Od analizy symbolicznej do oblicze 99,00 zł, (49,50 zł -50%)
- Elektronika. Projekty dla pasjonat 49,90 zł, (24,95 zł -50%)
- Elektronika bez oporu. Uk 59,90 zł, (29,95 zł -50%)
- Jak sztuczna inteligencja zmieni twoje 69,00 zł, (34,50 zł -50%)
Spis treści
AVR. Praktyczne projekty -- spis treści
Rozdział 1. Wstęp, czyli nowi członkowie rodziny AVR (11)
- Przykłady do książki (12)
- Mikrokontrolery XMEGA (12)
- Errata (14)
- XMEGA a inne AVR-y (15)
- Kompilator (15)
- Nowe peryferia (16)
Rozdział 2. Jak zacząć, czyli instalacja środowiska (21)
- Xplained jako płyta rozwojowa (22)
- Instalacja Xplained w systemie (22)
- Instalacja XMEGA z bootloaderem klasy DFU (25)
- Programowanie układów XMEGA (25)
- Wczytywanie firmware za pomocą FLIP (26)
- Bootloader firmy Atmel (28)
- Podstawowe opcje programu batchisp (28)
- Interfejs JTAG (32)
- Programowanie z wykorzystaniem interfejsu PDI (34)
- Programatory (34)
- AVRISP mkII (35)
- JTAGICE mkII (35)
- JTAGICEIII (36)
- AVROne! (36)
- AVR Dragon (36)
- Programowanie i debugowanie procesorów XMEGA (43)
- Odsprzęganie zasilania (44)
- Instalacja potrzebnego oprogramowania (44)
- Atmel Studio 6 - podstawy (45)
- Programowanie z poziomu AS6 - dlaczego warto korzystać z plików w formacie elf (53)
Rozdział 3. Organizacja i zarządzanie projektem (55)
- Komentarze (55)
- Nazewnictwo (57)
- Literały (59)
- Podział kodu na pliki (61)
- Widoczność funkcji (66)
- Widoczność zmiennych (66)
- Podkatalogi (67)
- Podział funkcji (69)
- Zmienne globalne (70)
- Systemy wersjonowania (74)
- Serwer SVN na własnym komputerze (75)
- Jak korzystać z SVN (78)
- Praca z SVN (81)
- Uwagi końcowe (84)
- Inne ułatwienia (85)
- Jak pisać lepsze programy? (86)
Rozdział 4. Jak tworzyć lepszy i efektywniejszy kod (89)
- Włączenie optymalizacji (90)
- Długość typów (91)
- Zmienne globalne i zmienne lokalne (93)
- Modyfikator register (94)
- Użycie globalnych rejestrów ogólnego przeznaczenia (97)
- Wykorzystanie innych rejestrów jako GPIOR (99)
- Inicjalizacja zmiennych globalnych (99)
- Położenie zmiennych w pamięci (99)
- Optymalizacja pętli (100)
- Optymalizacja funkcji (101)
- Optymalizacja funkcji main (101)
- Optymalizacja prologów i epilogów funkcji (101)
- Optymalizacja przekazywania parametrów funkcji (102)
- Optymalizacja zwracania wyników funkcji (105)
- Dodatkowe atrybuty funkcji (106)
- Inne (110)
- Eliminacja martwego kodu (111)
- Konstruktory i destruktory (114)
Rozdział 5. Jak uporządkować chaos, czyli złożone typy danych i listy (117)
- Tablice (118)
- Struktury (119)
- Deep copy i shallow copy (123)
- Wskaźniki i struktury (126)
- Struktury anonimowe (127)
- Inicjalizacja pól struktury (128)
- Unie (129)
- Pola bitowe (130)
- Struktury a optymalizacja programu (131)
- Listy (135)
- Listy jednokierunkowe (136)
- Listy dwukierunkowe (140)
- Listy XOR (142)
- Bufory (148)
- Bufor pierścieniowy (149)
- Kolejki FIFO/LIFO (152)
- Stos (152)
Rozdział 6. Koniec bałaganu, czyli o nazwach rejestrów i układów peryferyjnych (155)
- Struktury opisujące mikrokontrolery XMEGA (159)
- Nazwy rejestrów (162)
- Nazwy bitów (162)
Rozdział 7. Lepiej i prościej, czyli porty IO procesora na sterydach (167)
- Piny wejściowe i wyjściowe (168)
- Konwersja poziomów logicznych pomiędzy układami pracującymi z różnymi napięciami zasilającymi (171)
- Łączenie wyjścia procesora z układem pracującym z napięciem 5 V (171)
- Zastosowanie aktywnego konwertera (174)
- Konwersja z napięcia wyższego na niższe (174)
- Dzielnik rezystorowy (176)
- Użycie do konwersji napięć buforów scalonych (177)
- Bufor dwukierunkowy stosowany w magistralach typu open drain (178)
- Kontrola nad portami procesora (181)
- Piny wejściowe i wyjściowe (182)
- Synchronizator (184)
- Konfiguracja sterownika pinu (186)
- Konfiguracja totem-pole (186)
- Konfiguracja Pull up/down (187)
- Konfiguracja bus keeper (188)
- Konfiguracja wired-AND (189)
- Konfiguracja wired-OR (191)
- Odwracanie wyjść IO (192)
- Kontrola szybkości opadania i narastania zboczy (193)
- Kontrola zdarzeń związanych z pinem (193)
- Rejestr kontrolny portu (194)
- Atomowa modyfikacja stanu pinów i wsparcie dla RMW (196)
- Alternatywne funkcje pinu (199)
- Porty wirtualne (200)
- Przekazywanie rejestru jako parametru funkcji (202)
- Remapowanie wyjść IO (203)
Rozdział 8. Kontroler NVM - jak prosto i przyjemnie dobrać się do pamięci (205)
- Pamięć EEPROM i związane z nią operacje (206)
- Dostęp do EEPROM z poziomu AVR-libc (208)
- Dostęp do EEPROM za pomocą bezpośredniego dostępu do kontrolera NVM (213)
- Techniki wear leveling (219)
- Rozdzielenie kasowania i zapisu pamięci (221)
- Dostęp do EEPROM z wykorzystaniem tokenów (224)
- EEPROM i awaria zasilania (232)
- Problem atomowości przy dostępie do EEPROM (244)
- Zapis do EEPROM z użyciem przerwań (244)
- Zapobieganie uszkodzeniu zawartości pamięci EEPROM (246)
- Dostęp do pamięci FLASH (246)
- Typy danych związane z pamięcią FLASH (248)
- Odczyt danych z pamięci FLASH (250)
- Dostęp do FLASH w kompilatorze avr-gcc 4.7 i wyższych - named address spaces (252)
- Wskaźniki wykorzystujące przestrzenie adresowe (254)
- Typy 24-bitowe (258)
Rozdział 9. Potrzebuję więcej mocy - słów kilka o konfiguracji zegara (259)
- Rejestry kontrolne zegarów (260)
- Konfiguracja zegara (262)
- Źródła zegara (263)
- Odblokowywanie źródła zegara (270)
- Układ PLL (270)
- DFLL (272)
- Układ monitorowania zegara zewnętrznego (275)
- Zmiana źródła zegara i jego częstotliwości (277)
- Blokowanie ustawień zegara (277)
- Preskalery zegara (278)
- Uwagi (281)
- Kondensatory odsprzęgające (282)
Rozdział 10. Przerwania i kontroler przerwań (285)
- Przerwania (285)
- Czym są przerwania? (285)
- Przerwania maskowalne (286)
- Przerwania niemaskowalne (287)
- Źródła przerwań (287)
- Konfiguracja i obsługa przerwań (288)
- Czas odpowiedzi na żądanie przerwania (288)
- Funkcja obsługi przerwania (289)
- Wektory przerwań (290)
- Puste wektory przerwań (292)
- Puste przerwania (293)
- Współdzielenie kodu przez przerwania (294)
- Atrybut naked i obsługa przerwań w asemblerze (295)
- Poziomy przerwań (297)
- Przerywanie przerwań (300)
- Priorytety przerwań (302)
- Priorytet dynamiczny (302)
- Globalna flaga zezwolenia na przerwanie (303)
- Przerwanie niemaskowalne (304)
- Rejestr stanu kontrolera przerwań (304)
- Modyfikator volatile (305)
- Zmiana kolejności instrukcji (307)
- Atomowość dostępu do danych (308)
- Instrukcje atomowej modyfikacji pamięci (311)
- Dostęp do wielobajtowych rejestrów IO (314)
- Funkcje reentrant (314)
- Rejestry IO ogólnego przeznaczenia (316)
Rozdział 11. System zdarzeń (319)
- Rejestr multipleksera kanału zdarzeń (320)
- Zaawansowane funkcje kanału zdarzeń (322)
- Filtr cyfrowy (322)
- Dekoder kwadraturowy (322)
- Enkoder kwadraturowy z indeksem (331)
- Programowe sterowanie zdarzeniami (332)
- Zdarzenia jako sygnały sterujące układami zewnętrznymi (333)
- Inne funkcje rejestru (334)
Rozdział 12. Timery i liczniki (337)
- Co to jest licznik? (337)
- Źródła zegara i preskaler (338)
- Typy i funkcje liczników (340)
- Licznik typu 0/1 (341)
- Piny wyjściowe licznika (350)
- Licznik typu 2 (351)
- Timery typu 4/5 (353)
- Buforowanie (354)
- Kontrola nad licznikiem (357)
- Kaskadowe łączenie liczników (358)
- Rejestr tymczasowy TEMP (359)
- Wykorzystanie PWM do generowania sygnałów analogowych (361)
- Przykład - generowanie napięcia o zmiennej amplitudzie (363)
- Przykład - generowanie dowolnego przebiegu (364)
- PWM i przerwania (369)
- A może DMA? (371)
- Rozszerzenie zwiększające rozdzielczość (374)
- Tryb HiRes dla licznika typu 2 (377)
Rozdział 13. Kontroler DMA (379)
- Przesyłanie pamięć-pamięć (383)
- Odwracanie danych (384)
- Przesyłanie nakładających się bloków pamięci (385)
- Wypełnianie pamięci wzorcem (388)
- Przesyłanie pamięć-rejestr IO (389)
- Wyzwalacze (392)
- Praca buforowa (395)
- Priorytety kanałów DMA (396)
- Przerwania DMA (397)
- Błąd transmisji DMA (397)
- Przerwanie końca transakcji (398)
Rozdział 14. LED-y - co z nich można wycisnąć? (399)
- Taśmy LED-owe (399)
- Trochę o właściwościach oka, czyli RGB w praktyce (403)
- Program sterujący (404)
- Wyświetlacze LED 7-segmentowe (407)
- Licznik LED (412)
- Matryce LED (416)
- Projekt PCB i zasilanie (421)
- Dobór napięcia zasilającego matrycę (422)
- Regulacja prądu diod (423)
- Układ z matrycą dwukolorową (423)
- Sterowanie matrycą (425)
- PWM inaczej, czyli jak uzyskać odcienie kolorów (433)
Rozdział 15. Układy zegarowe w praktyce (437)
- RTC czy... RTC? (438)
- 16-bitowy układ RTC (438)
- Synchronizacja dostępu do rejestrów RTC (441)
- Rejestry PER i COMP (442)
- RTC w trybie uśpienia (445)
- 32-bitowy układ RTC (445)
- Generator sygnału zegarowego (445)
- Rejestry PER i COMP (445)
- Rejestr CNT (446)
- Przykładowy program kalendarzowy (446)
- Linuksowy marker czasowy (447)
- Konwersja czasu (447)
- Czas drogą radiową, czyli DCF77 (451)
- Trochę więcej o DCF77 (452)
- Dekodowanie danych (454)
- Moduł odbiornika DCF77 (454)
- Przykład (455)
- Układ podtrzymywania zasilania (462)
- Dobór źródła zasilania awaryjnego (463)
- Wykorzystanie baterii (463)
- Superkondensatory (463)
- Akumulatory (464)
- Podtrzymanie zasilania dla całego procesora (465)
- Układ zapasowego zasilania bateryjnego (465)
Rozdział 16. Budujemy zegar z budzikiem, czyli skończona maszyna stanów w praktyce (469)
- FSM oparta na switch/case (471)
- FSM oparta na tablicach (474)
- Zegar z alarmem (477)
- Jeszcze o maszynach stanu (489)
Rozdział 17. Komunikacja na różne sposoby, czyli USART w praktyce (491)
- Elektryczna realizacja interfejsu USART (492)
- Format transmisji danych (494)
- Szybkość transmisji (496)
- Terminal (496)
- Podgląd transmisji danych (497)
- Wirtualny port szeregowy (499)
- Konfiguracja interfejsu (500)
- Konfiguracja pinów IO (501)
- Konfiguracja formatu ramki danych (502)
- Funkcje dodatkowe interfejsu (502)
- Ustawienie szybkości interfejsu (503)
- Kontrola poprawności danych (508)
- Transmisja danych (509)
- Realizacja transmisji przez pooling (509)
- Wykorzystanie przerwań (512)
- Wykorzystanie DMA (517)
- Równoczesny dostęp do USART z wielu "wątków" (525)
- Dostęp do USART z wykorzystaniem strumieni (527)
- Metoda get (528)
- Metoda put (528)
- Otwieranie strumienia (529)
- Tryb MPCM (530)
Rozdział 18. Wizualizacja danych (535)
- Atmel Data Visualizer (535)
- Format danych (537)
- Struktury wykorzystywane przez ADV (540)
- Ultradźwiękowy pomiar odległości (543)
- Moduły cyfrowe (544)
- Własny moduł (548)
- Budujemy analizator stanów logicznych (550)
- Sprzęt (551)
- Protokół komunikacji (553)
- Implementacja protokołu (555)
- Jak szybko próbkować? (560)
- Klient (564)
- Uwagi praktyczne (566)
Rozdział 19. Wykorzystanie podczerwieni do transmisji danych (569)
- Modulacja IR (570)
- Porozmawiajmy z pilotem TV (572)
- Część sprzętowa, czyli odbiornik IR (572)
- Część programowa, czyli standardy kodowania (574)
- Standard NEC i pokrewne (575)
- RC5 i Motorola (581)
- Kod RC5 (587)
- Inne standardy kodowania (592)
- Nadajnik IR (592)
- Inżynieria odwrotna - dekodujemy sygnał pilota aparatu Canon (595)
- Transmisja danych (597)
- Budujemy pakiet danych (600)
- Sprzętowy generator CRC (602)
- CRC liczone programowo (604)
- Transmisja pakietowa (605)
- Uniwersalny pilot (608)
- Interfejs IrDA i IRCOM (613)
Skorowidz (615)