fragment mikrokontrolery-avr-jezyk-c-podstawy-programowan-918275 ATNEL Kardaś.pdf
(
1460 KB
)
Pobierz
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
Książka przeznaczona jest dla elektroników i hobbystów, którzy chcą szybko, w oparciu o interesujące
przykłady, poznać język C przeznaczony dla mikrokontrolerów AVR i nauczyć się pisać dla nich
programy. Jest to język wysokiego poziomu o nieograniczonych możliwościach, pozwala również
łatwo i wygodnie dokonywać połączeń z językiem maszynowym asembler. W sposób przystępny
opisana została także architektura oraz możliwości samych mikrokontrolerów AVR wchodzących w
skład dwóch rodzin: ATmega i ATtiny. Prezentowany materiał podzielony jest na trzy części. Pierwsza
obejmuje zagadnienia związane z budową mikrokontrolerów, druga to wykład na temat podstaw samego
języka, a trzecia zawiera szereg ćwiczeń wraz z kodami źródłowymi, komentarzami i bogatymi opisami.
Opracowanie graiczne: Mirosław Kardaś
Redakcja:
Małgorzata Koczańska
© Copyright by Wydawnictwo Atnel
Szczecin 2011
ISBN 978-83-931797-0-1
Wydawnictwo ATNEL
ul. Jasna 15/38
70-777 Szczecin
fax: 91 4635 683
http://www.atnel.pl
e-mail: biuro@atnel.pl
Wydanie
I
Wszystkie znaki występujące w tekście są zastrzeżonymi znakami irmowymi bądź towarowymi ich właścicieli. Autor oraz
wydawnictwo Atnel dołożyli wszelkich starań, by publikowane tu 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 Atnel nie ponoszą także żadnej odpowiedzialności za ewentualne szkody wynikłe z wykorzystania
informacji zawartych w książce. Wszelkie prawa zastrzeżone. Nieautoryzowane rozpowszechnianie całości lub fragmentów
niniejszej publikacji w jakiejkolwiek postaci jest zabronione. Wykonywanie wszelkiego rodzaju kopii na dowolnych nośnikach
powoduje naruszenie praw autorskich niniejszej publikacji.
Strona | 3
Spis treści
Przedmowa
........................................................7
1 Wstęp....................................................................8
2 Zaczynamy ...............................................................9
2.1 Pierwszy „pusty” program w C ........................................9
2.2 Od programu do procesora............................................10
2.2.1 Kompilacja.................................................... 10
2.2.2 Środowisko ................................................... 12
2.2.3 Programatorsprzętowy ...................................... 13
2.2.4 Programowanieprocesora.................................... 14
2.2.5 UruchamiamyAVRStudio...................................... 15
2.2.6 Platformasprzętowa......................................... 23
3 ProcesoryAVR...........................................................25
3.1 Informacje ogólne ....................................................25
3.2 Programowanie ISP ...................................................28
3.3 Sposoby taktowania procesorów .....................................29
3.3.1 Wewnętrznyoscylator ....................................... 30
3.3.2 Zewnętrznyrezonatorkwarcowy ............................ 30
3.3.3 ZewnętrznyoscylatorRC..................................... 31
3.3.4 Zewnętrznygenerator ....................................... 32
3.4 Zagadnienia związane z zasilaniem ...................................32
3.5 Układ resetu mikrokontrolera AVR ..................................34
3.6 Wewnętrzne moduły procesorów AVR ................................34
3.6.1 PamięćFLASH,RAM,EEPROM .................................. 34
3.6.2 Przerwania ................................................... 38
3.6.3 Timerysprzętowe............................................. 40
3.6.3.1 PodstawowetrybypracyTimerów................... 42
3.6.3.1.1 TrybzwykłegoLICZNIKA.................... 42
3.6.3.1.2 TrybCTC–jedenznajważniejszych .......... 44
3.6.3.1.3 TrybPWM.................................. 45
3.6.4 PrzetwornikADC............................................. 48
3.6.5 Modułkomparatoraanalogowego ............................ 50
3.6.6 ModułUART/USART,(czyliRS232)............................. 51
3.6.7 ModułSPI..................................................... 52
3.6.8 ModułTWI,(czyliI2C) ........................................ 52
3.6.9 Watchdog..................................................... 53
3.6.10 Trybyoszczędzaniaenergii ................................... 53
3.6.11 FUSEBITS(ustawieniakonfiguracjiAVR)...................... 54
3.6.12 LOCKBITS(zabezpieczeniaAVR)............................... 55
Strona | 4
3.6.13 Bootloader–niesamowitemożliwości........................ 56
4 PodstawyjęzykaC .......................................................58
4.1 Zagadnienia ogólne ...................................................58
4.1.1 Komentarze................................................... 58
4.1.2 Definicjaadeklaracja ........................................ 59
4.1.3 Wyrażenialogiczne(warunki)................................ 60
4.2 Najważniejsze instrukcje..............................................60
4.2.1 InstrukcjawarunkowaIf,else ............................... 60
4.2.2 Pętlawhile................................................... 63
4.2.3 Pętlado..while............................................... 64
4.2.4 Pętlafor ..................................................... 64
4.2.5 Instrukcjabreak.............................................. 66
4.2.6 Instrukcjaswitch............................................. 66
4.2.7 Instrukcjacontinue .......................................... 68
4.2.8 Nawiasyklamrowe............................................ 69
4.2.9 Instrukcjagoto............................................... 69
4.3 Typy ..................................................................70
4.3.1 SystematykatypówjęzykaC................................... 71
4.3.1.1 Typyzłożone ........................................ 74
4.3.1.2 Zakreswidocznościzmiennych ...................... 76
4.3.1.3 Typvoid............................................. 77
4.3.1.4 Specyfikatorconst.................................. 78
4.3.1.5 Specyfikatorvolatile ............................... 79
4.3.1.6 Specyfikatorregister ............................... 80
4.3.1.7 InstrukcjaTypedef.................................. 80
4.3.1.8 Typywyliczenioweenum ............................ 82
4.3.2 StałewjęzykuC .............................................. 85
4.3.2.1 Stałejakoliczbycałkowite ......................... 85
4.3.2.2 Stałejakoliczbyzmiennoprzecinkowe............... 86
4.3.2.3 Stałeznakowe ...................................... 86
4.3.2.4 Stałetekstowe,stringi ............................. 88
4.4 Operatory.............................................................89
4.4.1 Arytmetyczne................................................. 89
4.4.1.1 Modulo,czyli% ..................................... 89
4.4.1.2 Inkrementacjaidekrementacja++-- ................ 91
4.4.1.3 Operatorprzypisania=.............................. 92
4.4.2 OperatoryLogiczne........................................... 93
4.4.2.1 Operatoryrelacji ................................... 93
4.4.2.2 Suma||oraziloczyn&&logiczny..................... 94
4.4.2.3 Negacja–wykrzyknik! .............................. 95
4.4.2.4 Operatorybitowe ................................... 95
Strona | 5
4.4.3 Pozostałeoperatoryprzypisania.............................. 102
4.4.4 Operatorpobieraniaadresu& ................................ 102
4.4.5 Wyrażeniewarunkowe?:.................................... 103
4.4.6 Operatorsizeof()............................................. 104
4.4.7 Priorytetyoperatorów....................................... 105
4.4.8 Operatoryrzutowania........................................ 106
4.5 Funkcje *** ............................................................107
4.5.1 Wynikdziałaniafunkcji–jaktodziała? ...................... 110
4.5.2 Stos–ujarzmianie“potwora” ................................. 112
4.5.3 Przekazywanieargumentówprzezwartość................... 114
4.5.4 Funkcjetypuinline ........................................... 116
4.5.5 Zakresywidocznościnazw .................................... 123
4.5.5.1 Zakresglobalny .................................... 123
4.5.5.2 Zakreslokalnyizmienneautomatyczne ............. 123
4.5.5.3 Zmienneifunkcjestatyczne ......................... 124
4.5.6 Funkcjewróżnychplikachprojektu .......................... 126
4.6 Preprocesor ..........................................................132
4.6.1 Dyrektywa#define........................................... 132
4.6.2 Makrodefinicje ............................................... 134
4.6.3 Dyrektywa#undef............................................ 135
4.6.4 Operator##-sklejanienazw ................................. 136
4.6.5 Operatorzamianynastring#................................. 136
4.6.6 Dyrektywykompilacjiwarunkowej ........................... 137
4.6.7 Dyrektywy#ifdeforaz#ifndef .............................. 139
4.6.8 Dyrektywy#erroripozostałe................................ 140
4.6.9 Dyrektywa#include.......................................... 140
4.7 Tablice................................................................141
4.7.1 Tablicewielowymiarowe ..................................... 144
4.7.2 Tablicajakoargumentfunkcji ................................ 145
4.7.3 Tabliceznakowe .............................................. 147
4.8 Wskaźniki ............................................................153
4.9 Struktury, unie, pola bitowe..........................................164
4.9.1 Struktury .................................................... 164
4.9.2 Unie .......................................................... 167
4.9.3 Połączeniestrukturyzunią .................................. 168
4.9.4 Polabitowe .................................................. 171
5 Warsztaty–zajęciapraktyczne..........................................173
5.1 Przygotowanie procesora do pracy...................................173
5.2 Migocząca dioda LED..................................................174
5.3 Obsługa klawiszy typu micro-switch .................................177
5.4 Multipleksowanie LED - przerwania ..................................182
Strona | 6
5.5 Wyświetlacz LCD (hd44780) ..........................................202
5.6 Sterowanie PWM (kolorowa dioda RGB) ..............................223
5.7 Pomiar napięcia za pomocą ADC .......................................235
5.7.1 Klawiaturaanalogowa ....................................... 246
5.7.2 Różnicowypomiarnapięcia-amperomierz..................... 246
5.8 Komunikacja RS232 / RS485 ...........................................257
5.8.1 Inicjalizacja,kalibracja....................................... 257
5.8.2 UART,przerwania,buforcykliczny............................ 266
5.9 Odczyt-zapis magistrali I2C (RTC, EEPROM) ...........................277
5.9.1 RTC–sprzętowaobsługaI2C.................................. 278
5.9.2 ProgramowaimplementacjaI2C ............................... 285
5.9.3 EEPROM–I2C ................................................. 289
5.10 Moduł SPI .............................................................291
5.10.1 SprzętowaobsługaSPI........................................ 291
5.10.2 ProgramowaobsługaSPI...................................... 297
5.11 Magistrala 1Wire.....................................................299
5.12 Odbiór kodów RC5 w podczerwieni ...................................307
5.13 Sterowanie silnikami DC ..............................................316
5.14 Silnik krokowy unipolarny ...........................................320
5.15 Silnik krokowy bipolarny.............................................326
5.16 Odczyt/zapis kart pamięci SD (FAT) ...................................330
5.16.1 FatFS ......................................................... 333
5.16.2 PetitFS ....................................................... 348
6 FuseBity–MkAvrCalculator............................................356
6.16.1 Fusebity,Lockbity ............................................ 356
6.16.2 MkAvrCalculator............................................. 360
7 Bootloader..............................................................368
8 Projekty.................................................................371
8.1 Pilot na podczerwień .................................................371
8.2 Moduł Bluetooth (BTM-112/222).....................................379
8.3 Ściemniacz – płynna regulacja mocy 230V .............................384
8.4 Wstęp do systemów czasu rzeczywistego .............................395
8.5 Obsługa stosu AVR - TCP/IP ...........................................417
8.5.1 Kartasieciowaethernet–ENC28J60.......................... 419
8.5.2 Serwerhttp .................................................. 422
8.5.3 Sterownikurządzeń–protokółUDP.......................... 430
8.6 Programator USBASP .................................................454
9 ŚrodowiskoECLIPSE .....................................................455
Plik z chomika:
mikroprocesory
Inne pliki z tego folderu:
Mikrokontrolery AVR - programowanie w języku C przykłady zastosowań.pdf
(16603 KB)
Mikrokontrolery rodziny AVR w obudowach 8-wyprowadzeniowych Arkadiusz Krysiak.pdf
(6488 KB)
fragment mikrokontrolery-avr-jezyk-c-podstawy-programowan-918275 ATNEL Kardaś.pdf
(1460 KB)
ATmega16(L).pdf
(7306 KB)
ATmega644.pdf
(7708 KB)
Inne foldery tego chomika:
ARM
ARM Tools
AVR programy
AVR toolchain
en
Zgłoś jeśli
naruszono regulamin