C programiranje za Arduino: AVR mikrokontroleri i Atmel Studio
Tehnologija se konstantno menja. Novi mikrokontroleri postaju dostupni svake godine. Ono što je ostalo isto je programski jezik C koji se koristi za programiranje ovih mikrokontrolera. Ako želite da naučite ovaj standardni jezik da biste programirali mikrokontrolere, onda je ova knjiga za vas!
Arduino je hardverska platforma koja se koristi za učenje C programskog jezika, jer su Arduino pločice dostupne širom sveta i sadrže popularne AVR mikrokontrolere kompanije Atmel.
Atmel Studio se koristi kao razvojno okruženje za pisanje programa u jeziku C za AVR mikrokontrolere. To je potpuno integrisano razvojno okruženje (IDE) koje koristi GCC C softverske alatke za AVR mikrokontrolere i može se besplatno preuzeti.
• Započnite učenje programiranja još u prvom poglavlju
• Nije potrebno nikakvo iskustvo u programiranju
• Učite radeći – ukucajte i pokrenite primere programa
• Zabavan način da naučite C programski jezik
• Idealno za hobiste koji se bave elektronikom, studente i inženjere koji žele da nauče C programski jezik u ugrađenom okruženju na AVR mikrokontrolerima
• Koristite besplatni Atmel Studio IDE softver za Windows
• Pišite C programe za 8-bitne AVR mikrokontrolere koji se nalaze na Arduino Uno i MEGA pločicama
• Primeri koda rade na pločicama Arduino Uno i Arduino MEGA 2560, a mogu biti prilagođeni i za rad na drugim AVR mikrokontrolerima ili pločicama
• Koristite AVR Dragon programer i debager u kombinaciji sa okruženjem Atmel Studio da biste debagirali programe pisane u C jeziku
O autoru
Warwick A. Smith živi u Južnoj Africi i radi kao inženjer elektrotehnike i programer ugrađenih sistema. Warwick je najprodavaniji autor knjiga “Programming for Embedded Microcontrollers”, “ARM Microcontroller Interfacing” i “Open Source Electronics on Linux”.
SADRŽAJ
Uvod, 17
Učenje jezika C, 17
Ciljna publika, 17
AVR mikrokontroleri, 17
AVR arhitektura, 18
Tehnički termini, 18
Ugrađeni sistemi, 18
Tehnički termini, 18
Odabir ugrađenog sistema na kojem ćete učiti jezik C, 19
Zašto treba da koristite programski jezik C?, 20
Preduslovi, 21
Zahtevi hardvera, 21
Arduino pločica, 21
Uređaj za programiranje, 22
Pristup koji je korišćen u ovoj knjizi, 23
Nekoliko dobrih saveta, 24
Prateće datoteke i veb sajt za podršku, 24
Poglavlje 1 • Vaš prvi program u jeziku C, 25
1.1 • Preuzimanje i instaliranje Atmel Studia, 25
1.1.1 • Preuzimanje Atmel Studia, 25
1.1.2 • Instaliranje Atmel Studia, 26
1.2 • Preuzimanje i instaliranje emulatora terminala, 26
1.3 • Instaliranje datoteka šablona, 26
1.4 • Povezivanje hardvera, 27
1.5 • Kako se kreiraju programi u jeziku C, 27
1.6 • Početak programiranja, 27
1.6.1 Kreiranje novog projekta iz datoteka šablona, 28
1.6.2 • Izrada projekta, 32
1.6.3 • Problemi sa izradom i rešenja, 32
1.6.4 • Učitavanje i pokretanje programa, 32
1.6.5 • Problemi i rešenja prilikom učitavanja i pokretanja programa, 34
1.7 • O vašem prvom C programu, 34
• 5
1.8 • Analiziranje programa, 35
1.8.1 • Znakovi i stringovi, 35
1.8.2 • Funkcije, 36
1.8.3 • Naredbe programa, 37
1.8.4 • Pretprocesorske naredbe, 37
1.8.5 • Znakovi za belinu u tekstu, 37
1.8.6 • Završetak programa, 38
1.9 • Vežbe, 38
1.9.1 • Tri reda teksta, 38
1.9.2 Pronađite greške, 38
1.10 • Rešenja, 39
1.10.1 • Rešenje za 1.9.1, 39
1.10.2 • Rešenje za 1.9.2, 39
1.11 • Rezime, 40
Poglavlje 2 • Osnove programskog jezika C, 41
2.1 • Ulaz, izlaz i promenljive, 41
2.1.1 • Promenljive, 43
2.1.2 • Dobijanje unosa od korisnika pomoću funkcije scanf(), 44
2.2 • Tipovi promenljive, 47
2.2.1 • Promenljive sa pokretnom tačkom, 48
2.2.2 • Promenljive znaka, 48
2.3 • Aritmetičke operacije, 49
2.4 • Specifikatori širine polja, 51
2.5 • Kompajliranje i povezivanje, 52
2.6 • Greške i upozorenja, 53
2.6.1 • Greška tokom kompajliranja, 54
2.6.2 • Greške tokom povezivanja, 55
2.7 • Vežbe, 56
2.7.1 • Izračunavanja pomoću Omovog zakona, 56
2.7.2 • Nazivi promenljivih, 57
2.8 • Rešenja, 57
2.8.1 • Rešenje za 2.7.1, 57
2.8.2 • Rešenje za 2.7.2, 58
2.9 • Rezime, 58
• 6
Poglavlje 3 • Operator poređenja i odluke, 61
3.1 • Upoređivanje vrednosti, 61
3.1.1 • Vrednost True i False, 61
3.1.2 • Operatori poređenja u jeziku C, 62
3.2 • Odluke, 63
3.2.1 • Upotreba naredbe if za donošenje odluka, 63
3.2.2 • Upotreba naredbe else u kombinaciji sa naredbom if, 64
3.2.3 • Operatori = i ==, 65
3.2.4 • Upotreba konstrukcije else – if u kombinaciji sa naredbom if, 67
3.3 • Vežbe, 70
3.3.1 • Poređenje promenljive, 70
3.3.2 • Poređenje promenljive 2, 70
3.4 • Rešenja, 70
3.4.1 • Rešenje za vežbu 3.3.1, 70
3.4.2 • Rešenje za vežbu 3.3.2, 71
3.5 • Rezime, 72
Poglavlje 4 • Petlja while i komentarisanje koda, 73
4.1 • Petlja while, 73
4.2 • Upotreba naredbe if unutar petlje while, 75
4.3 • Igra “Pogodi broj”, 76
4.4 • Povratak na primer programa za kontrolu temperature, 78
4.5 • Komentarisanje programa, 79
4.6 • Stil programiranja, 81
4.6.1 • Postavke tabulatora u Atmel Studiu, 81
4.6.2 • Odabir širine tabulatora, 81
4.6.3 • Primeri uvlačenja koda, 82
4.6.4 • Drugi aspekti stila programiranja, 84
4.7 • Vežbe, 84
4.7.1 • Oduzimanje, 84
4.7.2 • Programska petlja, 85
4.8 • Rešenja, 85
4.8.1 • Rešenje za vežbu 4.7.1, 85
4.8.2 • Rešenje za vežbu 4.7.2, 86
4.9 • Rezime, 87
• 7
Poglavlje 5 • Funkcije, 89
5.1 • Vaša druga funkcija, 89
5.2 • Prosleđivanje podataka funkciji, 91
5.3 • Prosleđivanje više vrednosti funkciji, 92
5.4 • Prosleđivanje promenljive funkciji, 94
5.5 • Vraćanje vrednosti iz funkcije, 95
5.6 • Prosleđivanje vrednosti funkciji i vraćanje vrednosti, 96
5.7 • Program za simulaciju trepćućeg LED-a, 97
5.7.1 • Petlja while(1), 98
5.7.2 • Tip podataka long, 98
5.8 • Pretprocesorske naredbe, 99
5.9 • Funkcije pozivaju funkcije, 103
5.10 • Korićenje više izvornih datoteka, 103
5.10.1 • Dodavanje nove C izvorne datoteke u Atmel Studio projekat .104
5.10.2 • Projekat koji sadrži dve C datoteke izvornog koda, 104
5.11 • Datoteke zaglavlja, 106
5.12 • Kako su funkcije povezane sa datotekama povezivanja i biblioteke, 106
5.13 • Vežbe, 107
5.13.1 • Paralelno izračunavanje otpora u otporniku, 107
5.13.2 • C datoteka formule za otpornik, 107
5.14 • Rešenja, 108
5.14.1 • Rešenje za vežbu 5.13.1, 108
5.14.2 • Rešenje za vežbu 5.13.2, 109
5.15 • Rezime, 110
• 8
Poglavlje 6 • Brojevni sistemi, 111
6.1 • Osnove binarnog sistema, 111
6.2 • Potreba za binarnim brojevima, 112
6.3 • Brojevni sistemi, 112
6.3.1 • Kratak pregled decimalnih brojeva, 112
6.3.2 • Binarni brojevi, 113
6.3.3 • Heksadecimalni brojevi, 116
6.4 • Korišćenje heksadecimalnih brojeva u C programima, 122
6.5 • ASCII alfanumerički kod, 125
6.6 • Vežbe, 127
6.6.1 Upišite heksadecimalni broj u port, 127
6.7.1 • Rešenje za vežbu 6.6.1, 127
6.7.2 • Rešenje za vežbu 6.6.2, 128
6.8 • Rezime, 128
Poglavlje 7 • Memorija i mikrokontroleri, 129
7.1 Osnove memorije, 129
7.1.1 ROM (Memorija samo za čitanje), 129
7.1.2 RAM (Radna memorija), 129
7.1.3 Podaci uskladišteni u memoriju, 129
7.2 Pregled memorijskog čipa, 130
7.3 • Kako mikroprocesori pristupaju memoriji i periferijama, 133
7.4 • Pokazivači, 134
7.5 • Više o C tipovima podataka, 138
7.6 • Veličine memorije mikrokontrolera, 143
7.7 • Rezime, 144
• 9
Poglavlje 8 – Pristup AVR portovima u C programu, 145
8.1 • AVR pinovi i portovi, 145
8.2 • Uključivanje i isključivanje LED-a na pločici, 148
8.3 • Kontrolisanje LED-ova koji su povezani sa portom, 152
8.3.1 • Povezivanje hardvera, 152
8.3.2 • Započinjanje novog Atmel Studio projekta od nule, 155
8.3.3 • Program za kontrolu porta LED-a, 157
8.4 • Operatori uvećanja i umanjenja, 159
8.4.1 • Prefiksno uvećanje i umanjenje, 159
8.4.2 • Sufiksno uvećanje i umanjenje, 159
8.5 • Rezime, 161
Poglavlje 9 • I/O i mape memorije, 163
9.1 • Ulazni pinovi, 163
9.1.1 • Povezivanje prekidača sa pinom porta, 163
9.1.2 • Očitavanje stanja prekidača u C programu, 164
9.2 • Ulazni i izlazni pinovi porta koji se nalaze na istom portu, 166
9.2.1 • Povezivanje prekidača i LED-a, 166
9.2.2 • Programiranje prekidača i LED-a, 166
9.2.3 • Operator konjukcije nad bitovima (AND), 167
9.3 • Mapa memorije AVR mikrokontrolera, 169
9.3.1 • Arhitektura memorije, 170
9.3.2 • Programska memorija Flash, 170
9.3.3 • Podaci memorije, 171
9.4 • Rezime, 171
• 10
Poglavlje 10 • Prethodne revidirane teme o C programiranju, 173
10.1 • Specifikatori formata, 173
10.2 • Revidirani specifikatori širine polja, 173
10.3 • Izlazne sekvence, 176
10.4 • Petlje, 178
10.4.1 Petlja while koja koristi naredbe break i continue, 178
10.4.2 Petlja do – while, 180
10.4.3 Petlja for, 181
10.5 • Problem sa funkcijom printf() u ugrađenim sistemima, 182
10.5.1 • Programiranje serijskog porta, 183
10.5.2 • Pisanje funkcija serijskog porta, 184
10.6 • Ugnežđene petlje i odluke, 188
10.6.1 • Ugnežđavanje petlji, 188
10.6.2 • Ugnežđavanje odluka, 189
10.7 • Donošenje odluke pomoću naredbe switch, 191
10.8 • Uslovni operator, 193
10.9 • Funkcije i pokazivači, 194
10.9.1 • Prosleđivanje adrese funkciji, 195
10.9.2 • Vraćanje više vrednosti iz funkcije, 196
10.10 • Promenljive i opseg primene, 197
10.10.1 • Lokalne promenljive, 197
10.10.2 • Globalne promenljive, 197
10.11 • Statičke promenljive, 199
10.12 • Tipovi podataka sa pokretnom tačkom, 200
10.14 • Vežbe, 202
10.14.1 • Odbrojavanje pomoću petlje for, 202
10.14.2 • Kontrolisanje LED-a pomoću konstrukcije switch, 202
10.15 • Rešenja, 202
10.15.1 • Rešenje za vežbu 10.14.1, 202
10.15.2 • Rešenje za vežbu 10.14.2, 203
10.16 • Rezime, 204
• 11
Poglavlje 11 • Nizovi i stringovi, 205
11.1 • Nizovi, 205
11.2 • Stringovi, 209
11.2.1 • Upisivanje u string, 210
11.2.2 • Inicijalizovanje stringa, 212
11.2.3 • Funkcije stringa C biblioteke, 213
11.3 • Nizovi i adrese, 215
11.3.1 • Adrese nizova i elemenata niza, 215
11.3.2 • Prosleđivanje niza funkciji, 216
11.4 • Stringovi kao pokazivači, 219
11.5 • Upisivanje u string pomoću funkcije sprintf(), 219
11.6 • Višedimenzionalni nizovi, 221
11.7 • Vežbe, 227
11.7.1 • Poruka za dugme, 227
11.7.2 • Čekanje dugmeta, 227
11.8 • Rešenja, 227
11.8.1 • Rešenje za vežbu 11.7.1, 227
11.8.2 • Rešenje za vežbu 11.7.2, 227
11.9 • Rezime, 228
Poglavlje 12 • Upravljanje bitom i logički operatori, 229
12.1 • Upravljanje bitom pomoću operatora nad bitovima, 229
12.1.1. • Zašto treba da koristimo operatore nad bitovima?, 231
12.1.2 • Upotreba AND i OR operatora nad bitovima, 232
12.1.3 • Upotreba NOT operatora nad bitovima, 234
12.1.4 • Upotreba XOR operatora nad bitovima, 235
12.1.5 • Operatori za pomeranje ulevo i udesno, 237
12.1.6 • C operatori dodele, 238
12.2 • Logički operatori, 239
12.3 Prioritet operatora, 242
12.4 • Upotreba unapred definisanih naziva bita pomoću operatora pomeranja, 243
12.4.1 Unapred definisani nazivi bita u C kodu, 243
12.4.2 Makro _BV() AVR mikrokontrolera, 246
12.5 • Vežbe, 248
12.5.1 • Ispisivanje binarnog broja, 248
• 12
12.6 • Rešenja, 248
12.6.1 • Rešenje za vežbu 12.5.1, 248
Poglavlje 13 • Programiranje hardvera, 251
13.1 Hardverski tajmer/brojač, 251
13.1.1 Zadato vreme kašnjenja tajmera, 253
13.1.2 • Funkcija hardverskog tajmera, 256
13.2 • Analogno-digitalni pretvarač (ADC), 257
13.3 Nadzorni tajmer, 260
13.4 • I/O portovi, 262
13.4.1 • Funkcionalnost registra I/O porta, 262
13.4.2 Registar za promenu stanja pina, 263
13.4.3 • Aktiviranje pull-up otpornika, 264
13.5 • Rezime, 266
Poglavlje 14 • Debagiranje, 267
14.1 • Konfigurisanje Arduino pločica radi debagiranja, 267
14.2 • Debagiranje primera programa, 268
14.3 • Isključivanje optimizacije kompajlera, 269
14.4 • Aktiviranje režima debugWire na AVR-u, 269
14.5 • Upotreba debagera, 271
14.5.1 • Pokretanje debagera, 271
14.5.2 Kretanje korak po korak i dodavanje praćenja, 271
14.5.3 • Prikaz hardverskih registara, 271
14.5.4 • Prikaz i modifikovanje vrednosti promenljivih i registra, 273
14.5.5 • Prikaz promenljivih u memoriji, 273
14.5.6 Zaustavljanje debagiranja i podešavanje tačaka prekida, 275
14.5.7 Prikaz promena stanja pina, 276
14.5.8 • Prikaz promena vrednosti promenljive i podešavanje
uslovnih tačaka prekida, 276
14.5.9 • Ulazak u funkciju, 277
14.6 • Aktiviranje ISP-a na AVR-u i isključivanje debugWIRE-a, 278
14.7 • Vežbe, 278
14.8 • Rezime, 278
• 13
Poglavlje 15 • Prekidi, 279
15.1 • Obrada prekida u C programu, 279
15.2 • Korišćenje prekida tajmera, 279
15.3 Prekid tajmera od jedne milisekunde, 282
15.4 • Rezime, 284
Poglavlje 16 • Kratak pregled C jezika, 285
16.1 • Strukture, 285
16.1.1 • Upotreba struktura u C programima, 285
16.1.2 Inicijalizovanje struktura, 287
16.1.3 • Pokazivači strukture, 288
16.2 • Unije, 288
16.3 • Nabrojani tip, 291
16.4 • Deklarator typdef, 294
16.5 • Specifikator memorijske klase, 294
16.6 • Kvalifikatori tipa, 295
16.7 • Naredba goto, 296
16.8 • Lista svih C ključnih reči, 296
16.9 • Još pretprocesorskih naredbi, 296
16.10 Tipovi promenljive C99, 298
16.11 Alternativna kontinuirana petlja, 299
16.12 Rezime, 299
Poglavlje 17 • C projekti, 301
17.1 • Funkcije za drajver serijskog porta, 301
17.1.1 • Napomene o dizajnu drajvera serijskog porta, 301
17.1.2 • Kod za drajver serijskog porta, 302
17.2 • Pretvaranje brojeva u stringove, 306
17.2.1. • Korišćenje AVR C funkcija biblioteke, 306
17.2.2 • Pisanje broja u funkcije za konverziju stringa, 309
17.3 • Voltmetar, 314
17.3.1 • Funkcije projekta voltmeter, 314
17.3.2 • Kod projekta voltmeter, 314
17.3.3 • Aktiviranje printf familije funkcija, 317
17.3.4 • Princip operacije koda, 317
• 14
17.3.5 • Ispitivanje koda, 318
17.3.6 • Tajmiranje koda, 320
17.4 • Štoperica, 320
17.4.1 • Hardver i kod projekta stopwatch, 320
17.4.2 • Projektovanje štoperice, 324
17.4.3 • Objašnjenje koda projekta stopwatch, 324
17.5 • Koji je sledeći korak?, 328
Dodatak A • ASCII tabela, 329
Dodatak B • Mapiranje pinova porta za Arduino, 331
B.1 • Arduino Uno, 331
B.2 • Arduino MEGA, 332
Dodatak C • Standardno I/O kolo za Arduino, 335
C.1 • Arduino Uno, 335
C.2 • Arduino MEGA, 336
Dodatak D • Reference i izvori, 337
D.1 • Veb sajt knjige i datoteke, 337
D.2 • Tabele sa podacima i napomene o aplikaciji, 337
D.3 • AVR reference C standardne biblioteke, 337
D.4 • AVR forum, 337
D.5 • Dodatni izvori, 337
Detaljni podaci o knjiziNaslov: C programiranje za Arduino: AVR mikrokontroleri i Atmel Studio
Izdavač: EHO
Strana: 330 (cb)
Povez: meki
Pismo: latinica
Format: B5
Godina izdanja: 2017
ISBN: 978-86-80134-08-6