PRZEDMOWA 7
1 WSTĘP 8
2 ZACZYNAMY 9
2.1 PIERWSZY „PUSTY" PROGRAM WC 9
2.2 OD PROGRAMU DO PROCESORA 10 2.2.1 KOMPILACJA 10 2.2.2 ŚRODOWISKO 12 2.2.3 PROGRAMATOR SPRZĘTOWY 13 2.2.4 PROGRAMOWANIE PROCESORA 14 2.2.5 URUCHAMIAMY AVR STUDIO 15 2.2.6 PLATFORMA SPRZĘTOWA 23
3 PROCESORYAVR 25
3.1 INFORMACJE OGÓLNE 25 3.2 PROGRAMOWANIE ISP 28
3.3 SPOSOBY TAKTOWANIA PROCESORÓW 29 3.3.1 WEWNĘTRZNY OSCYLATOR 30 3.3.2 ZEWNĘTRZNY REZONATOR KWARCOWY 30 3.3.3 ZEWNĘTRZNY OSCYLATOR RC 31 3.3.4 ZEWNĘTRZNY GENERATOR 32
3.4 ZAGADNIENIA ZWIĄZANE Z ZASILANIEM 32 3.5 UKŁAD RESETU MIKROKONTROLERA AVR 34
3.6 WEWNĘTRZNE MODUŁY PROCESORÓW AVR 34 3.6.1 PAMIĘĆ FLASH, RAM, EEPROM 34 3.6.2 PRZERWANIA 38 3.6.3 TIMERY SPRZĘTOWE 40 3.6.3.1 PODSTAWOWE TRYBY PRACY TIMERÓW 42 3.6.3.1.1 Tryb zwykłego LICZNIKA 42 3.6.3.1.2 Tryb CTC -jeden z najważniejszych 44 3.6.3.1.3 Tryb PWM 45
3.6.4 PRZETWORNIK ADC 48 3.6.5 MODUŁ KOMPARATORA ANALOGOWEGO 50 3.6.6 MODUŁ UART/USART, (CZYLI RS232) 51 3.6.7 MODUŁ SPI 52 3.6.8 MODUŁ TWI, (CZYLI I2C) 52 3.6.9 WATCHDOG 53 3.6.10 TRYBY OSZCZĘDZANIA ENERGII 53 3.6.11 FUSE BITS (USTAWIENIA KONFIGURACJI AVR) 54 3.6.12 LOCK BITS (ZABEZPIECZENIA AVR) 55 3.6.13 BOOTLOADER - NIESAMOWITE MOŻUmaÓn 56
4 PODSTAWY JĘZYKA C ..58
4.1 ZAGADNIENIA OGÓLNE 58 4.1.1 KOMENTARZE ...58 4.1.2 DEFINICJA A DEKLARACJA 59 4.1.3 WYRAŻENIA LOGICZNE (WARUNKI] 60
4.2 NAJWAŻNIEJSZE INSTRUKCJE 60 4.2.1 INSTRUKCJA WARUNKOWA IF, ELSE 60 4.2.2 PĘTLA WHILE 63 4.2.3 PĘTLA DO..WHILE 64 4.2.4 PĘTLA FOR (,4 4.2.5 INSTRUKCJA BREAK 66 4.2.6 INSTRUKCJA SWITCH 66 4.2.7 INSTRUKCJA CONTINUE 68 4.2.8 NAWIASY KLAMROWE 69 4.2.9 INSTRUKCJA GOTO 69
4.3 TYPY 70 4.3.1 SYSTEMATYKA TYPÓW JĘZYKA C. 71 4.3.1.1 TYPY ZŁOŻONE 74 4.3.1.2 ZAKRES WIDOCZNOŚCI ZMIENNYCH 76 4.3.1.3 TYP VOID 77 4.3.1.4 SPECYFIKATOR CONST 78 4.3.1.5 SPECYFIKATOR VOLATILE 79 4.3.1.6 SPECYFIKATOR REGISTER 80 4.3.1.7 INSTRUKCJA TYPEDEF 80 4.3.1.8 TYPY WYLICZENIOWE ENUM 82 4.3.2 STAŁE W JĘZYKU C 85 4.3.2.1 STAŁE JAKO LICZBY CAŁKOWITE 85 4.3.2.2 STAŁE JAKO LICZBY ZMIENNOPRZECINKOWE 86 4.3.2.3 STAŁE ZNAKOWE 86 4.3.2.4 STAŁE TEKSTOWE, STRINGI 88
4.4 OPERATORY 89 4.4.1 ARYTMETYCZNE 89 4.4.1.1 MODULO, CZYLI % 89 4.4.1.2 INKREMENTACJA I DEKREMENTACJA ++ -- 91 4.4.1.3 OPERATOR PRZYPISANIA = 92 4.4.2 OPERATORY LOGICZNE 93 4.4.2.1 OPERATORY RELACJI 93 4.4.2.2 SUMA // ORAZ ILOCZYN && LOGICZNY. 94 4.4.2.3 NEGACJA - WYKRZYKNIK ! 95 4.4.2.4 OPERATORY BITOWE 95 4.4.3 POZOSTAŁE OPERATORY PRZYPISANIA 102 4.4.4 OPERATOR POBIERANIA ADRESU & 102 4.4.5 WYRAŻENIE WARUNKOWE ?: 103 4.4.6 OPERATOR SIZEOFQ 104 4.4.7 PRIORYTETY OPERATORÓW 105 4.4.8 OPERATORY RZUTOWANIA 106
4.5 FUNKCJE *** 107 4.5.1 WYNIK DZIAŁANIA FUNKCJI -JAK TO DZIAŁA? 110 4.5.2 STOS - UJARZMIANIE "POTWORA" 112 4.5.3 PRZEKAZYWANIE ARGUMENTÓW PRZEZ WARTOŚĆ 114 4.5.4 FUNKCJE TYPU INLINE 116 4.5.5 ZAKRESY WIDOCZNOŚCI NAZW 123
4.5.5.1 ZAKRES GLOBALNY 123 4.5.5.2 ZAKRES LOKALNY I ZMIENNE AUTOMATYCZNE 123 4.5.5.3 ZMIENNE I FUNKCJE STATYCZNE 124 4.5.6 FUNKCJE W RÓŻNYCH PLIKACH PROJEKTU 126
4.6 PREPROCESOR 132 4.6.1 DYREKTYWA #DEFINE 132 4.6.2 MAKRODEFINICJE 134 4.6.3 DYREKTYWA #UNDEF. 135 4.6.4 OPERATOR ## - SKLEJANIE NAZW 136 4.6.5 OPERATOR ZAMIANY NA STRING # 136 4.6.6 DYREKTYWY KOMPILACJI WARUNKOWEJ 137 4.6.7 DYREKTYWY #IFDEFORAZ #IFNDEF 139 4.6.8 DYREKTYWY #ERROR I POZOSTAŁE 140 4.6.9 DYREKTYWA ^INCLUDE 140
4.7 TABLICE 141 4.7.1 TABLICE WIELOWYMIAROWE 144 4.7.2 TABLICA JAKO ARGUMENT FUNKCJI 145 4.7.3 TABLICE ZNAKOWE 147
4.8 WSKAŹNIKI 153
4.9 STRUKTURY, UNIE, POLA BITOWE 164 4.9.1 STRUKTURY 164 4.9.2 UNIE 167 4.9.3 POŁĄCZENIE STRUKTURY Z UNIĄ 168 4.9.4 POLA BITOWE 171
5 WARSZTATY - ZAJĘCIA PRAKTYCZNE 173
5.1 PRZYGOTOWANIE PROCESORA DO PRACY 173 5.2 MIGOCZĄCA DIODA LED 174 5.3 OBSŁUGA KLAWISZY TYPU MICRO-SWITCH 177 5.4 MULTIPLEKSOWANIE LED - PRZERWANIA 182 5.5 WYŚWIETLACZ LCD (HD44780) 202 5.6 STEROWANIE PWM (KOLOROWA DIODA RGB] 223
5.7 POMIAR NAPIĘCIA ZA POMOCĄ ADC 235 5.7.1 KLAWIATURA ANALOGOWA 246 5.7.2 RÓŻNICOWY POMIAR NAPIĘCIA - AMPEROMIERZ 246
5.8 KOMUNIKACJA RS232 / RS485 257 5.8.1 INICJALIZACJA, KALIBRACJA 257 5.8.2 UART, PRZERWANIA, BUFOR CYKLICZNY 266
5.9 ODCZYT-ZAPIS MAGISTRALI I2C (RTC, EEPROM) 277 5.9.1 RTC - SPRZĘTOWA OBSŁUGA I2C 278 5.9.2 PROGRAMOWA IMPLEMENTACJA I2C 285 5.9.3 EEPROM - I2C 289
5.10 MODUŁ SPI 291 5.10.1 SPRZĘTOWA OBSŁUGA SPI 291 5.10.2 PROGRAMOWA OBSŁUGA SPI 297
5.11 MAGISTRALA IWIRE 299 5.12 ODBIÓR KODÓW RC5 w PODCZERWIENI 307 5.13 STEROWANIE SILNIKAMI DC 316 5.14 SILNIK KROKOWY UNIPOLARNY 320 5.15 SILNIK KROKOWY BIPOLARNY 326
5.16 ODCZYT/ZAPIS KART PAMIĘCI SD (FAT) 330 5.16.1 FATFS 333 5.16.2 PETITFS 348
6 FUSEBITY - MKAVRCALCULATOR 356
6.16.1 FUSEBITY, LOCKBITY 356 6.16.2 MKAVRCALCULATOR 360
7 BOOTLOADER 368
8 PROJEKTY 371
8.1 PILOT NA PODCZERWIEŃ 371 8.2 MODUŁ BLUETOOTH (BTM-112/222) 379 8.3 SCIEMNIACZ - PŁYNNA REGULACJA MOCY 230V 384 8.4 WSTĘP DO SYSTEMÓW CZASU RZECZYWISTEGO 395
8.5 OBSŁUGA STOSU AVR - TCP/IP 417 8.5.1 KARTA SIECIOWA ETHERNET - ENC28J60 419 8.5.2 SERWER HTTP 422 8.5.3 STEROWNIK URZĄDZEŃ - PROTOKÓŁ UDP 430
8.6 PROGRAMATOR USBASP 454
9 ŚRODOWISKO ECLIPSE 455
|