Jezyk C dla mikrokontrolerow AVR Od podstaw do zaawansowanych aplikacji jcmikr


Język C dla
Idz do
mikrokontrolerów AVR.
" Spis treści
Od podstaw do
" Przykładowy rozdział
" Skorowidz
zaawansowanych aplikacji
Autor: Tomasz Francuz
Katalog książek
ISBN: 978-83-246-3064-6
Format: 158×235, stron: 568
" Katalog online
" Zamów drukowany
Przedstawiamy przebojowy duet  język C i mikrokontroler AVR!
katalog
" Poznaj budowę i podstawy programowania mikrokontrolerów
Twój koszyk
" Dowiedz się, jak do swoich celów wykorzystać język C
" Naucz się rozwiązywać rzeczywiste problemy i tworzyć praktyczne rozwiązania
" Dodaj do koszyka
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
Cennik i informacje
mikrokontrolerów.
Pewnym utrudnieniem dla polskich użytkowników AVR jest brak literatury na temat wykorzystania
" Zamów informacje
do ich programowania języków wysokiego poziomu, takich jak C. Niniejsza książka jest próbą
o nowościach
wypełnienia tej luki. W sposób syntetyczny pokazuje różnice pomiędzy programowaniem
" Zamów cennik
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
Czytelnia
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,
" Fragmenty książek
zabezpieczaniem i szyfrowaniem kodu aplikacji oraz realizacjÄ… najpowszechniej stosowanych
online
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
Kontakt
" Korzystanie z interfejsów
" Zapewnianie bezpieczeństwa kodu
Helion SA
Programowanie mikrokontrolerów jeszcze nigdy nie było tak proste!
ul. Kościuszki 1c
44-100 Gliwice
tel. 32 230 98 63
e-mail: helion@helion.pl
© Helion 1991 2011
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
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
4 J zyk C dla mikrokontrolerów AVR. Od podstaw do zaawansowanych aplikacji
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
Spis tre ci 5
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 >64 kB .............................................................................. 192
6 J zyk C dla mikrokontrolerów AVR. Od podstaw do zaawansowanych aplikacji
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
Spis tre ci 7
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
Wp yw na piny IO .................................................................................................. 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
8 J zyk C dla mikrokontrolerów AVR. Od podstaw do zaawansowanych aplikacji
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
Przyk ad ................................................................................................................. 440
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
Spis tre ci 9
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
Rozdzia 2.
Programowanie
mikrokontrolera
Po wygenerowaniu plików wynikowych nale y ich zawarto umie ci w pami ci mikro-
kontrolera. Dzi ki temu po restarcie procesor b dzie móg rozpocz wykonywanie
programu. Procesory AVR dysponuj mo liwo ci programowania  w uk adzie przy
pomocy interfejsu ISP, cz mo e by programowana poprzez interfejsy JTAG,
debugWire, PDI, TPI, a w przypadku procesorów posiadaj cych interfejs USB mo na
tak e programowa procesor poprzez wbudowany bootloader. W tym ostatnim przy-
padku nie da si jednak zmienia konfiguracji fusebitów. Ka da z metod programowania
ma swoje zalety i wady.
Pod czenie  uwagi ogólne
Ka dy programator czy si z uk adem docelowym przy pomocy dedykowanych wypro-
wadze . Dla programatorów szeregowych jest to zwykle 4  5 wyprowadze , dla rów-
noleg ych znacznie wi cej. Wykorzystanie wyprowadze mikrokontrolera do progra-
mowania ogranicza mo liwo ich wykorzystania do innych celów. Najlepiej, je li
takie wyprowadzenia nie b d wykorzystywane do niczego innego  w uk adzie b d
one pod czone wy cznie do gniazda cz cego z programatorem. Jednak w uk adach
posiadaj cych niewielk liczb wyprowadze nie zawsze jest to mo liwe. St d te
powinni my pami ta , aby pod czone do tych wyprowadze urz dzenia nie obci a y
ich zbytnio (w trybie programowania b d one obci a y wyj cie programatora). Z tego
powodu nie zaleca si pod cza do nich np. diod LED, nie nale y na tych liniach doda-
wa tak e kondensatorów, szczególnie o wi kszych pojemno ciach (>1 nF). Dodatkowo
je li jakie wyprowadzenie jest wej ciem (czyli wyj ciem uk adu programuj cego), nie
nale y czy do niego innych wyj  w takiej sytuacji w trakcie programowania
powstanie konflikt pomi dzy wyj ciem programatora a wyj ciem uk adu korzystaj -
cego z tego pinu.
54 J zyk C dla mikrokontrolerów AVR. Od podstaw do zaawansowanych aplikacji
Pami tajmy, e dla programatora nie ma znaczenia, jak w programie skonfigurowane
s piny wykorzystywane do programowania.
Programator na czas programowania wprowadza procesor w stan RESET, co wi e si
z wprowadzeniem wszystkich pinów IO w stan wysokiej impedancji.
Szczególn uwag nale y zwróci na pod czenie sygna u RESET. Aby wej w tryb
programowania, programator musi mie mo liwo wymuszenia na tej linii stanu
niskiego (lub +12 V w przypadku programatorów wysokonapi ciowych). W efekcie pro-
blem mo e wyst pi , je li w uk adzie u ywane s zewn trzne uk ady generuj ce RESET
lub monitoruj ce zasilanie. Przyk adowy schemat pod czenia procesora do progra-
matora ISP pokazano na rysunku 2.1.
Rysunek 2.1.
Przyk ad pod czenia
programatora ISP
do mikrokontrolera
ATMega88
W dalszych rozdzia ach ksi ki pokazane schematy, dla uproszczenia i wi kszej przej-
rzysto ci, nie b d ju zawiera y elementów pokazanych na schemacie z rysunku 2.1,
czyli gniazda ISP, kondensatorów odsprz gaj cych oraz po cze z zasilaniem
(Vcc i GND).
Aby pokazane w dalszej cz ci uk ady dzia a y poprawnie, nale y zapewni poprawne
po czenie elementów pokazanych na rysunku 2.1. Szczególnie istotne jest pod -
czenie w ka dym procesorze wszystkich wyst puj cych w nim wyprowadze zasilania
(Vcc i GND). Przy braku pod czenia niektórych wyprowadze uk ad mo e dzia a
Rozdzia 2. Programowanie mikrokontrolera 55
niestabilnie i stwarza problemy. Drugim istotnym elementem s kondensatory odsprz -
gaj ce C23 i C24. S to elementy, których zadaniem jest odsprz ganie zasilania, a ich
znaczenie ro nie wraz ze wzrostem stopnia skomplikowania uk adu.
Problemy
Najcz stsze problemy z zaprogramowaniem procesora:
1. W przypadku programowania w trybie ISP  zablokowanie procesora, poprzez
niew a ciw konfiguracj fusebitów.
2. Nieprawid owa cz stotliwo sygna u SCK (w przypadku programatorów ISP).
Je li podejrzewamy taki problem, nale y zmniejszy szybko programowania.
W adnym przypadku nie mo e ona przekroczy ź cz stotliwo ci taktowania
procesora.
3. Zbyt d ugi kabel cz cy programator z uk adem. Im d u szy kabel, tym wi ksze
ryzyko niepoprawnej pracy uk adu. Zwykle problem ten objawia si niestabiln
prac programatora.
4. B dne pod czenie sygna ów. Zawsze warto si upewni , e wszystkie sygna y
zosta y prawid owo po czone z odpowiednimi wyprowadzeniami procesora.
5. Pomy kowe pod czenie programatora nie do wyprowadze zwi zanych z ISP,
lecz do wyprowadze zwi zanych z interfejsem SPI (oznaczenia linii sygna owych
s podobne). Problem ten dotyczy g ównie procesorów ATMega128.
6. Wybór niew a ciwego programatora lub niew a ciwego trybu programowania.
7. Zablokowanie wykorzystywanego interfejsu (dotyczy g ównie próby
programowania przy wy czonym interfejsie JTAG lub próby programowania
przy pomocy ISP, z w czonym interfejsem debugWire).
Programatory ISP
Prawie ka dy procesor AVR dysponuje mo liwo ci programowania przy pomocy inter-
fejsu ISP (ang. In-system Programming Interface). Interfejs ten wykorzystuje do pro-
gramowania piny RESET, MISO, MOSI oraz SCK. Zwykle piny te pokrywaj si z analo-
gicznymi wyprowadzeniami interfejsu SPI, lecz nie zawsze tak jest. Jednym z takich
wyj tków jest procesor ATMega128. St d te zawsze nale y dok adnie sprawdzi , jakie
wyprowadzenia procesora wykorzystywane s do programowania przy pomocy inter-
fejsu ISP. Informacje o wykorzystanych wyprowadzeniach znajduj si w nocie katalo-
gowej procesora, w sekcji Memory Programming/Serial Downloading. Programatory ISP
maj znormalizowany uk ad sygna ów wyprowadzonych na z cze programuj ce, poka-
zany na rysunku 2.2.
Istniej dwa typy z cza ISP  jedno mniejsze, 6-pinowe, oraz wi ksze 10-pinowe.
Odst p pomi dzy pinami wynosi 2,54 mm, chocia w nowszych konstrukcjach Atmela
56 J zyk C dla mikrokontrolerów AVR. Od podstaw do zaawansowanych aplikacji
Rysunek 2.2.
Rozk ad sygna ów
standardowych
programatorów.
Kwadratem oznaczono
wyprowadzenie
o numerze 1
spotyka si rozstaw pinów 1,27 mm. Umo liwia to zmniejszenie rozmiarów z cza pro-
gramuj cego na p ytce. Pewnego omówienia wymaga przeznaczenie pinu oznaczonego
jako +Vcc. Do tego pinu nale y pod czy napi cie zasilaj ce uk ad. Napi cie z tego pinu
wykorzystywane jest przez programator do zasilania buforów wyj ciowych, dzi ki czemu
programator dostosowuje poziomy napi na pozosta ych pinach programatora do napi
panuj cych w programowanym uk adzie. Cz programatorów posiada tak e specjaln
zwork prze czaj c napi cie. W takiej sytuacji jedna z pozycji powoduje zasilenie
programatora z programowanego uk adu, w drugiej pozycji to programator zasila pro-
gramowany uk ad. Programator czy si z programowanym uk adem tak, jak pokazano
na rysunku 2.3.
Urz dzenie
Komputer Programator
programowane
Rysunek 2.3. Po czenie programowanego uk adu z programatorem i komputerem PC. Masy wszystkich
urz dze musz zosta po czone razem
cz c programator z komputerem i programowanym uk adem, nale y zwraca uwag
na potencja masy. W komputerach klasy PC, ze wzgl du na budow zasilacza, masa
(obudowa komputera) przy braku zerowania ma potencja ok. 115 V wzgl dem ziemi
(wynika to z istnienia w zasilaczu uk adu filtruj cego). W efekcie przy braku zerowania
komputera lub niepoprawnym zerowaniu mo e doj do uszkodzenia programatora lub
programowanego uk adu. Aby unikn takich przykrych niespodzianek, mo na zaopa-
trzy si w programator z optoizolowanymi wyj ciami, lecz jest to dodatkowy, spory
wydatek.
Budowa programatora
Programatory ISP s jednymi z najprostszych w budowie, w zwi zku z tym ka dy mo e
posk ada sobie taki programator, dos ownie z niczego. W szczególnie dobrej sytuacji
s tu u ytkownicy posiadaj cy komputery z wyprowadzonym portem równoleg ym.
W takiej sytuacji programator mo e by zwyk przej ciówk pomi dzy portem kom-
putera a gniazdem ISP. Uk ad taki jest niezwykle prosty, lecz niezalecany. Jakikolwiek
b d w po czeniach mo e bardzo atwo doprowadzi do uszkodzenia portu równoleg ego,
USB
USB
Rozdzia 2. Programowanie mikrokontrolera 57
dodatkowo jego niewielka wydajno pr dowa powoduje znaczne ograniczenie maksy-
malnej d ugo ci przewodu cz cego komputer z programowanym uk adem (w praktyce
do kilkunastu cm). St d znacznie lepszym rozwi zaniem jest to pokazane na rysunku 2.4.
Rysunek 2.4. Schemat prostego programatora ISP pod czanego do portu równoleg ego komputera
Jak wida , programator taki sk ada si z bufora 74XX244 (nie musi to by uk ad serii HC).
Jego wprowadzenie umo liwia znaczne wyd u enie przewodu cz cego komputer z pro-
gramatorem, nawet do 1 m i wi cej (nale y mie na uwadze, e zbyt d ugi przewód cz cy
nie jest zalecany i w pewnych okoliczno ciach mo e prowadzi do problemów z progra-
mowaniem). Wprowadzenie tego uk adu chroni tak e port równoleg y. W przypadku
b dnego pod czenia zasilania np. do pinów programatora uszkodzeniu ulegnie tylko
tani uk ad buforuj cy, ochraniaj c port równoleg y. Wykonanie takiego programatora
to koszt rz du kilku z otych, lecz ju za kilkana cie z otych mo na kupi programatory
bardziej rozbudowane, których zaletami s :
bezpo rednia wspó praca z AVR Studio;
mo liwo programowania uk adów zasilanych innym napi ciem ni 5 V;
wspó praca z portem USB mikrokontrolera.
Szczególnie ta ostania cecha jest po dana. Porty USB, w przeciwie stwie do równo-
leg ych, wyst puj praktycznie w ka dym urz dzeniu, lecz ich najwi ksz zalet jest
mo liwo czerpania energii z takiego portu. Stwarza to mo liwo nie tylko zasilania
samego programatora, ale tak e zasilania programowanego uk adu (tu jednak trzeba
mie na uwadze ograniczon do ok. 0,5 A wydajno pr dow portu USB).
58 J zyk C dla mikrokontrolerów AVR. Od podstaw do zaawansowanych aplikacji
Programator AVRISP
Jest to prosty programator z mo liwo ci pod czenia poprzez port szeregowy RS232
lub USB. Na rynku dost pne s liczne klony tego uk adu, w efekcie mo na go kupi ju
za kilkana cie z otych, co czyni go szczególnie interesuj cym dla amatora. W stosunku
do prostych programatorów, posiadaj cych tylko bufor, jego zalet jest mo liwo pro-
gramowania uk adów zasilanych napi ciem w granicach 2,7  5,5 V. Klasyczny progra-
mator AVRISP zasilany jest z urz dzenia programowanego, lecz jego wersje na USB
cz sto posiadaj zworki, umo liwiaj ce wybór ród a zasilania. Przy jego pomocy mo na
programowa szerok gam modeli procesorów AVR. Wyj tkiem jest tu tylko rodzina
AVR XMega oraz AVR32, wymagaj ce programatora AVRISP mkII. Programator ten
posiada wbudowany procesor, którego firmware kontroluje proces programowania. Wraz
z uaktualnianiem AVR Studio firmware ten te mo e zosta uaktualniony, w efekcie
poszerza si lista obs ugiwanych procesorów.
Programator ten jest rozwi zaniem tanim, lecz warto mie na uwadze, e obecnie nie
jest on ju praktycznie rozwijany przez firm Atmel. St d potencjalnie mog by pro-
blemy z jego wykorzystaniem z najnowszymi modelami procesorów.
Programator AVRISP mkII
Rozwi zaniem dla bardziej zaawansowanych amatorów i osób, które pó profesjonalnie
chc si zajmowa mikrokontrolerami AVR, jest programator AVRISP mkII. Równie
ten programator dost pny jest w postaci klonów, w efekcie mo na go kupi za cen
ok. 100  150 z . Jest to programator aktywnie wspierany przez firm Atmel, wspiera-
j cy wszystkie rodziny procesorów AVR ( cznie z procesorami XMega oraz AVR32).
Wspiera tak e procesory ATTiny, nieposiadaj ce interfejsu ISP, dzi ki mo liwo ci wyko-
rzystania interfejsu TPI.
Programator ten mo e programowa uk ady zasilane napi ciem od 1,8 do 5,5 V, dodat-
kowo mo na regulowa cz stotliwo sygna u zegarowego taktuj cego transmisj
w zakresie 50 Hz  8 MHz. Ma to istotn zalet w przypadku programowania uk a-
dów niskonapi ciowych, taktowanych z wolnych zegarów, np. kwarców zegarkowych
o cz stotliwo ci 32 768 Hz.
Maksymalna pr dko programowania wynika z ogranicze interfejsów szerego-
wych  cz stotliwo linii SCK nie mo e by wi ksza ni czterokrotno cz stotli-
wo ci taktuj cej rdze procesora.
Tak wi c wykorzystanie programatora AVRISP mkII umo liwia programowanie proce-
sorów taktowanych zegarem od 200 Hz wzwy .
Programator ten wspó pracuje z interfejsem USB, posiada tak e wyj cia zabezpieczone
przez zwarciem.
Rozdzia 2. Programowanie mikrokontrolera 59
Programator USBASP
Programator ten jest niezwykle popularny ze wzgl du na jego prostot oraz nisk cen .
Dodatkow zalet tego programatora jest wsparcie ze strony WinAVR oraz bardzo popu-
larnego programu AVRDude. Schemat tego programatora pokazano na rysunku 2.5.
Rysunek 2.5. Schemat programatora USBASP. Programator ten zawiera mikrokontroler steruj cy
procesem programowania uk adu docelowego. Dzi ki temu programator ten jest niezale ny od przebiegów
czasowych generowanych przez komputer. czno z komputerem nast puje poprzez z cze USB, st d te
programator czerpie zasilanie. Po zwarciu zworki JP1-2 mo liwe jest tak e zasilanie z portu USB uk adu
programowanego
Programator ten umo liwia tak e programowanie procesorów taktowanych zegarami
o niskiej cz stotliwo ci. Przy pomocy zworki JP3 mo na prze cza cz stotliwo linii
SCK z 375 kHz na 8 kHz, co umo liwia programowanie uk adów taktowanych kwarcem
zegarkowym o cz stotliwo ci 32 768 Hz. Zwarcie zworki JP1-1 umo liwia zaprogra-
mowanie lub uaktualnienie oprogramowania programatora poprzez jego z cze ISP.
Kilka procesorów w jednym uk adzie
Sporadycznie zdarza si , e na jednej p ytce znajduje si wi cej ni jeden procesor AVR
i ka dy powinien mie zapewnion mo liwo programowania. Najch tniej w takiej
sytuacji chcieliby my móc korzysta tylko z jednego gniazda programuj cego. Konfi-
guracja taka jest mo liwa, musimy tylko pami ta o spe nieniu pewnych dodatkowych
za o e . W takiej sytuacji sygna y z programatora (RESET, MISO, MOSI) powinny by
rozprowadzone do wszystkich mikrokontrolerów. Natomiast sygna SCK musi pozosta
60 J zyk C dla mikrokontrolerów AVR. Od podstaw do zaawansowanych aplikacji
rozdzielony. Przy takiej konfiguracji wyboru programowanego mikrokontrolera doko-
nuje si poprzez wybranie mikrokontrolera, do którego doprowadzony zostanie sygna SCK.
Uk ad taki mo e dzia a , poniewa aby procesor wszed w tryb programowania (a co za
tym idzie, linie MOSI i MISO sta y si aktywne), musi by spe nionych kilka za o e . Po
pierwsze, programator musi zapewni aktywno sygna u RESET. Dzi ki utrzymywaniu
go w stanie aktywnym wyprowadzenia wszystkich mikrokontrolerów przechodz w stan
wysokiej impedancji. Dzi ki temu nie zak ócaj one transmisji. Uaktywnienie trybu
programowania wymaga w takiej sytuacji doprowadzenia do wej cia SCK odpowied-
niego przebiegu. Poniewa przebieg taki zostanie doprowadzony wy cznie do wybra-
nego procesora, inne procesory pozostan nieaktywne, z wyprowadzeniami w stanie
wysokiej impedancji.
W przypadku gdy na p ytce znajduje si jeden wi kszy procesor i jeden lub wi cej
procesorów ze stosunkowo niewielk ilo ci pami ci FLASH, mo na rozwa y jeszcze
jedn mo liwo . Funkcj programatora mo e przej procesor  wi kszy , odpowied-
nio steruj c wyprowadzeniami odpowiedzialnymi za programowanie innych procesorów.
W takiej sytuacji ich przeprogramowanie wymaga wczytania do procesora kontroluj -
cego pozosta e odpowiedniego programu oraz zawarto ci pami ci FLASH pozosta ych
procesorów. Rozwi zanie takie jest stosunkowo proste, lecz wymaga takiego pod cze-
nia wszystkich mikrokontrolerów, aby ich wyprowadzenia programuj ce by y dost pne
dla procesora nadrz dnego.
Programatory JTAG
Programatory wykorzystuj ce interfejs JTAG s o wiele dro sze, ale oprócz mo liwo ci
programowania przy ich pomocy procesora oferuj tak e mo liwo debugowania.
Obecnie na rynku wyst puj dwie wersje programatora JTAG dla mikrokontrolerów
AVR  JTAGICE oraz JTAGICE II. Ten drugi cechuje si bardzo wysok cen
(ok. 700  1200 z ), ale oferuje mo liwo programowania wszystkich mikrokontrole-
rów AVR wyposa onych w interfejs JTAG. Za jego pomoc mo na tak e programo-
wa mikrokontrolery AVR32. Mo liwo ci programatora JTAGICE s skromniejsze,
ale za to jego cena jest niewiele wy sza ni programatora ISP. Programator ten czy
si z programowanym uk adem przy pomocy gniazda o innym rozk adzie sygna ów ni
w przypadku programatora ISP  rysunek 2.6.
Rysunek 2.6.
Rozk ad sygna ów
na z czu JTAG.
Pin 1 oznaczono
kwadratem
Interfejs JTAG wykorzystuje pi sygna ów: RESET, TCK, TMS, TDI oraz TDO. Do pinu 7 (VCC)
nale y doprowadzi napi cie zasilaj ce tylko w sytuacji, w której programator ma by
zasilany z uk adu. Je li programator ma w asne zasilanie, pin 7 mo na pozostawi
Rozdzia 2. Programowanie mikrokontrolera 61
niepod czony. Z kolei pin 4 dostarcza napi cia umo liwiaj cego programatorowi dosto-
sowanie poziomu napi na liniach RESET, TCK, TMS, TDI i TDO do napi panuj cych
w uk adzie. Na podstawie napi cia na tej linii programator wykrywa tak e pod czenie
do uk adu programowanego. Wyprowadzenia oznaczone jako NC nale y pozostawi
niepod czone.
Aby móc korzysta z tego trybu, procesor musi obs ugiwa interfejs JTAG, a fusebit
JTAGEN musi by zaprogramowany (mie warto 0).
Programowanie przy u yciu interfejsu JTAG ma liczne zalety:
Jest 3  4 razy szybsze w stosunku do programowania przy u yciu interfejsu ISP.
Podobnie, znacznie szybsze jest tak e programowanie pami ci EEPROM.
Umo liwia zmian fusebitów okre laj cych ród o sygna u zegarowego,
niezale nie od ich poprzednich warto ci. Interfejs JTAG sam generuje zegar
dla uk adu docelowego, st d wybranie nawet b dnych warto ci nie blokuje
mo liwo ci dalszego programowania (odmiennie ni w przypadku interfejsu
ISP).
Istnieje mo liwo czenia urz dze w konfiguracj daisy-chain, umo liwiaj c
programowanie wielu urz dze przy pomocy jednego z cza JTAG.
Istnieje mo liwo programowania nie tylko mikrokontrolerów AVR, ale tak e
innych uk adów kompatybilnych ze standardem JTAG (np. FPGA).
Niezwykle istotn zalet interfejsu JTAG jest mo liwo debugowania przy jego pomocy
programu w trakcie jego dzia ania w docelowym uk adzie elektronicznym.
Mo liwo taka jest wprost trudna do przecenienia, szerzej zostanie opisana w roz-
dziale 29.
Programator JTAGICE
Cena tego uk adu porównywalna jest z cen dobrego programatora ISP. Jest to wi c
propozycja dla hobbystów zdecydowanie powa niej my l cych o zaj ciu si budowaniem
uk adów w oparciu o mikrokontrolery AVR. Zastosowania tego programatora ogranicza
stosunkowo niewielka liczba wspieranych uk adów [ATmega16(L), ATmega162(L),
ATmega169(L or V), ATmega32(L), ATmega323(L), ATmega64(L), ATmega128(L)].
Lecz nawet pomimo tej wady warto rozwa y jego zakup, szczególnie je li jeste my
w posiadaniu p ytki rozwojowej zawieraj cej jeden z wy ej wymienionych procesorów.
Programowanie przy jego pomocy jest nie tylko szybsze, lecz przede wszystkim udo-
st pnia szerokie mo liwo ci debugowania uk adu w systemie. Dzi ki temu nawet je li
pisany program b dzie docelowo dzia a na innym typie procesora, atwiej jest napisa
aplikacj na jednym ze wspieranych przez JTAGICE procesorów, a nast pnie j tylko
zmodyfikowa dla potrzeb procesora docelowego. U ycie interfejsu JTAG umo liwia
nie tylko debugowanie samego programu, ale tak e sprawdzenie stanu wszystkich bloków
62 J zyk C dla mikrokontrolerów AVR. Od podstaw do zaawansowanych aplikacji
procesora, a tak e jego portów IO. Oprócz mo liwo ci sprawdzenia stanu mo na ich
stan tak e modyfikowa  w locie . U atwia to testowanie poprawno ci po cze elek-
trycznych na p ytce i poprawno ci monta u.
Programator JTAGICE mkII
Programator JTAGICE mkII jest rozwini ciem uk adu JTAGICE. Umo liwia on pro-
gramowanie wszystkich procesorów AVR wyposa onych w interfejs JTAG, w tym tak e
procesorów z rodziny AVR32. Ze wzgl du na cen tego programatora (przekraczaj ca
1000 z ) jest to raczej propozycja dla osób chc cych bardziej profesjonalnie zaj si
programowaniem i budowaniem uk adów w oparciu o mikrokontrolery. Funkcjonalnie
programator ten nie ró ni si od swojego poprzednika, udost pnia podobne mo liwo ci.
Oprócz programowania przez interfejs JTAG udost pnia tak e mo liwo programo-
wania z wykorzystaniem interfejsów PDI, debugWire, SPI oraz aWire. W efekcie za jego
pomoc mo na zaprogramowa praktycznie wszystkie procesory AVR.
Kilka procesorów w jednym uk adzie
Podobnie jak w przypadku ISP, tak e JTAG umo liwia wykorzystanie jednego z cza
do programowania kilku uk adów. Funkcja taka jest wpisana w specyfikacj proto-
ko u JTAG, wi c teoretycznie taka konfiguracja powinna by nawet atwiejsza w reali-
zacji. Tu, niestety, jak to zwykle bywa, napotykamy na problemy natury programowej.
Wi kszo dost pnego oprogramowania nie wspiera mo liwo ci wybierania procesora
w konfiguracji a cuchowej JTAG (ang. Daisy-chain JTAG mode). Sytuacja ta stop-
niowo si zmienia i cz oprogramowania dostarczonego przez firm Atmel wspiera tak
konfiguracj dla programatora AVRICE mkII. Schemat pod czenia interfejsów JTAG
w konfiguracji daisy-chain pokazano na rysunku 2.7. Linie TDI i TDO kolejnych proce-
sorów s po czone szeregowo.
Rysunek 2.7. Po czenie kilku uk adów AVR, wykorzystuj cych jedno z cze JTAG
Rozdzia 2. Programowanie mikrokontrolera 63
Inn mo liwo ci jest rozwi zanie analogiczne do pokazanego przy okazji programo-
wania ISP  po czenie równoleg e odpowiednich linii JTAG, z wyj tkiem linii SCK.
Wybór aktywnej linii SCK umo liwia wybór programowanego/debugowanego uk adu.
Korzystaj c z mo liwo ci konfiguracji daisy-chain, nale y mie na uwadze jeszcze jeden
problem  niektóre mikrokontrolery AVR maj b dn implementacj obs ugi JTAG,
uniemo liwiaj c zastosowanie konfiguracji daisy-chain. St d przed jej u yciem nale y
zawsze sprawdzi errat do noty katalogowej procesora, zgodn z jego modelem oraz
wersj uk adu.
AVR Dragon
Alternatyw dla wcze niej wymienionych programatorów, w tym dla drogiego JTA-
GICE mkII, jest uk ad AVR Dragon. W przeciwie stwie do wcze niejszych uk adów
jest on sprzedawany bez obudowy, z cz i kabli. Potrzebne z cza nale y wlutowa
samemu. Dzi ki temu jego cena jest niezwykle atrakcyjna  mo na go kupi w cenie
ok. 200  240 z . Niestety, brak wielu wbudowanych zabezpiecze czyni go nie-
zwykle podatnym na uszkodzenie. Aby tak mo liwo znacznie zmniejszy , nale y
samemu doda odpowiednie uk ady zabezpieczaj ce  np. uk ady buforuj ce wyj cia
programatora. Uk ad AVR Dragon umo liwia programowanie wszystkich mikrokon-
trolerów AVR dzi ki wyposa eniu go w interfejsy HVPP, HVSP, ISP, JTAG, PDI.
Umo liwia tak e debugowanie uk adu docelowego dzi ki interfejsom JTAG i debugWire.
Programowane uk ady mog by zasilane napi ciem z zakresu 1,8  5,5 V. Uk ad
AVR Dragon mo e tak e dostarcza dla nich napi cia zasilaj cego o nat eniu mak-
symalnie 300 mA.
Programatory HW i równoleg e
Programatory wysokonapi ciowe (HW, ang. High Voltage) oraz równoleg e s niezwykle
rzadko wykorzystywane. Programator wysokonapi ciowy wykorzystuje podobne sygna y
co programator ISP, lecz podczas programowania na wej ciu RESET procesora zamiast
stanu niskiego doprowadzane jest napi cie +12V. Dzi ki temu mo na programowa
procesory, w których przy pomocy fusebitu RSTDSBL wej cie RESET zosta o zablokowane.
Nie wszystkie procesory dysponuj mo liwo ci programowania wysokonapi ciowego.
W tym trybie programowania procesor wymaga doprowadzenia sygna ów pokazanych
w tabeli 2.1.
Tabela 2.1. Sygna y wykorzystywane do programowania w trybie wysokonapi ciowym
Sygna Kierunek Opis
SDI Wej cie Wej cie danych
SII Wej cie Wej cie instrukcji
SDO Wyj cie Wyj cie danych
SCI Wej cie Wej cie zegarowe
64 J zyk C dla mikrokontrolerów AVR. Od podstaw do zaawansowanych aplikacji
Programatory równoleg e wykorzystywane s jeszcze rzadziej. Ich potencjaln zalet
jest wi ksza szybko dzia ania, lecz do poprawnej pracy wymagaj pod czenia kilku-
nastu ró nych sygna ów. Zalet tego typu programatorów jest mo liwo programowania
procesora zablokowanego w wyniku przeprogramowania fusebitów odpowiedzialnych
za wybór zegara. Jest to mo liwe, poniewa w tym trybie programator generuje przebieg
zegarowy taktuj cy procesor, który jest doprowadzony do wej cia XTAL1.
Tryb TPI
Jest to uproszczony interfejs umo liwiaj cy programowanie najmniejszych procesorów
Atmel z serii ATTiny. U ywa on linii RESET oraz linii danych TPIDATA i zegara TPICLK.
W przypadku kiedy pin RESET jest wykorzystywany jako zwyk y pin IO, wej cie w tryb
TPI jest wymuszane poprzez podanie na ten pin napi cia +12 V. Protokó ten wspie-
rany jest przez najnowsze programatory, m.in. AVRISP mkII, AVR Dragon.
Programowanie procesora
w AVR Studio
Zdecydowanie naj atwiejsz opcj jest wykorzystanie do programowania zintegrowa-
nego rodowiska, jakim jest AVR Studio. Dzi ki temu mamy mo liwo , przy pomocy
jednego programu, pisa program, kompilowa go, debugowa (za pomoc interfejsów
sprz towych lub wbudowanego w AVR Studio symulatora), a efekt finalny przy pomocy
jednego przycisku wgrywa do pami ci procesora. Bezpo rednio AVR Studio wspiera
narz dzia dostarczane przez firm Atmel  programatory AVRISP, JTAGICE, Dragon.
Po pewnych zabiegach mo na tak e korzysta z innych programatorów.
Rozpocz cie procesu programowania w AVR Studio wymaga najpierw skonfigurowania
interfejsu programatora  czyli wybrania z listy programatora, który posiadamy, oraz
podania sposobu komunikacji z nim (rysunek 2.8). Opcj konfiguracji wybiera si
z menu Tools/Program AVR/Connect.
Rysunek 2.8.
Konfiguracja
programatora
w AVR Studio
 w powy szym
