AVR Praktyczne projekty.pdf

(15581 KB) Pobierz
T o m as z F ran cu z
Praktyczne projekty
r
ft. rt. rt. n. n. u
j ę j i j m i u i u i
>,
AVR
JT j r jr j r j
P ro g ra m o w a n ie m ik ro k o n tro le ró w to nic tru d n e g o !
C za s się o ly m p rz e k o n a ć !
H elio n
Poznaj m ikrokontrolery A V R z rodziny XM EG A
N au cz się praktycznie program ow ać je w języku C
Zdobądź dośw iadczenie w stosow aniu u kład ó w A V R
Wszelkie prawa zastrzeżone. Nieautoryzowane rozpowszechnianie całości lub fragmentu niniejszej
publikacji w jakiejkolwiek postaci jest zabronione. Wykonywanie kopii metodą kserograficzną,
fotograficzną, a także kopiowanie książki na nośniku filmowym, magnetycznym lub innym
powoduje naruszenie praw autorskich niniejszej publikacji.
Wszystkie znaki występujące w tekście są zastrzeżonymi znakami firmowymi bądź towarowymi
ich właścicieli.
Autor oraz Wydawnictwo HELION dołożyli wszelkich starań, by zawarte w tej książce informacje
były kompletne i rzetelne. Nie biorą jednak żadnej odpowiedzialności ani za ich wykorzystanie, ani
za związane z tym ewentualne naruszenie praw patentowych lub autorskich. Autor oraz
Wydawnictwo HELION nie ponoszą również żadnej odpowiedzialności za ewentualne szkody
wynikłe z wykorzystania informacji zawartych w książce.
Redaktor prowadzący: Michał Mrowieć
Projekt okładki: Studio Gravite / Olsztyn
Obarck, Pokoński, Pazdrijowski, Zaprucki
Fotografia na okładce została wykorzystana za zgodą Shutterstock.com
Wydawnictwo HELION
ul. Kościuszki lc, 44-100 GLIWICE
tel. 32 231 22 19,32 230 98 63
e-mail: helion@helion.pl
WWW: http://helion.pl (księgarnia internetowa, katalog książek)
Drogi Czytelniku!
Jeżeli chcesz ocenić tę książkę, zajrzyj pod adres
http://helion.pl/user/opinie7avrppr
Możesz tam wpisać swoje uwagi, spostrzeżenia, recenzję.
Kody źródłowe wybranych przykładów dostępne są pod adresem:
ftp://ftp.helion.pl/przyklady/avrppr.zip
ISBN: 978-83-246-7877-8
Copyright © Helion 2013
Printed in Poland.
Spis treści
Rozdział 1.
Wstęp, czyli nowi członkowie rodziny A V R ............................................ 11
Przykłady do książki............................................................................................................12
Mikrokontrolery XM EGA.................................................................................................. 12
E rrata............................................................................................................................. 14
XMEGA a inne AVR-y .......................................................................................................15
Kompilator .................................................................................................................... 15
Nowe peryferia..............................................................................................................16
Rozdział 2.
Jak zacząć, czyli instalacja środowiska .................................................21
Xplained jako płyta rozwojowa......................................................................................... 22
Instalacja Xplained w systemie ................................................................................... 22
Instalacja XMEGA z bootloaderem klasy DFU ......................................................... 25
Programowanie układów XM EGA.................................................................................... 25
Wczytywanie firmware za pomocą FLIP ....................................................................26
Bootloader firmy Atmel ...............................................................................................28
Podstawowe opcje programu batchisp.........................................................................28
Interfejs JT A G .............................................................................................................. 32
Programowanie z wykorzystaniem interfejsu PDI ..................................................... 34
Programatory.......................................................................................................................34
AVRISP mkll ............................................................................................................... 35
JTAGICE mkll ............................................................................................................. 35
JTAGICEIII.................................................................................................................. 36
AVROne! ..................................................................................................................... 36
AVR Dragon ................................................................................................................ 36
Programowanie i debugowanie procesorów XM EGA...................................................... 43
Odsprzęganie zasilania .......................................................................................................44
Instalacja potrzebnego oprogramowania ...........................................................................44
Atmel Studio 6 — podstawy ....................................................................................... 45
Programowanie z poziomu AS6
— dlaczego warto korzystać z plików w formacie e lf.................................................... 53
Rozdział 3.
Organizacja i zarządzanie projektem ...................................................... 55
Komentarze .........................................................................................................................55
Nazewnictwo.......................................................................................................................57
Literały..........................................................................................................................59
Podział kodu na pliki .......................................................................................................... 61
Widoczność ftinkcji......................................................................................................66
Widoczność zmiennych................................................................................................66
4
AVR. Praktyczne projekty
Podkatalogi...................................................................................................................... 67
Podział funkcj i ................................................................................................................69
Zmienne globalne ..................................................................................................................70
Systemy wersjonowania ....................................................................................................... 74
Serwer SVN na własnym kom puterze.......................................................................... 75
Jak korzystać z SVN ...................................................................................................... 78
Praca z SVN .................................................................................................................... 81
Uwagi końcow e...............................................................................................................84
Inne ułatwienia ...................................................................................................................... 85
Jak pisać lepsze programy? .................................................................................................. 86
R ozd ział 4 .
J a k tw o rz y ć lep szy i e fe k ty w n ie jsz y k o d ............................................................8 9
Włączenie optymalizacji....................................................................................................... 90
Długość typów ....................................................................................................................... 91
Zmienne globalne i zmienne lokalne ...................................................................................93
Modyfikator register............................................................................................................. 94
Użycie globalnych rejestrów ogólnego przeznaczenia ...................................................... 97
Wykorzystanie innych rejestrów jako G PIO R ............................................................. 99
Inicjalizacja zmiennych globalnych..................................................................................... 99
Położenie zmiennych w pam ięci.......................................................................................... 99
Optymalizacja p ę tli.............................................................................................................. 100
Optymalizacja funkcji..........................................................................................................101
Optymalizacja funkcji main ......................................................................................... 101
Optymalizacja prologów i epilogów funkcji .............................................................. 101
Optymalizacja przekazywania parametrów funkcji....................................................102
Optymalizacja zwracania wyników funkcji................................................................ 105
Dodatkowe atrybuty funkcji .........................................................................................106
Inne ...............................................................................................................................110
Eliminacja martwego kodu ................................................................................................111
Konstruktory i destruktory...................................................................................................114
J a k u p o rz ą d k o w a ć c h a o s , czyli z ło żo n e ty p y d a n y c h i listy ................... 1 1 7
T ab lice.................................................................................................................................. 118
Struktury............................................................................................................................... 119
Deep copy i shallow copy ............................................................................................ 123
Wskaźniki i struktury ....................................................................................................126
Struktury anonimowe ....................................................................................................127
Inicjalizacja pól struktury ............................................................................................. 128
U n ie ................................................................................................................................ 129
Pola bitow e.................................................................................................................... 130
Struktury a optymalizacja programu ..........................................................................131
L isty.......................................................................................................................................135
Listy jednokierunkowe................................................................................................. 136
Listy dwukierunkowe....................................................................................................140
Listy X O R ......................................................................................................................142
B ufory................................................................................................................................... 148
Bufor pierścieniowy ......................................................................................................149
Kolejki FIFO/LIFO .......................................................................................................152
S to s................................................................................................................................. 152
K o n iec b a ła g a n u ,
czyli o n a z w a c h r e je s tr ó w i u k ła d ó w p e r y f e r y jn y c h ..................................... 1 5 5
Struktury opisujące mikrokontrolery XM EGA ................................................................. 159
Nazwy rejestrów .................................................................................................................. 162
Nazwy bitó w .........................................................................................................................162
R ozd ział 5 .
R ozd ział 6 .
Spis treści
5
Lepiej i prościej, czyli porty 10 procesora na sterydach ....................167
Rozdział 7.
Piny wejściowe i w yjściow e...............................................................................................168
Konwersja poziomów logicznych pomiędzy układami pracującymi
z różnymi napięciami zasilającymi .................................................................................. 171
Łączenie wyjścia procesora z układem pracującym z napięciem 5 V .................... 171
Zastosowanie aktywnego konw ertera...........................................................................174
Konwersja z napięcia wyższego na niższe .................................................................174
Dzielnik rezystorowy .....................................................................................................176
Użycie do konwersji napięć buforów scalonych .........................................................177
Bufor dwukierunkowy stosowany w magistralach typu open drain ........................178
Kontrola nad portami procesora ........................................................................................ 181
Piny wejściowe i w yjściow e................................................................................................ 182
Synchronizator....................................................................................................................... 184
Konfiguracja sterownika p in u .............................................................................................. 186
Konfiguracja totem -pole................................................................................................ 186
Konfiguracja Puli up/down ........................................................................................... 187
Konfiguracja bus keeper................................................................................................ 188
Konfiguracja wired-A N D .............................................................................................. 189
Konfiguracja w ired-O R ................................................................................................. 191
Odwracanie wyjść IO .....................................................................................................192
Kontrola szybkości opadania i narastania zboczy .....................................................193
Kontrola zdarzeń związanych z pinem ....................................................................... 193
Rejestr kontrolny p o rtu ...................................................................................................194
Atomowa modyfikacja stanu pinów i wsparcie dla RM W ...............................................196
Alternatywne funkcje pinu ...................................................................................................199
Porty wirtualne ..................................................................................................................... 200
Przekazywanie rejestru jako parametru funkcji .................................................................202
Remapowanie wyjść I O ....................................................................................................... 203
Rozdział 8.
Kontroler NVM — jak prosto i przyjemnie dobrać się do pamięci .... 2 05
Pamięć EEPROM i związane z nią operacje ....................................................................206
Dostęp do EEPROM z poziomu AVR-libc .................................................................208
Dostęp do EEPROM za pomocą bezpośredniego dostępu do kontrolera NVM
213
Techniki wear leveling ....................................................................................................... 219
Rozdzielenie kasowania i zapisu pam ięci....................................................................221
Dostęp do EEPROM z wykorzystaniem tokenów ......................................................224
EEPROM i awaria zasilania ......................................................................................... 232
Problem atomowości przy dostępie do EEPROM ......................................................244
Zapis do EEPROM z użyciem przerwań .....................................................................244
Zapobieganie uszkodzeniu zawartości pamięci EEPROM .............................................. 246
Dostęp do pamięci FLA SH .................................................................................................. 246
Typy danych związane z pamięcią FLA SH .................................................................248
Odczyt danych z pamięci FLASH ................................................................................250
Dostęp do FLASH w kompilatorze avr-gcc 4.7 i wyższych
— named address spaces................................................................................................... 252
Wskaźniki wykorzystujące przestrzenie adresow e.....................................................254
Typy 24-bitowe .................................................................................................................... 258
Rozdział 9.
Potrzebuję więcej mocy — słów kilka o konfiguracji zegara ............. 259
Rejestry kontrolne zegarów .................................................................................................260
Konfiguracja zegara..............................................................................................................262
Źródła zegara.................................................................................................................. 263
Odblokowywanie źródła zegara ...................................................................................270
Układ P L L ...................................................................................................................... 270
Zgłoś jeśli naruszono regulamin