Programowanie układów AVR dla praktyków
Reaguj natychmiastowo na tyle zewnętrznych zdarzeń, ile układ AVR ma pinów.
Zbuduj niedrogi wykrywacz kroków.
Zaprojektuj elektronikę sterującą silnikami prądu stałego i silnikami krokowymi
oraz innymi elementami o dużym poborze prądu.
Przygotuj gadający woltomierz, w którym próbki dźwięku zapisane są w
nieulotnej pamięci mikrokontrolera.
Wykorzystaj protokoły SPI i I2C.
Współczesny świat elektroniki jest podbijany przez układ Arduino. Przemawia za nim
wygoda oraz proste tworzenie całkiem zaawansowanych projektów. Jeżeli jednak wymagasz
najwyższej wydajności, reakcji na zdarzenia w czasie rzeczywistym lub
wielozadaniowości, warto, żebyś wykonał kolejny krok i poznał układy AVR firmy
Atmel. Brzmi zachęcająco?
Doskonale! W Twoje ręce oddajemy książkę, która pozwoli Ci poznać pasjonujący
świat tych układów. W kolejnych rozdziałach nauczysz się wykorzystywać ich
potencjał do pisania swoich własnych programów w języku C oraz komunikowania się ze
światem zewnętrznym. Ponadto dowiesz się, jak korzystać z komunikacji szeregowej,
wejść cyfrowych oraz przerwań sprzętowych. Na sam koniec, w części poświęconej
zaawansowanym zagadnieniom, zobaczysz, jak używać przełączników i protokołu I2C oraz
sterować silnikami. Książka ta przyda się wszystkim pasjonatom elektroniki, którzy
pragną odkryć potencjał układów AVR.
Dzięki tej książce:
skompletujesz potrzebne narzędzia
nauczysz się programować układy AVR
wykorzystasz Arduino do programowania AVR
zastosujesz przerwania sprzętowe
użyjesz układu AVR w zaawansowanych projektach
Wstęp (11)
CZĘŚĆ I. PODSTAWY
1. Wprowadzenie (19)
- Czym jest mikrokontroler? Obraz ogólny (19)
- Komputer w jednym układzie... (19)
- ...naprawdę mały komputer (20)
- Co mogą mikrokontrolery? (21)
- Sprzęt: obraz ogólny (21)
- Rdzeń: procesor, pamięć i układy wejścia-wyjścia (23)
- Układy peryferyjne: ułatwianie sobie życia (25)
2. Programowanie układów AVR (29)
- Programowanie układu AVR (29)
- Narzędzia programowe (32)
- Konfiguracja w systemie Linux (33)
- Konfiguracja w systemie Windows (33)
- Konfiguracja w systemie Mac (34)
- Konfiguracja modułu Arduino (34)
- Program make i pliki makefile (34)
- AVR i Arduino (35)
- Zalety platformy Arduino (35)
- Wady platformy Arduino (35)
- Arduino: sprzęt czy oprogramowanie? I to, i to! (37)
- Arduino to AVR (37)
- Arduino to programator układów AVR (40)
- Inne programatory sprzętowe (42)
- Moje ulubione programatory (42)
- Zaczynamy: błyskające diody LED (43)
- Podłączenia (44)
- Złącza ISP (46)
- Program AVRDUDE (48)
- Konfigurowanie plików makefile (51)
- Pamięć Flash (53)
- Rozwiązywanie problemów (53)
3. Wyjścia cyfrowe (55)
- blinkLED wersja 2.0 (56)
- Struktura kodu języka C dla układu AVR (57)
- Rejestry sprzętowe (57)
- Podsumowanie programu blinkLED (60)
- Zabawka świetlna (61)
- Budowanie układu (61)
- Ładne wzorki: kod zabawki (65)
- Eksperymentuj! (67)
4. Manipulacje na bitach (69)
- Praca z kodem: oczy Cylonów (70)
- Manipulowanie bitami a oczy Cylonów (71)
- Zaawansowane manipulowanie bitami: coś więcej niż oczy Cylonów (74)
- Włączanie bitów operatorem OR (76)
- Przełączanie bitów operatorem XOR (78)
- Wyłączanie bitów operatorami AND i NOT (79)
- Popisy (81)
- Podsumowanie (83)
5. Szeregowe wejście i wyjście (85)
- Komunikacja szeregowa (85)
- Implementowanie komunikacji szeregowej w układzie AVR: projekt pętli zwrotnej (88)
- Konfigurowanie: układ AVR (88)
- Konfigurowanie: komputer (90)
- Konfigurowanie: adapter USB-port szeregowy (90)
- Sprawdzanie całości: testowanie pętli zwrotnej (91)
- Usuwanie problemów z połączeniami szeregowymi (94)
- Konfigurowanie modułu USART: szczegóły (94)
- Organy z układu AVR (99)
- Muzyka z mikrokontrolera (101)
- Biblioteka muzyczna (103)
- Kod (104)
- Superdodatki (106)
- Podsumowanie (108)
6. Wejścia cyfrowe (109)
- Przyciski, przełączniki itd. (109)
- Konfigurowanie wejść: rejestry DDR, PORT i PIN (111)
- Interpretowanie naciśnięć przycisków (113)
- Zmiana stanu (115)
- Eliminowanie odbić (116)
- Przykład kodu obsługującego odbicia (118)
- Pozytywka (120)
- Przycisk na szefa (122)
- Skrypty dla komputera stacjonarnego (123)
- Rozszerzenia (126)
7. Konwerter analogowo-cyfrowy - część 1. (129)
- Przegląd elementów układu AVR (130)
- Miernik światła (133)
- Schemat (133)
- Kod programu (137)
- Inicjacja konwertera AC (140)
- Rozszerzenia (141)
- Powolny oscyloskop (141)
- Kod dla układu AVR (143)
- Kod dla komputera (145)
- Podobieństwa (147)
- Oświetlenie nocne i multiplekser (147)
- Multiplekser (147)
- Konfigurowanie bitów multipleksera (148)
- Schemat (149)
- Kod (150)
- Podsumowanie (151)
CZĘŚĆ II. ŚREDNIO ZAAWANSOWANA
8. Przerwania sprzętowe (155)
- Przerwania zewnętrzne: przykłady użycia przycisku (157)
- Przykład z zewnętrznym przerwaniem INT0 (158)
- Przykład przerwania wywoływanego zmianą stanu pinu (163)
- Czujnik pojemnościowy (165)
- Czujnik (167)
- Kod programu (169)
- Zmienne ulotne i globalne (171)
- Debugowanie układu (173)
9. Wprowadzenie do sprzętowego zegara/licznika (175)
- Zegary i liczniki - do czego mają służyć? (175)
- Sprawdź swój refleks (177)
- Użycie zegara numer 0 do poprawienia 8-bitowych organów (182)
- Radio AM (185)
- Schemat (187)
- Szybkość procesora (187)
- Radio AM: kod programu (191)
- Podsumowanie (195)
10. Modulacja szerokości impulsu (197)
- Jasne i ciemne diody: technika PWM (198)
- Siłowe rozwiązanie PWM (200)
- Modulowanie impulsów za pomocą liczników (201)
- Inicjowanie liczników dla trybu PWM (203)
- Modulowanie szerokości impulsu na dowolnym pinie (206)
- Przykład modulacji impulsu na dowolnym pinie (206)
- Zakończenie: inne możliwości dla PWM i listy kontrolne liczników (208)
11. Sterowanie serwomotorami (213)
- Serwomotory (214)
- Sekretne życie serwomotorów (215)
- Schemat (216)
- Kod programu (217)
- Zegar słoneczny z serwomotorem (220)
- Budowanie zegara (221)
- Przygotuj lasery! (223)
- Kod programu (225)
- Kalibracja serwomotoru zegara słonecznego (232)
12. Konwerter analogowo-cyfrowy - część 2. (237)
- Woltomierz (238)
- Schemat (239)
- Kod programu (242)
- Wykrywacz kroków (246)
- Schemat (246)
- Teoria (251)
- Wykładniczo ważona średnia krocząca (252)
- Kod programu (255)
- Podsumowanie (258)
CZĘŚĆ III. TEMATY ZAAWANSOWANE
13. Zaawansowane sztuczki z PWM (263)
- Bezpośrednia synteza cyfrowa (264)
- Tworzenie fali sinusoidalnej (267)
- Następny krok: miksowanie i głośność (269)
- Miksowanie (271)
- Dynamiczna kontrola głośności (273)
- Odpytywanie portu USART (276)
- Obwiednia ADSR (276)
- Pliki uzupełniające (277)
14. Przełączniki (279)
- Sterowanie dużymi prądami: przełączniki (280)
- Tranzystory bipolarne (281)
- Tranzystory polowe (MOSFET) (283)
- Polowe tranzystory mocy (284)
- Przekaźniki (285)
- Triaki i przekaźniki statyczne (286)
- Przełączniki: podsumowanie (287)
- Silniki prądu stałego (288)
15. Zaawansowane sterowanie silnikami (295)
- Cofanie: mostki typu H (296)
- Program: zakręćmy sobie mostkiem (299)
- Mostek H tylko dla ekspertów (301)
- Mostek H i modulacja szerokości impulsu (302)
- Tryb napędu znak-moduł (303)
- Tryb napędu blokada-antyfaza (304)
- Porównanie trybów napędu (305)
- Silniki krokowe (307)
- Rodzaje silników krokowych (308)
- Pełne kroki i półkroki (308)
- Identyfikowanie przewodów silnika krokowego (311)
- Zbyt wiele przewodów! (312)
- Podwójny mostek H: układ SN754410 (312)
- Kod programu (315)
- Kontrola przyspieszeń (318)
- Mikrokroki (320)
16. SPI (325)
- Jak działa protokół SPI? (326)
- Przykład wymiany bitów (328)
- Rejestry przesuwające (328)
- Zewnętrzna pamięć EEPROM (331)
- Połączenia elektryczne przykładu z protokołem SPI (334)
- Kod programu demonstracyjnego (335)
- Plik nagłówkowy biblioteki (337)
- Kod biblioteki obsługującej pamięci EEPROM SPI (339)
- Funkcja initSPI() (341)
- Funkcja SPI_tradeByte() (342)
- Funkcje pomocnicze (343)
- Podsumowanie (344)
17. I2C (347)
- Jak działa protokół I2C? (348)
- Połączenia w przykładowym projekcie (352)
- Biblioteka obsługi magistrali I2C (353)
- Termometr z interfejsem I2C (356)
- Protokołowanie danych z użyciem protokołów I2C i SPI (359)
- Wskaźniki w pamięci EEPROM (363)
- Menu tworzone przez port szeregowy (363)
- Pętla główna termometru protokołującego (364)
18. Używanie pamięci programu (367)
- Wykorzystanie pamięci programu (367)
- Adresy pamięci (368)
- Operator adresu: & (369)
- Wskaźniki (372)
- Wskaźniki w skrócie (372)
- Wskaźniki jak parametry funkcji (376)
- Podsumowanie (379)
- Opcjonalnie: dereferencje wskaźników (380)
- Gadający woltomierz (381)
- Struktury danych w pamięci programu i plik nagłówkowy (382)
- Odtwarzanie dźwięku i odczyt wartości napięcia: plik .c (386)
- Generowanie danych audio (391)
- Różnicowa modulacja kodowo-impulsowa (391)
- Kodowanie dźwięku metodą dwubitowego DPCM (391)
- Kodowanie DPCM: program wave2DPCM.py (394)
19. EEPROM (399)
- Używanie pamięci EEPROM (400)
- Zapisywanie danych w pamięci (400)
- Odczytywanie danych z pamięci (405)
- Zapisywanie i odczytywanie pamięci EEPROM (407)
- Organizacja danych w pamięci EEPROM (408)
- Projekt: szyfrator kodu Vigenere'a (412)
20. Wnioski, pożegnanie i zachęta (421)
- Układ AVR: brakujące rozdziały (421)
- Licznik watchdog (421)
- Oszczędzanie energii (422)
- Zewnętrzne oscylatory i inne źródła taktowania (422)
- Programy rozruchowe (422)
- Komparator analogowy (423)
- Debugowanie (423)
- Odłóż książkę i twórz! (423)
Skorowidz (425)
432 strony, Format: 17.0x23.0cm, oprawa miękka