przyk adzie zosta
wybrany programator
AVRISP mkII,
pod czony
przez port USB
Rozdzia 2. Programowanie mikrokontrolera 65
Po udanej próbie nawi zania po czenia z programatorem wy wietlone zostanie kolejne
okno, z opcjami, jakie mo emy wybra . Opcje niewspierane przez dany typ programa-
tora nie b d dost pne (rysunek 2.9).
Rysunek 2.9.
Opcje dost pne
dla programatora
AVRISP MkII.
Poniewa programator
ten mo na czy
z uk adem
programowanym
przy pomocy ró nych
interfejsów, w a ciwy
tryb po czenia nale y
wybra w menu
Programming Mode
and Target Settings.
Dla tego programatora
nale y tak e okre li
cz stotliwo zegara
taktuj cego transmisj ,
pami taj c, e nie mo e
ona by wy sza ni ź
cz stotliwo ci zegara
taktuj cego rdze
procesora
W oknie konfiguracji mo na tak e ustawi konfiguracj fusebitów oraz lockbitów
(zak adki Fuse oraz LockBits)  rysunek 2.10.
W zak adce Program okre la si cie ki do plików zawieraj cych program, który chce-
my wczyta do mikrokontrolera (pliki musz by w formacie elf lub Intel HEX) 
rysunek 2.11.
Programowanie przy pomocy narz dzi
dostarczonych przez firm Atmel
Firma Atmel wraz z AVR Studio dostarcza wielu ró nych programów umo liwiaj cych
programowanie z linii polece przy pomocy programatorów kompatybilnych z proto-
ko ami firmy Atmel. S u one generalnie do automatyzacji procesu programowania
w przypadku programowania d u szych serii procesorów. W ród licznych programów na
szczególn uwag zas uguje program FLIP. Nie jest on dostarczany razem z AVR Studio,
lecz wymaga osobnego pobrania ze strony www.atmel.com i instalacji. W ród licznych
66 J zyk C dla mikrokontrolerów AVR. Od podstaw do zaawansowanych aplikacji
Rysunek 2.10.
Konfiguracja fusebitów
w AVR Studio.
W przypadku
z o onych operacji
(np. wyboru zegara)
zamiast wybiera
konfiguracj
poszczególnych
fusebitów, mo emy
pos u y si
rozwijalnymi listami
z mo liwymi
do wybrania opcjami.
W znacznym stopniu
ogranicza to mo liwo
pomy ki. Wybran
konfiguracj fusebitów
wprowadza si
do procesora
po naci ni ciu
przycisku Program
Rysunek 2.11.
W zak adce Program
okre la si cie ki
dost pu do plików
wykorzystywanych
w trakcie
programowania.
Najwygodniej jest
u y pliku w formacie
elf, gdy zawiera
on wszystkie niezb dne
do zaprogramowania
procesora dane.
Alternatywnie mo na
poda cie ki
do plików hex i eep,
zawieraj cych wsad
do zaprogramowania
pami ci FLASH
i EEPROM
Rozdzia 2. Programowanie mikrokontrolera 67
jego mo liwo ci jest tak e mo liwo programowania urz dze wyposa onych w bootlo-
ader kompatybilny ze specyfikacj Atmela dla urz dze klasy DFU (ang. Device Firmware
Update). Do tej klasy urz dze zalicza si m.in. procesory AVR wyposa one w sprz towy
interfejs USB. S one sprzedawane z firmowo wgranym bootloaderem, umo liwiaj -
cym wczytanie oprogramowania do pami ci FLASH i EEPROM mikrokontrolera.
Tryb DFU nie umo liwia zmiany fusebitów. W tym celu nale y pos u y si innym pro-
gramatorem.
Aby uruchomi wbudowany w urz dzenie bootloader, podczas wyprowadzenia urz -
dzenia ze stanu RESET nale y zewrze do masy pin HWB. Dzi ki temu zamiast programu
zostanie uruchomiony bootloader umo liwiaj cy wczytanie nowego oprogramowania.
Po pod czeniu programowanego uk adu do komputera przy pomocy USB i urucho-
mieniu bootloadera przy pomocy pinu HWB urz dzenie jest gotowe do programowania.
Aby klasa DFU by a rozpoznawana przez komputer, nale y zainstalowa sterowniki DFU
dostarczone przez firm Atmel.
Po uruchomieniu programu FLIP wybieramy z menu Device/Select; w efekcie ukazuje
si okno wyboru procesora (rysunek 2.12).
Rysunek 2.12.
Okno wyboru
procesora. B dzie
on programowany
przy pomocy
bootloadera
w trybie DFU
Po wyborze procesora klikamy na Open, co powoduje nawi zanie po czenia z progra-
mowanym uk adem. Nast pnie wczytujemy pliki do zaprogramowania (File/Load HEX),
wybieramy opcje programowania i weryfikacji uk adu i klikamy na przycisk Run, co
inicjuje proces uaktualniania oprogramowania (rysunek 2.13).
Program AVRDUDE
Jest to jeden z najpopularniejszych programów u ywanych do programowania mikrokon-
trolerów AVR. Jest on dostarczany wraz z pakietem WinAVR. Sam program AVRDUDE
jest aplikacj uruchamian z wiersza plece , parametry podaje si jako opcje wywo ania.
68 J zyk C dla mikrokontrolerów AVR. Od podstaw do zaawansowanych aplikacji
Rysunek 2.13.
Proces uaktualniania
oprogramowania
przy pomocy
programu FLIP
Aby uczyni go nieco bardziej przyjaznym, w Internecie dost pnych jest wiele graficz-
nych nak adek, umo liwiaj cych uzyskanie tych samych efektów przy pomocy prostego
interfejsu graficznego. Program AVRDUDE obs uguje nast puj ce programatory:
STK500, STK600,
AVRISP i AVRISP mkII,
AVRICE i AVRICE mkII,
proste programatory pod czane do wyj cia równoleg ego i szeregowego
komputera.
Program ten wspiera wszystkie protoko y transmisji u ywane przez firm Atmel. Nie-
stety, do programowania mo na pos u y si wy cznie plikami IntelHEX, gdy nie
wspiera on formatu elf. W efekcie musimy dysponowa oddzielnymi plikami zawiera-
j cymi obrazy pami ci FLASH, EEPROM, a tak e warto ciami numerycznymi fuse-
i lockbitów. Stwarza to pewne dodatkowe mo liwo ci pomy ki.
Program ten mo e pracowa w dwóch trybach  terminalowym oraz wywo ywany
z wiersza polece . Poni ej krótko pokazane zostan podstawowe opcje wywo ania,
umo liwiaj ce zaprogramowanie przy jego pomocy mikrokontrolera.
Parametry wywo ania:
-p procesor  jest to obowi zkowy parametr wywo ania programu. Okre la
on typ procesora pod czonego do programatora. List dost pnych typów mo na
wy wietli , wydaj c polecenie avrdude  p ?. W efekcie powinna wy wietli
si lista wspieranych typów procesorów.
Rozdzia 2. Programowanie mikrokontrolera 69
-B okres  parametr ten jest u ywany przy programowaniu za pomoc interfejsu
JTAG w trybie ISP. Umo liwia on okre lenie pr dko ci programowania poprzez
podanie okresu (w mikrosekundach) sygna u SCK. Np. avrdude  B 1 powoduje,
e linia SCK b dzie taktowana sygna em o cz stotliwo ci 1 MHz.
-c programator  okre la typ programatora, który ma zosta u yty
do programowania mikrokontrolera. List dost pnych typów mo na wy wietli
poleceniem avrdude  c ?. Na li cie tej nale y odnale u ywany programator.
Czasami dany programator wspiera ró ne protoko y programowania. W takiej sytu-
acji b dzie wyst powa na li cie wiele razy z sufiksami okre laj cymi wybrany tryb
programowania.
-F  powoduje, e program nie weryfikuje sygnatury uk adu z typem podanym
jako parametr  p. W nielicznych sytuacjach umo liwia to obej cie pewnych
problemów zwi zanych z uszkodzeniem sygnatury procesora, lecz normalnie
opcja ta nie powinna by u ywana.
-n  wykonuje wszystkie operacje, ale bez fizycznego zapisu do uk adu.
Jest to przydatne do testowania ró nych skryptów automatyzuj cych proces
programowania.
-O  przeprowadza kalibracj wewn trznego generatora RC zgodnie z opisem
z noty AVR053. Uzyskany w wyniku kalibracji bajt kalibracyjny jest zapisywany
do komórki pami ci EEPROM o adresie 0, sk d mo e zosta odczytany przez
program i u yty do kalibracji rejestru OSCCAL mikrokontrolera. Co prawda
operacja ta nie poprawia stabilno ci wewn trznego generatora RC, ale okre la
dok adniej jego cz stotliwo .
-U obszar:typ:plik[:format]  opcja ta przeprowadza operacj na wskazanym
obszarze (mo e to by operacja odczytu lub zapisu). Parametr obszar mo e
by jednym z symboli: eeprom, flash, fuse, hfuse, lfuse, efuse, lock. Okre la
on obszar podlegaj cy danej operacji, zgodnie z nazw podanych symboli.
Parametr typ okre la typ operacji: r  odczyt, w  zapis, v  weryfikacja,
Parametr plik okre la nazw pliku, z którego b d odczytywane dane
w przypadku operacji zapisu lub do którego b d zapisywane dane w przypadku
operacji odczytu. Ostatni parametr, format, okre la format pliku. Z licznych
formatów istotne s i  okre laj cy, e plik jest w formacie IntelHEX,
i m  okre laj cy, e parametr b dzie warto ci bezpo redni , podan w linii
wywo ania (najcz ciej u ywane do programowania fuse- i lockbitów).
Wywo anie:
avrdude -p m88 -u -U flash:w:test.hex -U eeprom:w:test.eep -U efuse:w:0xff:m -U
hfuse:w:0x89:m -U lfuse:w:0x2e:m
spowoduje zaprogramowanie procesora ATMega88 plikami test.hex i test.eep, których
zawarto zostanie umieszczona odpowiednio w pami ci FLASH i EEPROM mikro-
kontrolera. Dodatkowo warto fusebitów zostanie ustawiona na 0x2E89FF. Z kolei
wywo anie:
70 J zyk C dla mikrokontrolerów AVR. Od podstaw do zaawansowanych aplikacji
avrdude -c avrisp2 -P usb -p t26 -U flash:w:main.hex:i
powoduje zaprogramowanie procesora typu ATTiny26 plikiem main.hex, przy pomocy
programatora AVRISP mkII, pod czonego przez port USB, w trybie ISP.
Program PonyProg
Program PonyProg jest bardzo prostym programem umo liwiaj cym programowanie
ró nych uk adów przy pomocy prostych interfejsów pod czanych do portu równole-
g ego lub szeregowego komputera. Obs uguje on pliki Intel Hex. Program mo na pobra
ze strony http://www.lancos.com/prog.html. Oprócz programowania procesorów przy
jego pomocy mo na tak e programowa ró nego typu pami ci szeregowe. Po skonfigu-
rowaniu typu posiadanego programatora (opcja Setup/Interface Setup) nale y wybra
typ programowanego uk adu. Nast pnie z menu File wybieramy Open Program File oraz
Open Data File i wczytujemy uzyskane w trakcie kompilacji pliki z rozszerzeniem
hex i eep. Ostatni czynno ci jest zaprogramowanie procesora poleceniem Command/
Write All. PonyProg umo liwia tak e konfiguracj fuse- i lockbitów. W tym wzgl dzie
jego prostota prowadzi cz sto do b dów. Do dyspozycji mamy tylko pojedyncze fusebity,
których odpowiedni warto nale y ustali po przejrzeniu sekcji noty katalogowej
procesora po wi conej konfiguracji fusebitów.
Nale y pami ta , e podobnie jak w przypadku innych programów, fusebit zaprogra-
mowany oznacza fusebit o warto ci 0.
Po skonfigurowaniu fusebitów wybieramy opcj Write, co powoduje ich zapisanie do
procesora.
Fusebity i lockbity w AVR-libc
Biblioteka AVR-libc udost pnia wygodny sposób modyfikacji bitów konfiguracyjnych
procesora. Poniewa bity te nie mog by zmieniane programowo, aby taka konfigu-
racja by a mo liwa, potrzebne jest specjalne oprogramowanie wspieraj ce funkcje biblio-
teki AVR-libc. Zwykle wspieraj tak mo liwo programy, które jako ród o danych
do programowania procesora wykorzystuj pliki w formacie elf. W plikach w formacie
Intel HEX nie ma mo liwo ci umieszczenia informacji o konfiguracji fuse- i lockbitów;
w efekcie programatory wykorzystuj ce ten format nie wspieraj funkcji AVR-libc.
W takiej sytuacji pozostaje r czna konfiguracja tych bitów poprzez wybranie odpowied-
nich opcji programatora.
Programuj c lock- i fusebity, nale y pami ta , e warto ci jeden odpowiada fusebit
niezaprogramowany, natomiast warto ci 0  zaprogramowany.
Rozdzia 2. Programowanie mikrokontrolera 71
Aby fusebity i lockbity zosta y poprawnie skonfigurowane i umieszczone w wynikowym
pliku elf, nale y wybra w a ciwy typ procesora. B dne ustawienie typu procesora
mo e spowodowa jego zablokowanie na skutek próby wpisania nieprawid owej kon-
figuracji fuse- i lockbitów.
Lockbity
Lockbity zosta y dok adnie omówione w rozdziale 25. Ich funkcj jest ochrona pami ci
mikrokontrolera przed mo liwo ci jej odczytania przy pomocy programatora. Dzi ki
temu umieszczony w pami ci FLASH program po zaprogramowaniu lockbitów nie daje
si odczyta . Ich zaprogramowanie nie blokuje mo liwo ci komunikacji z procesorem,
przy próbie odczytu zwracane s warto ci b d ce kolejnymi adresami komórek pami ci
FLASH. Natomiast w aden sposób nie da si odczyta ich zawarto ci, mimo e pro-
gramator nie zasygnalizuje adnego b du. Raz zaprogramowane lockbity mo na ska-
sowa wy cznie razem z kasowaniem pami ci FLASH i EEPROM poleceniem Chip
Erase. W ten sposób odzyskujemy mo liwo programowania i odczytywania zawar-
to ci pami ci FLASH procesora, lecz jednocze nie tracimy zawarty w niej poprzednio
program. Zwykle w a ciwa konfiguracja lockbitów okre lana jest na ko cowym etapie
tworzenia urz dzenia. Nie ma sensu ich u ywa w trakcie pisania aplikacji.
Fusebity
Wszystkie procesory AVR posiadaj tzw. fusebity, umo liwiaj ce okre lenie konfiguracji
pocz tkowej procesora po w czeniu zasilania. W zale no ci od modelu procesora
dost pne fusebity mog si nieznacznie ró ni , oferuj c wi cej lub mniej opcji konfi-
guracyjnych. Poni ej przedstawiona zostanie krótko charakterystyka poszczególnych
fusebitów. Nale y pami ta , e nowa konfiguracja fusebitów zaczyna obowi zywa
dopiero po wyj ciu z trybu programowania procesora. Dzi ki temu je li przypadkowo
wprowadzono nieprawid ow konfiguracj fusebitów, to mo na j poprawi , o ile pro-
cesor nadal znajduje si w trybie programowania.
Fusebity BODLEVEL
S one odpowiedzialne za konfiguracj uk adu odpowiedzialnego za detekcj awarii
zasilania. Je li napi cie zasilaj ce procesor b dzie poni ej progu wyznaczonego war-
to ci fusebitów BODLEVEL, procesor utrzymywany b dzie w stanie resetu do czasu, a
napi cie wróci do warto ci prawid owych. Domy lnie ich konfiguracja odpowiada
zablokowanemu uk adowi detekcji awarii zasilania. W gotowym uk adzie w a ciwie
w ka dej sytuacji nale y w czy ten uk ad ochronny. Zapobiega to pracy procesora
przy napi ciach spoza specyfikacji, co mo e doprowadzi do nieprawid owej pracy rdze-
nia procesora i uk adów peryferyjnych. Cz sto spotykanym problemem przy wy czo-
nym uk adzie BOD jest uszkodzenie komórek pami ci EEPROM. W czenie uk adu
BOD praktycznie eliminuje ten problem. Uk ad BOD mo na wy cza okresowo w sys-
temach, w których pobór mocy jest szczególnie istotny. Jego wy czenie nieznacznie
zmniejsza pobór energii przez procesor. Szczegó owo zosta o to omówione w rozdziale
po wi conym trybom oszcz dzania energii.
72 J zyk C dla mikrokontrolerów AVR. Od podstaw do zaawansowanych aplikacji
Fusebit WDTON
Jego zaprogramowanie powoduje w czenie uk adu watchdoga. W takiej sytuacji uk ad
ten nie mo e zosta wy czony. O konsekwencjach w czenia uk adu watchdoga szerzej
napisano w rozdziale 5.
Fusebit EESAVE
Ma on znaczenie tylko podczas kasowania pami ci procesora przed programowaniem.
Jego zaprogramowanie powoduje zachowanie zawarto ci pami ci EEPROM, zawarto
pami ci FLASH nadal b dzie mog a by normalnie kasowana. Fusebit ten ma zastoso-
wanie w sytuacjach, w których wgrywana jest przy pomocy programatora nowa zawar-
to pami ci FLASH, a jednocze nie nowy program ma mie dost p do danych umiesz-
czonych w pami ci EEPROM przez program poprzedni. Poza sytuacj programowania
procesora przez programator, fusebit EESAVE nie ma znaczenia.
Fusebity BOOTSZ i BOOTRST
Ich znaczenie zosta o szerzej omówione w rozdziale 25.
Fusebit JTAGEN
Fusebit ten umo liwia wy czenie interfejsu JTAG. Domy lnie procesory sprzedawane
s z zaprogramowanym fusebitem JTAGEN (o ile posiadaj interfejs JTAG). Odblokowa-
nie uk adu JTAG powoduje przej cie kontroli nad pinami IO wspólnymi z tym
interfejsem, co jest cz st przyczyn pomy ek. Nad takimi pinami nie ma adnej
kontroli ze strony programu. Je li interfejs JTAG nie jest u ywany, mo na go wy czy ,
dzi ki czemu wykorzystywane przez niego piny IO zostan zwolnione i b d mog y
zosta wykorzystane w programie.
Fusebit SPIEN
Fusebit SPIEN odblokowuje interfejs ISP procesora. Domy lnie procesory s sprzeda-
wane z zaprogramowanym fusebitem SPIEN, dzi ki czemu mo na je programowa przy
pomocy programatorów szeregowych. Tego fusebitu nie mo na skasowa w trybie
programowania szeregowego  mo na to uczyni np. w trybie programowania poprzez
interfejs JTAG lub w trybie wysokonapi ciowym.
Fusebit CKDIV8
Okre la on cz stotliwo taktowania procesora. Domy lnie procesory sprzedawane s
z zaprogramowanym fusebitem CKDIV8, w efekcie zegar taktuj cy jest dzielony przez 8,
co prowadzi do cz stych pomy ek  np. wyliczone p tle opó niaj ce s 8-krotnie
d u sze. Jego zaprogramowanie powoduje wpisanie po resecie do rejestru preskalera
zegara (CLKPR) warto ci odpowiadaj cej podzia owi przez 8. Zamiast kasowa ten fusebit,
mo na programowo zmieni warto preskalera.
Rozdzia 2. Programowanie mikrokontrolera 73
Przyk adowe programy przedstawione w dalszej cz ci ksi ki zak adaj , e fusebit
CKDIV8 ma warto 1  poniewa nie jest to domy lna warto tego fusebitu, nale y
przed uruchomieniem aplikacji go przeprogramowa .
Fusebity SUT
Okre laj one liczb cykli zegara po w czeniu zasilania, po których procesor b dzie
wyprowadzony ze stanu reset. W wi kszo ci przypadków ich konfiguracja nie ma
znaczenia, tym bardziej e ich warto ci domy ln jest najd u szy mo liwy czas wyj-
cia z resetu. W przypadku kiedy zasilanie procesora szybko ulega po w czeniu stabi-
lizacji, czas ten mo na skróci .
Fusebit CKOUT
Powoduje on wyprowadzenie na wyj cie procesora CKOUT zbuforowanego zegara taktu-
j cego rdze . Dzi ki temu inne uk ady mog korzysta z zegara procesora, umo liwia
to tak e synchroniczn prac innych uk adów z procesorem. Domy lnie ten fusebit nie
jest zaprogramowany, w efekcie wyj cie CKOUT zachowuje si jak normalny pin portu IO.
Fusebity CKSEL
Okre laj one sposób generowania sygna u zegarowego dla procesora. Prawdopodob-
nie s to fusebity sprawiaj ce najwi cej k opotów, gdy ich nieprawid owe ustawienie
mo e doprowadzi do zablokowania procesora (niemo no dalszego programowania
w trybie ISP). Domy ln ich warto ci jest warto wybieraj ca jako ród o zegara
wewn trzny generator RC. W wielu przypadkach to domy lne ustawienie jest wystar-
czaj ce i nie ma potrzeby go zmienia . Potrzeba taka zachodzi, je li chcemy taktowa
procesor przy pomocy zewn trznego uk adu generuj cego zegar lub przy pomocy
kwarcu. Konfiguracja tych bitów jest zale na od procesora i przed ich zmian
nale y skonsultowa si z not katalogow u ywanego uk adu.
Je li zdarzy si nam wybra niew a ciwe ród o zegara, procesor mo na  uratowa  ,
doprowadzaj c zewn trzny przebieg zegarowy do wej cia XTAL1. Dzi ki temu mo liwe
b dzie nawi zanie komunikacji z programatorem i ponowne przeprogramowanie
fusebitów.
Mikrokontrolery AVR mog by taktowane z trzech róde zegara:
1. Zegara zewn trznego doprowadzonego do wej cia XTAL1. Jest to rzadko
wykorzystywana mo liwo . W tym trybie potrzebny jest zewn trzny generator
zegara, którym mo e by np. inny procesor AVR. Umo liwia to synchronizacj
pracy obu kontrolerów.
2. Zegara wewn trznego (uk ad generatora RC). W tym trybie (jest on trybem
domy lnym) procesor jest taktowany z w asnego generatora, w efekcie nie
trzeba doprowadza zewn trznego przebiegu zegarowego. Wad generatora
wewn trznego jest jego stosunkowo niewielka stabilno . W efekcie nie mo e
on by wykorzystywany np. w programach, w których wymagana jest du a
stabilno zegara.
74 J zyk C dla mikrokontrolerów AVR. Od podstaw do zaawansowanych aplikacji
3. Zewn trznego rezonatora kwarcowego. W tym celu do pinów XTAL1 i XTAL2
nale y pod czy rezonator kwarcowy o po danej cz stotliwo ci. Tryb ten
umo liwia taktowanie procesora ze stabilnego ród a zegara.
Fusebit RSTDISBL
Zwykle pin RESET procesora wspó dzieli wyprowadzenie w pinem IO. Aby móc wykorzy-
sta pin RESET jako normalny pin IO, nale y zaprogramowa fusebit RSTDISBL. Po jego
zaprogramowaniu dalsze programowanie procesora w trybie szeregowym jest nie-
mo liwe. Procesor mo na nadal programowa programatorem wysokonapi ciowym lub
równoleg ym.
Fusebit DWEN
Jego zaprogramowanie uruchamia mo liwo wykorzystania interfejsu debugWire, przy
pomocy którego mo na programowa procesor oraz w ograniczonym stopniu debu-
gowa program. Tylko nieliczne procesory dysponuj t funkcj , w dodatku wymaga
ona posiadania specjalnego programatora obs uguj cego debugWire.
Sygnatura
Wszystkie procesory AVR dysponuj unikaln sygnatur nadawan im w czasie procesu
produkcji. Sygnatura ta okre la typ procesora i ilo pami ci. Dzi ki temu programator,
odczytuj c sygnatur , mo e weryfikowa , czy pod czony procesor odpowiada proce-
sorowi wybranemu przez u ytkownika. Sygnatura nie zawiera unikalnego dla kon-
kretnego chipu numeru seryjnego.
Lockbity w AVR-libc
Definicje wspieranych przez dany model procesora lockbitów zawiera plik nag ówkowy
. Po jego w czeniu mo na w czy plik zawieraj cy definicj
ro nych makrodefinicji zwi zanych z konfiguracj lockbitów dla danego procesora.
Po w czeniu do programu dostajemy do dyspozycji makrodefinicj LOCKBITS, której
mo na przypisa po dan kombinacj lockbitów. Domy ln warto ci tego makra jest
0xFF; w efekcie wszystkie lockbity pozostaj niezaprogramowane. Je li chcemy to
zmieni , nale y symbolowi LOCKBITS przypisa now warto , najlepiej pos uguj c si
predefiniowanymi w pliku symbolami. Poszczególne symbole mo na czy
ze sob przy pomocy iloczynu bitowego. Przyk adowo:
LOCKBITS=(BLB1_MODE_3 & LB_MODE_3);
spowoduje wybranie trybu 3 dla kodu aplikacji oraz bootloadera. Wi cej o trybach
ochrony pami ci przy pomocy lockbitów znajdziesz w rozdziale 25.
Rozdzia 2. Programowanie mikrokontrolera 75
Makrodefinicj LOCKBITS mo na zainicjowa tylko raz, przyporz dkowanie jej innej
warto ci w dalszych fragmentach programu nie odnosi adnego skutku.
Warto ustawionych lockbitów dla skompilowanego programu mo na odczyta z pliku
elf przy pomocy polecenia:
avr-objdump -s -j .lock
W efekcie dla warto ci lockbitów okre lonej powy ej dla procesora ATMega88 powin-
ni my uzyska taki rezultat:
test.elf: file format elf32-avr
Contents of section .lock:
830000 cc .
Warto lockbitów wynosi wi c 0xCC.
Fusebity w AVR-libc
Podobnie jak w przypadku lockbitów, fusebity okre lone w programie zostan umiesz-
czone w specjalnej sekcji pliku elf, sk d b d mog y zosta odczytane przez program
steruj cy programatorem i u yte do konfiguracji procesora. Plik zawiera
definicje przydatne przy niskopoziomowym manipulowaniu fusebitami. Plik nag ów-
kowy zawiera definicje fusebitów u ywanych przez wybrany model proceso-
ra. W zale no ci od typu procesora fusebity mieszcz si w jednym, dwóch lub trzech
bajtach. Ilo bajtów przeznaczonych na fusebity zwraca makro FUSE_MEMORY_SIZE.
Definiowanie fusebitów nast puje poprzez przypisanie warto ci makru FUSES, np.:
FUSES =
{
.low=LFUSE_DEFAULT,
.high=(FUSE_BOOTSZ0 & FUSE_BOOTSZ1 & FUSE_EESAVE & FUSE_SPIEN),
.extended=EFUSE_DEFAULT,
};
Jak widzimy, makro to ma trzy pola odpowiadaj ce poszczególnym bajtom przecho-
wuj cym fusebity. Dla procesorów, w których makro FUSE_MEMORY_SIZE zwraca war-
to jeden, dost pne jest tylko pole .low, dla procesorów, w których powy sze makro
zwraca 2, dost pne s pola .low i .high, w pozosta ych procesorach dost pne jest tak e
pole .extended. Niestety, wykorzystuj c powy sze definicje, nale y pami ta , w któ-
rym bajcie jakie fusebity s przechowywane. Ich pomylenie spowoduje nieprawid owe
zaprogramowanie procesora, co mo e si nawet sko czy jego zablokowaniem. Podobnie
jak w przypadku lockbitów, wa ne jest tylko pierwsze przypisanie warto ci do makra,
kolejne s ignorowane. St d te najlepiej tak definicj umie ci raz, na pocz tku
programu.
76 J zyk C dla mikrokontrolerów AVR. Od podstaw do zaawansowanych aplikacji
Podobnie jak w przypadku lockbitów, wyliczone warto ci fusebitów mo na odczyta
z pliku elf:
avr-objdump -s -j .fuse test.elf
ADCNoiseReduction.elf: file format elf32-avr
Contents of section .fuse:
820000 62d1f9 b..
Wy wietlona warto odpowiada poszczególnym bajtom przechowuj cym fusebity.
Dla procesorów, w których mieszcz si one w mniejszej ilo ci bajtów, pokazanych
zostanie ich mniej. Co wa ne, najm odszy bajt wy wietlany jest z lewej, najstarszy
z prawej strony.
Skorowidz
2-wire Serial Interface, Patrz used, 48 cykliczny, 186
interfejs TWI volatile, 212 wej ciowy, 160
wyj ciowy, 56
warn_unused_result, 551
bus keeper, 193
weak, 33, 50
A
AVR Studio, Patrz program
AVR Studio
ADC Noise Reduction Mode,
C
Patrz tryb redukcji szumów
B
Camer Dean, 464
adres, 104, 141, 142, 144, 146,
biblioteka, 46, 48 Cesko Igor, 459
147, 148
AVR-libc, 15, 70, 74, 75, char, Patrz typ danych znakowe
akcelerometr, 391
137, 138, 141, 145, 147,
Clear Timer on Compare Match,
algorytm
152, 157, 159, 181, 183,
Patrz tryb CTC
XMODEM, 512
190, 211, 217, 227, 249,
Clock Prescale Register, Patrz
arytmetyka
267, 483, 520
rejestr CLKPR
sta opozycyjna, 15, 81, 83, 85
Joerga Wunscha, 336
CodeBlocks, 18
zmiennopozycyjna, 81, 82, 87
kolejno przeszukiwania, 49
Compare Match, 309, 314, 318
asembler, 142, 252, 254, 529,
libc, 93
Complex Data Types, Patrz typ
536, 538
libm.a, 88
danych z o ony, Patrz typ
Atmel, 15, 17, 55, 64, 82, 456,
libprintf_flt, 93
danych prosty
464, 497, 507, 552
libprintf_min, 93
Controller Area Network, Patrz
atomowo , Patrz dost p
libusb, 460
interfejs CAN
atomowy
LUFA, 464
Counter, Patrz licznik
atrybut
zewn trzna, 88
CRC, 511, 514, 520, 521
always_inline, 549
bity zabezpieczaj ce BLB, 485,
Cyclic Redundancy Code, Patrz
const, 549
486, 487
CRC
depreciated, 50
b d e, 89
cykl oczekiwania, 193, 194
flatten, 549
b d reprezentacji, 89
czas martwy, Patrz generator
ISR_NAKED, 254
bootloader, 53, 67, 146, 249,
czasu martwego
naked, 145, 550
464, 483, 487, 489, 496, 499,
cz stotliwo , 22, 58, 59, 72,
noclone, 550
504, 507, 509, 520
149, 159, 178, 217, 218, 306,
noinline, 550
bootsektor, 484
316, 317, 318, 319, 323, 417
nonnull, 550
breakpoint, Patrz pu apka
próbkowania, 283
noreturn, 551
Brown-out Detector, 151
czujnik temperatury, 391
optimize, 551
Brown-out Reset Circuit, Patrz
PROGMEM, 142, 349
reset Power-on Reset
pure, 549
bufor, 393
SIGNAL, 251
74XX244, 57
560 J zyk C dla mikrokontrolerów AVR. Od podstaw do zaawansowanych aplikacji
ekspander, 403, 404, 436 dtostre, 90
D
enkoder obrotowy, 230, 237, dtostrf, 91
Daisy-chain JTAG mode, Patrz
242, 279 eeprom_busy_wait, 185
konfiguracja a cuchowa
Executable and Linkable Format, eeprom_is_ready, 185
Dead Time Generator, Patrz
Patrz plik elf eeprom_read_, 183, 184
generator czasu martwego
External Memory Interface, eeprom_update_, 183, 185
debugowanie, 60, 61, 63, 64, 74,
Patrz interfejs XMEM, Patrz eeprom_write_, 183, 184
101, 141, 161, 164, 529, 544,
interfejs XMEM fprintf, 95
552, 553, 554, 556
free, 165, 168, 171
decymacja, 292
fscanf, 95
F
definicja, 128, 130
inline, 134, 135, 549
EEMEM, 182
main, 144, 145
fa sz, Patrz typ danych bool
symbolu, Patrz symbol
malloc, 165, 166, 506
Fault Protection Interrupt Enable,
TW_STATUS_MASK, 416
MD5, 512
Patrz flaga FPIE
deklaracja, 128, 130
moduluj ca, 322
Fault Protection Interrupt Flag,
Device Firmware Update, Patrz
nie reentrant, 267
Patrz flaga FPF
urz dzenie DFU
obs ugi przerwa , 101, 251
Fault Protection Unit, Patrz
Device Firmware Uploader, 507
opó niaj ca, 217
uk ad ochronny
DFU, 67
parametry, 114
Ferroelectric RAM, Patrz
Digital To Analog Converter,
printf, 92, 95
pami FRAM
Patrz przetwornik DAC
prototyp, 113, 128, 130
flaga, 251, 254
dioda LED, 53, 230, 231, 275,
przeci anie, 113
bitowa, 246
332, 333
Read_4kB, 196
Busy, 336
disasemblacja, 556
realloc, 166
FPF, 322
d ugo kodu, 31, 32
reentrant, 249, 250, 266
FPIE, 322
dost p atomowy, 263, 264, 268
reentry, 170
ICF, 311, 319
dyrektywa
rekurencyjna, 115, 165, 266
OCF, 309, 319
%elif, 40
scanf, 95
RXCIE, 375
%else, 40
SHA, 512
SPIF, 396
%if, 40
ShowOnLED, 271
TOV, 319
#define, 103, 104, 126
snprintf, 95
TWIE, 417
#elif, 125
sscanf, 94
TXCIE, 375
#else, 125
static inline, 127
TXCO, 476
#endif, 125
statyczna, 135
UDRIE, 375
#if, 124
strsep, 107
USIOIE, 449
#ifdef, 124, 125
strtod, 92
USIOIF, 452
#ifndef, 124, 125
strtok_r, 107
USISIE, 449
#include, 124, 128
switch, 144
WCOL, 396
defined, 125
void, 251
FLexible In-system Programmer,
extern, 135
wdt_enable, 145
Patrz program FLIP
inline, 132
Write_4kB, 196
Frame, Patrz ramka
kompilacji warunkowej, 124
wywo anie, 114, 537
Free Running Mode, Patrz tryb
warunkowa, 40
fusebit, 53, 55, 61, 64, 65, 70,
ci g ej konwersji
71, 73, 75, 146, 150, 524
FTDI, 456, 457
BODLEVEL, 71, 151, 161
funkcja, 47, 108, 112, 126, 132,
E
BOOTRST, 72
535, 549, 550, 551
eavesdropping, 518 BOOTSZ, 72, 513
_delay_loop_, 219
EEPROM Address Register, CKDIV8, 22, 72, 159
_delay_ms, 217, 219
Patrz rejestr EEAR CKOUT, 73
_delay_us, 217, 219
EEPROM Control Register, Patrz DWEN, 74, 161
adres, 144
rejestr EECR EESAVE, 72, 178
asynchroniczna, 249
EEPROM Data Register, Patrz HWBE, 497
atof, 91
rejestr EEDR JTAGEN, 72
bus keeper, 194, 195
RSTDISBL, 74, 151
calloc, 166
Skorowidz 561
SPIEN, 72 synchroniczny, 391, 413
I
SUT, 73 szeregowy, 354, 367, 413
input capture, 311
WDTON, 72, 152, 153, 161 TPI, 53, 58
Input/Output Ports, Patrz port
TWI, 367, 391, 416, 437, 438
wej cia/wyj cia
inicjalizacja, 417
G
instrukcja
UART, 221, 370, 371, 386
asm, 529, 535, 536
odbiornik, 386
General Purpose IO Registers,
break, 122
pr dko , 372, 373
Patrz rejestr IO ogólnego
continue, 123
USART, 246, 367, 368, 374,
przeznaczenia
for, 217
375, 378, 379, 408, 469,
generator
goto, 123
472, 473, 475, 477
czasu martwego, 320
if, 120
nadajnik, 373, 374, 408
kwarcowy, 330
kolejno , 263
odbiornik, 373, 374, 408
wewn trzny, 73, 307, 308
MOVW, 537
USB, 53, 58, 67, 367, 453, 454,
zdarze , 311
NOP, 229
455, 456, 460, 497, 498
zewn trzny, 73, 308
opó niaj ca, 229
programowy, 461
GNU/Linux, 18
p tla do..while, 122
sprz towy, 464, 507
p tla for, 122
USI, 447, 449, 472
H
p tla while, 121
XMEM, 141, 144, 193
powrotu, 251
interpolacja, 292
Heap, Patrz sterta
RET, 251
Interrupt Service Routine, Patrz
http://dfu-programmer.
RETI, 251
procedura obs ugi przerwa
sourceforge.net/, 497
sei, 158
http://realterm.sourceforge.
sleep, 157
net//, 375
K
SPM, 509
http://sourceforge.net/projects/
switch, 120
klawiatura, 295
libusb-win32, 461
WDR, 152
klawiatura matrycowa, 229, 230,
http://svn.savannah.nongnu.org,
In-system Programming
242, 244, 281
495
Interface, Patrz interfejs ISP
kod
http://winavr.sourceforge.net/, 16
interfejs, 417, 448
asemblerowy, 141
http://www. atmel.com/, 17
1-wire, 465, 469, 470, 472,
binarny, 238
http://www. atmel.no/
477, 481
Graya, 238, 239
beta_ware/, 15
aWire, 62
ród owy, 141
http://www.atmel.
binarny, 530
komentarz, 37
com/dyn/resources/prod_
CAN, 367
komparator analogowy, 160,
documents/doc7618.pdf, 508
debugWire, 53, 55, 62, 63,
301, 311, 321
http://www.atmel.com, 65
74, 552
kompilacja, 23, 26, 47, 64, 128
http://www.atmel.com/dyn/
HVPP, 63
warunkowa, 125
products/tools_card.asp?
HVSP, 63
kompilator, 123, 132
tool_id=3886, 497
I2C, Patrz interfejs TWI
avr-gcc, 15, 18, 82, 88, 543
http://www.avrfreaks.net/
ISP, 53, 55, 58, 63, 72
gcc, 88, 142, 211, 520
index.php? module=
JTAG, 53, 55, 60, 61, 62,
IAR, 520
Freaks%20Files&func
63, 69, 72, 173, 176, 221,
kondensator odsprz gaj cy, 55
=viewFile&id=3330
552, 556
konfiguracja
&showinfo=1, 520 pami ci zewn trznej, 221
daisy-chain, Patrz
http://www.cesko.host.sk, 459 PDI, 53, 62, 63
konfiguracja a cuchowa
http://www.codeblocks.org, 18 równoleg y, 367, 453
a cuchowa, 62, 63
http://www.ftdichip.com/ RS232, 368, 370, 375, 378,
FTDrivers.htm, 458 386, 456, 458, 498 pocz tkowa, 71
RS485, 367, 383, 384, 386 kontroler
http://www.lancos.com/
SPI, 55, 62, 367, 371, 391, CAN, 391
prog.html, 70
393, 397, 405, 449, 498 HD44780, 333
http://www.obdev.at/products/
inicjalizacja, 394 KS0108, 355
vusb/download.html, 461
nadajnik, 393
kontynuacja linii, 37
http://www.usb.org, 456
odbiornik, 393
562 J zyk C dla mikrokontrolerów AVR. Od podstaw do zaawansowanych aplikacji
konwersja, 283, 285, 287, 288, sei, 251, 254, 264, 265
N
289, 291, 295 set_sleep_mode, 157
nadpróbkowanie, 291
konwerter, 458 sleep_bod_disable, 157
napi cie, 56, 57, 58, 60, 63, 150,
koprocesor arytmetyczny, 87, 88 sleep_cpu, 157
151, 178, 231, 301
sleep_disable, 157
referencyjne, 160, 161, 283,
sleep_enable, 157
L
284, 297
sleep_mode, 157
ró nica, 283, 287
TW_STATUS, 438
licznik, 305, 308, 309, 311, 315,
No Read While Write, Patrz
wdt_disable, 155
318, 319, 323, 447, 452
pami NRWW
wdt_enable, 155
linia, Patrz sygna
numer
wdt_reset, 155
linia
wspó dzielony ID, 457
marker czasowy, 310
adresowa, 195
seryjny, 74, 519
maska bitowa, 227, 246
kontrolna, 193
master-slave, 379, 391, 413,
lista modyfikowanych
415, 437, 438, 439, 449, 451,
rejestrów, 535
O
452, 465, 466, 467, 469, 477
litera memory, 535
MCU Control Register, Patrz Objective Development, 457
lockbit, 65, 70, 71, 146, 485,
rejestr kontrolny opcja
486, 496, 512, 524
menu fdata-sections, 548
konfiguracja, 74
Build, 23 ffunction-sections, 548
LB, 525
File, 25 finline-limit=n, 547
Fuse, 65 flto, 548
M
LockBits, 65 fmerge-constants, 548
Program, 65 fno-inline, 547
magistrala, 250
Project, 26, 30, 200, 218, 490, fwhole-program, 548
1-Wire, 163
543, 545 mcall-prologues, 546
RS232, 369
Tools, 64, 524 mint8, 546
SCL, 413
View, 555 mno-interrupts, 547
SDA, 413
miernik cz stotliwo ci, 323 mtiny-stack, 547
makrodefinicja, 39, 126, 535, 536
miernik wype nienia, 323 open-drain, 413
_BV, 227
mikrokontroler, Patrz procesor operacja binarna, 95
ATOMIC_BLOCK, 245,
modulacja, 316, 322 iloczyn bitowy, 96, 98
264, 265
modulator sygna u negacja bitowa, 99
BADISR_vect, 253
wyj ciowego, 322 przesuni cie bitowe, 100
boot_page_erase, 487
modu przechwytywania rotacja, 100
boot_page_erase_safe, 487
zdarze zewn trznych, 310, 312 suma bitowa, 97
boot_page_write, 488
modyfikator suma wy czaj ca, 98
boot_page_write_safe, 488
const, 103, 189, 245 operand, 531, 533
boot_rww_busy, 488
extern inline, 135 sposób dost pu, 531, 532
boot_spm_busy, 488
inline, 503 typ, 531, 532
boot_spm_busy_wait, 488
register, 136, 137 wej ciowy, 535
cli, 254, 264, 265
static, 267 wyj ciowy, 535
clock_prescale_, 159
static inline, 135, 536 operator, 116
clock_prescale_set, 159
volatile, 103, 138, 196, 217, &, 105
EMPTY_INTERRUPT, 253
228, 229, 245, 257, 259, *&, 105
FUSE_MEMORY_SIZE, 75
262, 279, 530 .ascii, 540
GET_FAR_ADDRESS, 192
modyfikatory makr, 40 .asciz, 540
GetAddr, 349
multiplekser, 302 .byte, 540
ISR, 251
multiplekser analogowy, 283, 285 .section, 540
LOCKBITS, 74
multipleksowanie, 269, 275, 405 arytmetyczny, 116, 117
NONATO MIC_BLOCK, 266
Multi-processor Communication bitowy, 116, 118
pgm_read_, 191
Mode, Patrz tryb dereferencji, Patrz operator *&
power_, 159
wieloprocesorowy MPCM hi8, 540
PROGMEM, 190
kolejno , 118, 119
PSTR, 94
Skorowidz 563
lo8, 540 zewn trzna, 29, 147, 148, podsekcja, Patrz sekcja
logiczny, 116, 118 193, 194, 195, 197, 198, pointer, Patrz typ danych
pm, 540 199, 201, 208, 422, 427, 458 wska nik
porówna , 116, 117 zwalnianie, 169 pooling, 181, 268 Patrz technika
relacji, 89 p tla, Patrz instrukcja cz stego próbkowania
sizeof, 111 p tla synchronizacji fazowej, 307 port, Patrz sygna
wy uskania, Patrz operator *& Phase Locked Loop, Patrz p tla IO, 221, 225, 533
opó nienie, 199, 217, 219, 235 synchronizacji fazowej równoleg y, 56, 57, 70
dost pu, 193 PID, 456, 457, 463 RS232, 58
optymalizacja, 545, 548, 554 pin, Patrz sygna szeregowy, 19, 58, 70, 447
optymalizator, 543 platforma sprz towa, 19 UART, 250
Output Compare Register, Patrz plik USB, 57, 58
rejestr OCR .S, 529, 536 wej cia/wyj cia, 221, Patrz
Oversampling, Patrz /avr-libc/trunk/avr-libc/crt1/ port IO
nadpróbkowanie gcrt1.S, 495 wyj ciowy, 309
, 181 potencja masy, 56
, 75 prawda, Patrz typ danych bool
P
, 74, 533, 538 preprocesor, 123
, 483 PRESENCE PULSE, 466, 476,
pakiet danych, 456
, 185 478
pami , 34, 53, 74, 249
, 249 preskaler, 152, 153, 155, 159,
adres, 148
, 221, 393 286, 306, 307, 308, 318, 321,
adresowanie, 77
, 94, 190 324, 328, 417
dynamiczna alokacja, 163,
, 156, 159 procedura obs ugi przerwa ,
164, 165, 166, 167, 169,
, 156 249, 251, 252, 253, 254, 256,
171, 173
, 145, 152 260, 262, 266, 445, 449
EEPROM, 61, 67, 71, 72, 77,
, 89 procesor
143, 151, 177, 178, 179,
, 83 architektura, 28, 203
180, 181, 182, 183, 185,
, 92 AT90USB, 464
186, 250, 422, 458, 497,
, 90, 91, 164 ATMega, 61, 128, 145, 464
554
, 171 ATMega128, 13, 176, 195,
FLASH, 24, 60, 67, 71, 72,
, 512 199, 203, 486, 520
77, 94, 142, 146, 177, 189,
, 416 ATMega256, 502, 504
190, 191, 483, 484, 488,
, 217, 218 ATMega64, 193
496, 509, 554
, 219 ATMega8, 520
FLASH >64 kB, 192
defines.h, 336 ATMega8-32U2, 497
fragmentacja, 163, 164, 171
dodawanie, 25 ATMega88, 13, 69, 75, 250,
FRAM, 427
elf, 43, 65, 68, 75, 146, 178 252, 397
kasowanie, 72, 180
hd44780.c, 336 ATTiny, 58, 64, 151, 447
mikrokontrolera, Patrz
Intel HEX, 45, 65, 68, 70, ATTINY, 268
pami FLASH
178, 554 ATTiny26, 70
modyfikowanie, 185
macros.inc, 495 ATTiny44, 13
NRWW, 483
Makefile, 26, 34, 36, 49, 93, AVR architektura, 204
odczyt, 180, 183, 191, 192
208, 218 AVR XMega, 58
RAM, 142, 148, 197
nag ówkowy, 35, 47, 127, 134 AVR32, 58, 60, 62
RWW, 483
obiektowy, 33, 47, 128 cz stotliwo , 21
SRAM, 24, 77, 94, 149, 177,
opisu sprz tu, 20 peryferia, 20
189, 193, 194, 195, 198, 554
rozszerzenie, 25 programowanie, 55
szeregowa, 391
sectionname.h, 495 rdze , 20, 159
wewn trzna, 148, 195, 197,
skryptu linkera, 204 rejestr, 136, 144
198, 201
string.h, 107 resetowanie, 149, 253
wyciek, 163, 165, 169
usbconfig-prototype.h, 461 sygnatura, 146
zapis, 180, 184
wynikowy, 146 typ, 19, 74
ród owy, 128
564 J zyk C dla mikrokontrolerów AVR. Od podstaw do zaawansowanych aplikacji
procesor przerwanie, 152, 153, 155, 156, DDR, 373
u pienie, 157, 160, 161, 326, 157, 158, 170, 176, 180, 196, DDRn, 247
327, 328 202, 219, 245, 249, 250, 251, DDRx, 221, 222, 226, 229, 322
Product ID, Patrz PID 252, 254, 257, 264, 328, DIDR0, 289
program 371, 402, 410, 448, 449, DIDRx, 160, 302
alokator, 171 452, 489, 505 DT, 321
alokatora pami ci ADC, 289, 290 EEAR, 177, 180
dynamicznej, 164 komparatora, 301 EECR, 177, 180, 181
ar, 28 OCIE, 309 EEDR, 177, 180
AVR Simulator 2, 552 SPI, 393, 402, 406, 407, 408 GPIOR, Patrz rejestr IO
AVR Studio, 19, 64, 94 TIMERn_COMPx_vect, 309 ogólnego przeznaczenia
AVR Studio 5, 15 TIMn_CAPT_vec, 311 ICR, 311
AVRDude, 59, 67, 68 TIMn_CAPT_vect, 318 ICRn, 213
avr-gcc, 536 TIMn_COMP_vect, 313, 318 indeksowy, 138
avr-nm, 32 TIMn_OVF_vect, 312, 315, IO, 159, 245, 246, 538
avr-objcopy, 33, 46 318 IO ogólnego przeznaczenia,
avr-objdump, 43 TWI, 417, 444 245, 246
avr-size, 31 USART, 408 kontrolny MCUCR, 194
dfu-programmer, 507 USARTn_, 375 kontrolny XMCRA, 194
FLIP, 65, 497, 507 USI, 448 kontrolny XMCRB, 194, 197
linker, 27, 47, 93 przetwornik liczników, 211
make, 18, 27, 28, 30, 33, 34, ADC, 127, 160, 285, 287, MCUSR, 154
36, 46 303, 317, 391 OCR, 309, 318, 319
Makefile, 495, 514 analogowo-cyfrowy, Patrz OCRn, 213
narz dziowy, 27 przetwornik ADC OCRx, 247
PonyProg, 70 cyfrowo-analogowy, Patrz PIN, 310
Programmer s Notepad, 205 przetwornik DAC PINx, 221, 223, 224, 228,
RealTerm, 375 DAC, 317, 318, 319 229, 259
srec_cat, 512 Pulse Width Modulation, Patrz PLLCSR, 307
Typer Terminal, 375 tryb PWM PORT, 373
WinAVR, 15, 59, 67, 82, 205 pu apka, 176, 556, 557, 558 PORTn, 247
wine, 18 PORTx, 221, 222, 223, 226,
winetricks, 18 229, 322
R
programator, 19 preskalera, 306
AVR Dragon, 63, 64 procesora, 144, 554
ramka, 371, 373, 374, 386, 498
AVRICE, 68 PRR, 158
rdze , 73
AVRICE mkII, 62, 68 przesuwaj cy, 403
Read Only Memory, Patrz
AVRISP, 58, 64, 68 przesuwny, 405
pami ROM
AVRISP mkII, 58, 64, 68 przetwornika ADC, 211
Read While Write, Patrz pami
HW, Patrz programator R0, 538
RWW
wysokonapi ciowy R1, 490, 538
Real-Time Clock, Patrz uk ad
ISP, 55, 56 R18-R27, 538
zegarowy
JTAG, 60 R25, 537
Reduction Register, Patrz rejestr
JTAGICE, 61 R2-R17, 538
PRR
JTAGICE mkII, 62 SMCR, 157
rejestr
równoleg y, 53, 64, 74 SPCR, 394
AC, 337
STK500, 68 SPDR, 396
ACSR, 302
STK600, 68 SPSR, 394
ADC, 284, 287, 288
szeregowy, 53, 72, 74 SREG, 251
ADCH, 212
USBASP, 59 stosu, 144
ADCSRA, 160, 287, 288,
wysokonapi ciowy, 54, 63, szeregowy, 403, 405
291, 303
72, 74 TCCR, 309, 321
ADCSRB, 303
prototyp funkcji, 47 TCCRnB, 311
ADMUX, 160, 212, 285, 287
TCNT, 309, 319
CLKPR, 159
Skorowidz 565
TCNTn, 213 eeprom, 182 TDI, 60, 62
TIFR, 308, 309, 311 krytyczna, 262 TDO, 60, 62
TWAMR, 437 specjalna, 146 TMS, 60
TWAR, 246, 437 Serial Peripheral Interface, TPICLK, 64
TWBR, 417, 438 Patrz interfejs szeregowy TPIDATA, 64
TWCR, 417 signed char, Patrz typ danych wyzwalaj cy, 321
TWSR, 416, 417, 438 znakowe XTAL1, 64, 73
tymczasowy, 213, 535, 538 Single Conversion Mode, Patrz sygnatura, 74
UBRR, 371, 408 tryb pojedynczej konwersji symbol, 126
UBRRH, 246 skrypt __heap_end, 164
UBRRL, 246 domy lny, 28 __heap_start, 164
UCSR0A, 476 linkera, 28 __stack, 208
UCSRA, 371, 374, 387 Makefile, 27, 34, 37, 147 symetryczny szyfr blokowy
UCSRB, 373 Sleep Mode Control Register, AES, 519
UDR, 374 Patrz rejestr SMCR symulator
USICR, 448, 450 s owo kluczowe, 116, 123 AVR Studio, 20
USIDR, 447, 451 __attribute_, 254 programowy, 19
USISR, 450 asm, 529, 530 synchronizator, 228
WDTCSR, 153 const, 549 szablon, 127
Y, 538 extern, 130 szeroko impulsu, 316
zatrzaskowy, 194 static, 104, 129 szum, 311
repeter, 414 volatile, Patrz modyfikator szyfrowanie, 518, 519, 526
reset, 54, 61, 67, 71, 73 volatile
Power-on Reset, 150 stabilizator impulsowy, 317
T
zewntrzny, 151 stabilizator liniowy, 317
RESET PULSE, 466, 476, 478 sta a
tablica, 109
rezonator kwarcowy, 22 __malloc_margin, 165
element, 110
rezystor, 13, 231, 233, 239, 296 sterowanie kluczy mocy, 320
rozmiar, 109, 112
podci gaj cy, 413, 416, 465 sterta, 164, 165, 171, 172, 197,
skoków, 144
rozdzielczo , 319 199, 202, 554
typ, 109
rozdzielczo pomiaru, 306 fragmentacja, 166
wektorów przerwa , 251,
stos, 165, 172, 194, 196, 197,
490, 492, 493, 494, 501,
199, 208, 249, 490, 537,
502, 513, 519, 540
S
538, 554
wielowymiarowa, 110
rejestr, 144
sekcja, 43, 189, 198, 199 technika cz stego
suma kontrolna, 509
.bootloader, 146 próbkowania, 230
sygna
.bs, 141 template, Patrz szablon
+Vcc, 56
.bss, 143, 164, 197 termometr analogowy, 293
aktywuj cy, Patrz sygna
.data, 141, 142, 197 termometr cyfrowy DS1820, 480
wyzwalaj cy
.debug_, 141 timer, 219, 305, 308, 309, 312,
analogowy, 160, 290
.eeprom, 141, 143 321
asynchroniczny, 307
.fini, 141, 145 Timer/Counter Control
CKOUT, 73
.fuse, 146 Register, Patrz rejestr TCCR
cyfrowy, 321
.init, 141, 144, 194 Timestamp, Patrz marker
IO, 62, 72, 73, 74, 160
.jumptables, 144 czasowy
MISO, 55, 59
.lock, 146 transceiver, 368
MOSI, 55, 59
.noinit, 141, 143, 144, 154 transmisja
RESET, 54, 55, 59, 60, 63,
.progmem.gcc, 513 asynchroniczna, 371
64, 74, 149, 151, 152,
.signature, 146 synchroniczna, 368
153, 157
.text, 141, 142, 144 tryb
SCK, 55, 58, 59, 63
.trampolines, 144 asynchroniczny, 329, 330, 371
synchroniczny, 307
.vectors, 142 ci g ej konwersji, 283, 287,
taktuj cy, 306, 308
adres, 142, 144, 146, 147 288, 293
TCK, 60
danych, 141, 142 CTC, 315
566 J zyk C dla mikrokontrolerów AVR. Od podstaw do zaawansowanych aplikacji
tryb z o ony, 77 while, Patrz instrukcja p tla
emulacji SPI, 409, Patrz tryb zmiennopozycyjne, 77, 87, while
93, 96, 118 WinAVR, 16
MSPIM
znakowe, 78 wska nik, 105, 196, Patrz typ
Fast PWM, 318
typ rekordu, 45 danych wska nik
FAST PWM, 309, 310
byteIO, 245
full-duplex, 391
dost p, 534
g bokiego u pienia, 328
U
wordIO, 245
I2C, 417
wspó czynnik wype nienia, 316,
uk ad
modulacji, 322
317, 318, 319, 323
analogowy, 316
MPCM, 386
wydajno pr dowa, 57
BOD, 71, 151, 157, 160,
MSPIM, 408
wyj cie
161, 179
multimaster, 413, 416
równoleg e, 68
cyfrowy, 316
o wysokiej pr dko ci, 413
szeregowe, 68
detekcji zboczy, 308
pojedynczej konwersji, 283,
wy wietlacz
ochronny, 321
286, 287, 290
alfanumeryczny, 331, 332
porównywania danych, 309
power save, 328
graficzny, 331, 354
redukcji zak óce , 321
pracy timera, 312
LCD, 127, 331
synchronizuj cy, 308
prosty, 312
LED, 405
uk ad nadzoruj cy zasilanie,
PWM, 310, 316, 317, 321
monochromatyczny, 99, 332
Patrz uk ad BOD
PWM z korekcj fazy, 319
wy wietlacz 7-segmentowy
zegarowy, 326, 327, 328, 329
PWM z korekcj fazy
LED, 230, 268, 269, 270,
Universal Serial Interface, Patrz
i cz stotliwo ci, 319
271, 272, 273, 275, 277, 279
interfejs USI
redukcji szumów, 290
Universal Synchronous and
SLEEP_MODE_PWR_SAVE,
Asynchronous serial Receiver
330 Z
and Transmitter, Patrz
synchroniczny, 371, 380
interfejs USART zabezpieczenie kodu, 517
szybki, 413
unsigned char, Patrz typ danych zak ócenia, 290
wieloprocesorowy MPCM, 371
znakowe zarz dzanie energi , 156, 158,
Two Wire Serial Interface,
urz dzenie 159, 160, 290, 327, 328
Patrz interfejs TWI
DFU, 67 zatrzask, 228
typ danych
USART in Master SPI Mode, zegar, 72, 73, 149, 152, 158,
_Accum, 83, 84
Patrz tryb MSPIM 159, 178, 199, 228, 286, 306,
_Fract, 83
USB DFU Bootloader Datasheet, 311, 371, 394, 396, 456, 462
_Sat, Patrz typ danych
508 RTC, 431, Patrz uk ad
z saturacj
u pienie, 290 zegarowy
binarne, 95
u rednianie, 292 SCL, 413
bool, 78
zmienna, 136
ca kowite, 77, 96
__malloc_heap_end, 164
V
char, 537, 538
__malloc_heap_start, 164
double, 88, 90
alokowana dynamicznie,
Vendor ID, Patrz VID
float, 88, 89, 90, 94
199, 201
VID, 456, 457, 463
int, 79, 80
globalna, 100, 101, 131, 143,
a cuch znakowy, 86, 90, 92,
196, 199, 259, 505, 554
W
94, 103, 107
LDFLAGS, 29
porz dkowy, 121
LIBDIRS, 29
Watchdog, 72, 144, 145, 152, 161
prosty, 77
LIBS, 29
reset, 156
sta opozycyjne, 83, 86, 96
lokalna, 100, 102, 196, 266,
Watchdog Timer Control
symbole, 85
505
Register, Patrz rejestr
unsigned char, 538
a cuchowa, 103
WDTCSR
wielobajtowe, 533
OBJECTS, 29
Wear Leveling, 182, 186, 497
wska nik, 104, 107, 108, statyczna, 102, 143, 199, 490
wektor
109, 111 wspó dzielona, 146
obs ugi przerwania, 252, 253
wyliczeniowe, 80
przerwa , 142
z saturacj , 84
RESET, 496, 497, 499, 507


Wyszukiwarka

Podobne podstrony:
AVR GCC kompilator C dla mikrokontrolerów AVR, część 12
AVR GCC kompilator C dla mikrokontrolerów AVR, część 11
AVR GCC kompilator C dla mikrokontrolerów AVR, część 4
AVR GCC kompilator C dla mikrokontrolerów AVR, część 3

więcej podobnych podstron