Spis treści
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)
- 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)
- Konfiguracja pinu IO (221)
- Manipulacje stanem pinów IO (225)
- Zmiana stanu portu na przeciwny (225)
- Ustawianie linii IO (226)
- Zerowanie linii IO (226)
- Makrodefinicja _BV() (227)
- Użycie pól bitowych (227)
- Synchronizator (228)
- Przykłady praktyczne (230)
- Sterowanie wyświetlaczem 7-segmentowym (230)
- Podłączenie przycisków (232)
- Enkoder obrotowy (237)
- Klawiatura matrycowa (242)
Rozdział 13. Rejestry IO ogólnego przeznaczenia (245)
- Wykorzystanie innych rejestrów jako GPIOR (246)
Rozdział 14. Przerwania (249)
- Obsługa przerwań (251)
- sei()/cli() (254)
- Atrybut naked i obsługa przerwań w asemblerze (254)
- Modyfikator volatile (257)
- Atomowość dostępu do danych (263)
- Funkcje reentrant (266)
- Przykłady praktyczne (268)
- Wyświetlanie multipleksowane (268)
- Wyświetlanie multipleksowane z regulacją jasności wyświetlacza (272)
- Obsługa przycisków (276)
- Obsługa enkodera (279)
- Klawiatura matrycowa (280)
Rozdział 15. Przetwornik analogowo-cyfrowy (283)
- Wybór napięcia referencyjnego (284)
- Multiplekser (285)
- Przetwornik ADC (285)
- Tryb pojedynczej konwersji (286)
- Tryb ciągłej konwersji (287)
- Wejścia pojedyncze i różnicowe (287)
- Wynik (288)
- Wyzwalacze (288)
- Blokowanie wejść cyfrowych (289)
- Przerwania ADC (289)
- Precyzyjne pomiary przy pomocy ADC (290)
- Nadpróbkowanie (291)
- Uśrednianie (292)
- Decymacja i interpolacja (292)
- Przykłady (292)
- Termometr analogowy LM35 (293)
- Klawisze (295)
Rozdział 16. Komparator analogowy (301)
- Funkcje dodatkowe (302)
- Blokowanie pinów (302)
- Wyzwalanie zdarzeń timera (302)
- Wybór wejścia komparatora (302)
- Wyzwalanie przetwornika ADC (303)
Rozdział 17. Timery (305)
- Sygnał taktujący (306)
- Wewnętrzny sygnał taktujący (306)
- Zewnętrzny sygnał taktujący (308)
- Licznik (308)
- Układ porównywania danych (309)
- Moduł przechwytywania zdarzeń zewnętrznych (310)
- Eliminacja szumów (311)
- Komparator jako wyzwalacz zdarzenia ICP (311)
- Tryby pracy timera (312)
- Tryb prosty (312)
- Tryb CTC (315)
- Tryby PWM (316)
- Układ ochronny (321)
- Modulator sygnału wyjściowego (322)
- Miernik częstotliwości i wypełnienia (323)
- Realizacja RTC przy pomocy timera (326)
- Realizacja sprzętowa (327)
- Realizacja programowa (328)
Rozdział 18. Obsługa wyświetlaczy LCD (331)
- Obsługa wyświetlaczy alfanumerycznych (332)
- Funkcje biblioteczne (337)
- Definiowanie własnych znaków (342)
- Przykład - menu (345)
- Obsługa wyświetlaczy graficznych (354)
Rozdział 19. Interfejs USART (367)
- Interfejsy szeregowe (367)
- Interfejs USART (368)
- Interfejs USART mikrokontrolera AVR (371)
- Przykłady (375)
- Połączenie mikrokontroler - komputer PC (375)
- RS485 (383)
Rozdział 20. Interfejs SPI (391)
- Inicjalizacja interfejsu (394)
- Ustawienie pinów IO (395)
- Zegar taktujący (396)
- Procesor w trybie Master SPI (396)
- Procesor w trybie slave SPI (397)
- Przykłady (397)
- Połączenie AVR-AVR (397)
- Połączenie AVR - rejestr szeregowy (403)
- Interfejs USART w trybie SPI (408)
- Taktowanie magistrali SPI (409)
- Tryb pracy SPI (409)
- Format ramki danych (409)
- Konfiguracja interfejsu (410)
Rozdział 21. Interfejs TWI (413)
- Tryb multimaster (416)
- Inicjalizacja interfejsu (417)
- Procesor w trybie I2C master (417)
- Bity START i STOP (417)
- Podstawowe funkcje do współpracy z I2C (418)
- Współpraca z zewnętrzną pamięcią EEPROM (422)
- Współpraca z zewnętrzną pamięcią FRAM (427)
- Umieszczanie zmiennych w zewnętrznej pamięci EEPROM (427)
- Współpraca z zegarem RTC (431)
- Obsługa ekspandera IO PCF8574 (436)
- Procesor w trybie I2C slave (437)
Rozdział 22. Interfejs USI (447)
- 4-bitowy licznik i zegar (447)
- Przerwania USI (448)
- Zmiana pozycji pinów (449)
- Wykorzystanie interfejsu USI w trybie SPI (449)
- Tryb SPI master (451)
- Tryb SPI slave (452)
Rozdział 23. Interfejs USB (453)
- Zasilanie (454)
- Sygnały danych (455)
- VID i PID (456)
- Interfejs USB realizowany przy pomocy konwertera (458)
- Interfejs USB realizowany programowo (459)
- Połączenie elektryczne (460)
- Dostęp na PC (460)
- Programowy interfejs USB na AVR (461)
- Sprzętowy interfejs USB (464)
Rozdział 24. Interfejs 1-wire (465)
- Realizacja master 1-wire na AVR (469)
- Realizacja master 1-wire przy pomocy pinów IO (469)
- Realizacja master 1-wire przy pomocy interfejsu USART (472)
- Wysokopoziomowe funkcje obsługi 1-wire (477)
- Termometr cyfrowy DS1820 (480)
Rozdział 25. Bootloader (483)
- Pamięć NRWW i RWW (483)
- Bity konfiguracyjne bootloadera (485)
- Konfiguracja lockbitów z poziomu aplikacji (486)
- Programowanie pamięci FLASH (487)
- Wykorzystanie przerwań w kodzie bootloadera (489)
- Usuwanie tablicy wektorów przerwań (490)
- Skrócenie tablicy wektorów przerwań (491)
- Start bootloadera (496)
- Wykorzystanie dodatkowego przycisku/zworki (496)
- Wykorzystanie markerów w pamięci EEPROM (497)
- Oczekiwanie na specjalny znak w wybranym kanale komunikacji (498)
- Start aplikacji (499)
- Współdzielenie kodu aplikacji i bootloadera (499)
- Wywoływanie funkcji bootloadera w procesorach ATMega256x (501)
- Wywoływanie funkcji obsługi przerwań zawartych w kodzie bootloadera (505)
- Współdzielenie zmiennych pomiędzy aplikacją a bootloaderem (505)
- Mikrokontrolery AVR z wbudowanym bootloaderem (507)
Rozdział 26. Kontrola integralności programu (509)
- Suma kontrolna (509)
- CRC (511)
- Automatyczne generowanie CRC (514)
Rozdział 27. Bezpieczeństwo kodu (517)
- Metody łamania zabezpieczeń (517)
- Bezpieczne uaktualnianie aplikacji (518)
- Nota AVR231 - AES Bootloader (519)
- Ustawienie bitów konfiguracyjnych (524)
- Przygotowanie aplikacji (526)
- Wczytywanie uaktualnienia (527)
Rozdział 28. Łączenie kodu w C i asemblerze (529)
- Słowo kluczowe asm (530)
- Typy operandów (531)
- Dostęp do portów IO (533)
- Dostęp do danych wielobajtowych (533)
- Dostęp do wskaźników (534)
- Lista modyfikowanych rejestrów (535)
- Wielokrotne użycie wstawki asemblerowej (535)
- Pliki .S (536)
- Wykorzystanie rejestrów w asemblerze (537)
- Przykłady (541)
Rozdział 29. Optymalizacja i debugowanie programu (543)
- Optymalizacja programu (543)
- Opcje kompilatora związane z optymalizacją (545)
- Atrybuty optymalizacji (548)
- Debugowanie programu (551)
- Rozpoczęcie sesji debugera (553)
- Zaawansowane sterowanie przebiegiem wykonywanej aplikacji (556)
Skorowidz (559)
|