Język C dla mikrokontrolerów AVR. Od podstaw do zaawansowanych aplikacji
Wydawnictwo: Helion Autor: Tomasz Francuz Liczba stron: 568 Wymiary: 15.8 x 23.5 cm Oprawa: miękka ISBN: 978-83-246-3064-6
Czas dostawy: 2 - 4 dni Cena detaliczna:89,00 zł Nasza cena: 84,60 zł
Opis Język C dla mikrokontrolerów AVR. Od podstaw do zaawansowanych aplikacji: Przedstawiamy przebojowy duet - język C i mikrokontroler AVR!
Poznaj budowę i podstawy programowania mikrokontrolerów
Dowiedz się, jak do swoich celów wykorzystać język C
Naucz się rozwiązywać rzeczywiste problemy i tworzyć praktyczne rozwiązania
Mikrokontrolery AVR firmy Atmel stanowią dynamicznie rozwijającą się rodzinę układów. Dzięki niskiej cenie, dużym możliwościom i dostępności darmowych narzędzi od lat niezmiennie cieszą się dużą popularnością wśród hobbystów i osób profesjonalnie zajmujących się programowaniem mikrokontrolerów.
Pewnym utrudnieniem dla polskich użytkowników AVR jest brak literatury na temat wykorzystania do ich programowania języków wysokiego poziomu, takich jak C. Niniejsza książka jest próbą wypełnienia tej luki. W sposób syntetyczny pokazuje różnice pomiędzy programowaniem w języku C komputerów klasy PC i mikrokontrolerów. Omawia programowanie peryferii dostępnych w mikrokontrolerach AVR w języku C, bibliotekę standardową oraz jej rozszerzenia znane jako AVR-libc. Dzięki temu nawet osoby w niewielkim stopniu znające podstawy języka C będą mogły bez problemów "przesiąść się" na programowanie mikrokontrolerów AVR. Z drugiej strony książka opisuje zaawansowane techniki programowania, związane z obsługą bootloadera, zabezpieczaniem i szyfrowaniem kodu aplikacji oraz realizacją najpowszechniej stosowanych protokołów wymiany danych pomiędzy urządzeniami opartymi na mikrokontrolerach i komputerami PC. Porusza także tematy związane ze specyfiką pisania aplikacji na mikrokontrolery oraz wyszukiwaniem i usuwaniem błędów.
Podstawy programowania mikrokontrolerów AVR
Warsztat pracy programisty AVR
Wprowadzenie do języka C na AVR
Budowa programu i jego części składowe
Korzystanie z zasobów sprzętowych mikrokontrolera
Używanie rejestrów i różnych rodzajów pamięci
Zastosowania przetwornika ADC
Obsługa wyświetlaczy LCD
Korzystanie z interfejsów
Zapewnianie bezpieczeństwa kodu
Programowanie mikrokontrolerów jeszcze nigdy nie było tak proste!
Spis treści Język C dla mikrokontrolerów AVR. Od podstaw do zaawansowanych aplikacji: Wstęp (11)
Kody przykładów (12)
Schematy (12)
Wymagane części (12)
Rozdział 1. Instalacja środowiska i potrzebnych narzędzi (15)
Instalacja WinAVR (16)
Instalacja AVR Studio (17)
Systemy GNU/Linux (18)
AVR Studio (19)
Pierwsza aplikacja (21)
Dodawanie plików do projektu (25)
Programy narzędziowe (27)
Linker (27)
Program avr-size (31)
Program avr-nm (32)
Program avr-objcopy (33)
Program make (36)
Pliki wynikowe (43)
Biblioteki (46)
Projekt biblioteki (47)
Tworzenie biblioteki (48)
Dołączanie biblioteki do programu (49)
Funkcje "przestarzałe" (50)
Nadpisywanie funkcji bibliotecznych (50)
Usuwanie niepotrzebnych funkcji i danych (51)
Rozdział 2. Programowanie mikrokontrolera (53)
Podłączenie - uwagi ogólne (53)
Problemy (55)
Programatory ISP (55)
Budowa programatora (56)
Programator USBASP (59)
Kilka procesorów w jednym układzie (59)
Programatory JTAG (60)
Programator JTAGICE (61)
Programator JTAGICE mkII (62)
Kilka procesorów w jednym układzie (62)
AVR Dragon (63)
Programatory HW i równoległe (63)
Tryb TPI (64)
Programowanie procesora w AVR Studio (64)
Programowanie przy pomocy narzędzi dostarczonych przez firmę Atmel (65)
Program AVRDUDE (67)
Program PonyProg (70)
Fusebity i lockbity w AVR-libc (70)
Lockbity (71)
Fusebity (71)
Sygnatura (74)
Lockbity w AVR-libc (74)
Fusebity w AVR-libc (75)
Rozdział 3. Podstawy języka C na AVR (77)
Arytmetyka (77)
Proste typy danych (77)
Arytmetyka stałopozycyjna (81)
Arytmetyka zmiennopozycyjna (87)
Operacje bitowe (95)
Reprezentacja binarna liczb (95)
Operacja iloczynu bitowego (96)
Operacja sumy bitowej (97)
Operacja sumy wyłączającej (98)
Operacja negacji bitowej (99)
Operacje przesunięć bitowych (100)
Zasięg zmiennych (100)
Zmienne globalne (101)
Zmienne lokalne (102)
Modyfikator const (103)
Wskaźniki (104)
Tablice (109)
Funkcje (112)
Przekazywanie parametrów przez wartość i referencję (114)
Wywołanie funkcji (114)
Rekurencyjne wywołania funkcji (115)
Słowa kluczowe (116)
Operatory (116)
Instrukcje sterujące (120)
Preprocesor (123)
Dyrektywa #include (124)
Dyrektywy kompilacji warunkowej (124)
Dyrektywa #define (126)
Pliki nagłówkowe i źródłowe (127)
Definicja a deklaracja (128)
Słowo kluczowe static (129)
Słowo kluczowe extern (130)
Dyrektywa inline (132)
Modyfikator register (136)
Rozdział 4. Sekcje programu (141)
Sekcje danych (142)
Sekcja .text (142)
Sekcja .data (142)
Sekcja .bss (143)
Sekcja .eeprom (143)
Sekcje zawierające kod programu (144)
Podsekcje .init[0-9] (144)
Podsekcje .fini[0-9] (145)
Sekcje specjalne (146)
Sekcje tworzone przez programistę (146)
Umieszczanie sekcji pod wskazanym adresem (147)
Rozdział 5. Kontrola rdzenia i zarządzanie poborem energii (149)
Źródła sygnału RESET (149)
Power-on Reset (150)
Zewnętrzny sygnał RESET (151)
Brown-out Detector (151)
Układ Watchdog (152)
Zarządzanie poborem energii (156)
Usypianie procesora (157)
Wyłączanie układu BOD (157)
Wyłączanie podsystemów procesora (158)
Preskaler zegara (159)
Inne sposoby minimalizowania poboru energii (160)
Rozdział 6. Dynamiczna alokacja pamięci (163)
Alokacja pamięci w bibliotece AVR-libc (164)
Funkcja malloc (166)
Funkcja calloc (166)
Funkcja realloc (166)
Funkcja free (168)
Wycieki pamięci i błędne użycie pamięci alokowanej dynamicznie (169)
Jak działa alokator (171)
Wykrywanie kolizji sterty i stosu (172)
Metoda I - własne funkcje alokujące pamięć (173)
Metoda II - sprawdzanie ilości dostępnej pamięci (173)
Metoda III - marker (173)
Metoda IV - wzór w pamięci (173)
Metoda V - wykorzystanie interfejsu JTAG (176)
Rozdział 7. Wbudowana pamięć EEPROM (177)
Zapobieganie uszkodzeniu zawartości pamięci EEPROM (178)
Kontrola odczytu i zapisu do pamięci EEPROM (179)
Odczyt zawartości komórki pamięci (180)
Zapis do komórki pamięci (180)
Dostęp do EEPROM z poziomu AVR-libc (181)
Deklaracje danych w pamięci EEPROM (182)
Funkcje realizujące dostęp do pamięci EEPROM (183)
Inne funkcje operujące na EEPROM (185)
Techniki wear leveling (186)
Rozdział 8. Dostęp do pamięci FLASH (189)
Typy danych związane z pamięcią FLASH (190)
Odczyt danych z pamięci FLASH (191)
Dostęp do pamięci FLASH ᡸ kB (192)
Rozdział 9. Interfejs XMEM (193)
Wykorzystanie zewnętrznej pamięci SRAM w programie (197)
Konfiguracja I - w pamięci zewnętrznej jest tylko sekcja specjalna (198)
Konfiguracja II - wszystkie sekcje w pamięci zewnętrznej, stos w pamięci wewnętrznej (199)
Konfiguracja III - w pamięci zewnętrznej umieszczona jest tylko sterta (201)
Konfiguracja IV - w pamięci zewnętrznej sterta i segment zdefiniowany przez programistę (202)
Konfiguracja V - w pamięci zewnętrznej znajduje się stos (208)
Pamięć ROM jako pamięć zewnętrzna (208)
Rozdział 10. Dostęp do 16-bitowych rejestrów IO (211)
Dostęp do 16-bitowego rejestru ADC (211)
Dostęp do 16-bitowych rejestrów timerów (213)
Rozdział 11. Opóźnienia (217)
Rozdział 12. Dostęp do portów IO procesora (221)