Mikrokontrolery AVR Język C. Podstawy programowania
- Dodaj recenzję:
- Kod: 2990
- Producent: Atnel
- Autor: Mirosław Kardaś
- Rok wydania: 2013, wydanie drugie poprawione i uzupełnione
- ISBN: 978-83-931797-2-5
- Liczba stron: 520
- Oprawa: twarda
- Format: 16,5x23,5cm
-
-
Najniższa cena 30 dni przed zmianą: 176,00 zł brutto
- szt.
- Cena netto: 170,48 zł 179,00 zł
Opis
Publikacja skierowana jest do elektroników i hobbystów, którzy chcą szybko, w oparciu o interesujące przykłady, zaznajomić się z językiem C przeznaczonym dla mikrokontrolerów AVR oraz nauczyć się samodzielnie tworzyć dla nich oprogramowanie.
Materiał zawarty w książce został podzielony jest na trzy części. Pierwsza obejmuje tematykę związaną z budową mikrokontrolerów, druga zawiera wykład dotyczący podstaw języka, trzecią natomiast stanowi szereg ćwiczeń wraz z kodami źródłowymi, wskazówkami oraz komentarzami.
Lekcje video - to olbrzymia pomoc dydaktyczna. Dzięki nim, oraz dzięki zainstalowanym już na płycie wersjom profesjonalnego środowiska programistycznego jakim jest ECLIPSE, czytelnik zyskuje możliwość rozpoczęcia niemal natychmiast pracy z całym materiałem z książki. Obce stają się problemy związane z poszukiwaniem środowiska, z jego instalacją, i wszystkim co wiąże się z przebrnięciem przez pierwsze podstawowe zagadnienia aby tylko udało się uruchomić jak najszybciej swój własny pierwszy wymarzony program na mikrokontrolerze.
Spis treści
Przedmowa / 7
Wstęp / 8
1. Zaczynamy / 9
1.1. Pierwszy, „pusty” program w C / 9
1.2. Od programu do procesora / 11
1.2.1. Kompilacja / 11
1.2.2. Środowisko / 13
1.2.3. Programator sprzętowy / 14
1.2.4. Programowanie procesora / 15
1.2.5. Platforma sprzętowa / 17
2. Procesory AVR / 19
2.1. Informacje ogólne / 19
2.2. Programowanie ISP / 22
2.3. Sposoby taktowania procesorów / 24
2.3.1. Wewnętrzny oscylator / 25
2.3.2. Zewnętrzny rezonator kwarcowy / 26
2.3.3. Zewnętrzny oscylator RC / 26
2.3.4. Zewnętrzny generator / 27
2.4. Zagadnienia związane z zasilaniem / 27
2.5. Układ resetu mikrokontrolera AVR / 29
2.6. Wewnętrzne moduły procesorów AVR / 29
2.6.1. Pamięć FLASH, RAM, EEPROM / 30
2.6.2. Przerwania / 34
2.6.3. Timery sprzętowe 37
2.6.3.1. Podstawowe tryby pracy timerów / 39
2.6.3.1.1. Tryb zwykłego licznika / 39
2.6.3.1.2. Tryb CTC / 41
2.6.3.1.3. Tryb PWM / 43
2.6.4. Przetwornik ADC / 46
2.6.5. Moduł komparatora analogowego / 48
2.6.6. Moduł UART/USART (czyli RS232) / 49
2.6.7. Moduł SPI / 50
2.6.8. Moduł TWI (czyli I2C) / 51
2.6.9. Watchdog / 52
2.6.10. Tryby oszczędzania energii / 52
2.6.11. FUSE BITS (ustawienia konfiguracji AVR) / 53
2.6.12. LOCK BITS (zabezpieczenia AVR) / 54
2.6.13. Bootloader – niesamowite możliwości / 55
3. Podstawy języka C / 57
3.1. Zagadnienia ogólne / 57
3.1.1. Komentarze / 57
3.1.2. Definicja a deklaracja / 58
3.1.3. Wyrażenia logiczne (warunki) / 59
3.2. Najważniejsze instrukcje 60
3.2.1. Instrukcja warunkowa if, else / 60
3.2.2. Pętla while / 63
3.2.3. Pętla do… while / 64
3.2.4. Pętla for / 64
3.2.5. Instrukcja break / 66
3.2.6. Instrukcja switch / 67
3.2.7. Instrukcja continue / 69
3.2.8. Nawiasy klamrowe / 70
3.2.9. Instrukcja goto / 71
3.3. Typy / 71
3.3.1. Systematyka typów języka C / 73
3.3.1.1. Typy złożone / 76
3.3.1.2. Zakres widoczności zmiennych / 77
3.3.1.3. Typ void / 79
3.3.1.4. Specyfikator const / 80
3.3.1.5. Specyfikator volatile / 81
3.3.1.6. Specyfikator register / 82
3.3.1.7. Instrukcja typedef / 82
3.3.1.8. Typy wyliczeniowe enum / 84
3.3.2. Stałe w języku C / 87
3.3.2.1. Stałe jako liczby całkowite / 87
3.3.2.2. Stałe jako liczby zmiennoprzecinkowe / 88
3.3.2.3. Stałe znakowe / 88
3.3.2.4. Stałe tekstowe, stringi / 90
3.4. Operatory / 91
3.4.1. Arytmetyczne / 91
3.4.1.1. Modulo, czyli % / 91
3.4.1.2. Inkrementacja i dekrementacja ++ – – / 93
3.4.1.3. Operator przypisania = / 94
3.4.2. Operatory logiczne / 95
3.4.2.1. Operatory relacji / 95
3.4.2.2. Suma || oraz iloczyn && logiczny / 96
3.4.2.3. Negacja – wykrzyknik ! / 97
3.4.2.4. Operatory bitowe / 97
3.4.3. Pozostałe operatory przypisania / 104
3.4.4. Operator pobierania adresu & / 105
3.4.5. Wyrażenie warunkowe ? : / 105
3.4.6. Operator sizeof( ) / 106
3.4.7. Priorytety operatorów / 107
3.4.8. Operatory rzutowania / 108
3.5. Funkcje*** / 109
3.5.1. Wynik działania funkcji – jak to działa? / 113
3.5.2. Stos – ujarzmianie „potwora” / 115
3.5.3. Przekazywanie argumentów przez wartość / 116
3.5.4. Funkcje typu inline / 119
3.5.5. Zakresy widoczności nazw / 125
3.5.5.1. Zakres globalny / 125
3.5.5.2. Zakres lokalny i zmienne automatyczne / 126
3.5.5.3. Zmienne i funkcje statyczne / 127
3.5.6. Funkcje w różnych plikach projektu / 129
3.6. Preprocesor / 135
3.6.1. Dyrektywa #define / 136
3.6.2. Makrodefinicje / 138
3.6.3. Dyrektywa #undef / 139
3.6.4. Operator ## – sklejanie nazw / 139
3.6.5. Operator zamiany na string # / 140
3.6.6. Dyrektywy kompilacji warunkowej / 141
3.6.7. Dyrektywy #ifdef oraz #ifndef / 143
3.6.8. Dyrektywy #error i pozostałe / 144
3.6.9. Dyrektywa #include / 144
3.7. Tablice / 145
3.7.1. Tablice wielowymiarowe / 149
3.7.2. Tablica jako argument funkcji / 149
3.7.3. Tablice znakowe / 151
3.8. Wskaźniki / 156
3.9. Struktury, unie, pola bitowe / 168
3.9.1. Struktury / 168
3.9.2. Unie / 171
3.9.3. Połączenie struktury z unią / 173
3.9.4. Pola bitowe / 175
4. Warsztaty – zajęcia praktyczne / 177
4.1. Piny, porty – ustawienie kierunków / 177
4.2. Przygotowanie procesora do pracy / 182
4.3. Migocząca dioda LED / 184
4.4. Obsługa klawiszy typu micro-switch / 187
4.5. Multipleksowanie LED – przerwania / 192
4.6. Wyświetlacz LCD (hd44780) / 213
4.7. Sterowanie PWM (kolorowa dioda RGB) / 236
4.8. Pomiar napięcia za pomocą ADC / 250
4.8.1. Klawiatura analogowa / 261
4.8.2. Różnicowy pomiar napięcia – amperomierz / 262
4.9. Komunikacja RS232/ RS485 / 274
4.9.1. Inicjalizacja, kalibracja / 275
4.9.2. UART, przerwania, bufor cykliczny / 284
4.10. Odczyt – zapis magistrali I2C (RTC, EEPROM) / 296
4.10.1. RTC – sprzętowa obsługa I2C / 297
4.10.2. Programowa implementacja I2C / 305
4.10.3. EEPROM – I2C / 309
4.11. Moduł SPI / 311
4.11.1. Sprzętowa obsługa SPI / 312
4.11.2. Programowa obsługa SPI / 318
4.12. Magistrala 1Wire / 320
4.13. Odbiór kodów RC5 w podczerwieni / 329
4.14. Sterowanie silnikami DC / 340
4.15. Silnik krokowy unipolarny / 345
4.16. Silnik krokowy bipolarny / 352
4.17. Odczyt/zapis kart pamięci SD (FAT) / 357
4.17.1. FatFS / 359
4.17.2. PetitFS / 376
5. Fusebity – MkAvrCalculator / 386
5.1. Fusebity, Lockbity / 386
5.2. MkAvrCalculator / 391
6. Bootloader / 400
7. Projekty / 403
7.1. Pilot na podczerwień / 403
7.2. Moduł Bluetooth (BTM-112/222) / 411
7.3. Ściemniacz – płynna regulacja mocy 230 V / 418
7.4. Wstęp do systemów czasu rzeczywistego / 431
7.5. Obsługa stosu AVR – TCP/IP / 455
7.5.1. Karta sieciowa Ethernet – ENC28J60 / 458
7.5.2. Serwer HTTP / 461
7.5.3. Sterownik urządzeń – protokół UDP / 470
7.6. Programator USBASP / 497
8. Środowisko Eclipse / 499
Aneks 1. Nowe zasady w Atmel Toolchain / 508
Aneks 2. Jeszcze kilka porad / 511