Kurs Elektroniki Część 5 - Mikrokontrolery. www.knr.meil.pw.edu.pl 1/26
Mikrokontroler - autonomiczny i użyteczny system mikroprocesorowy, który do swego działania wymaga minimalnej liczby elementów dodatkowych. Zawiera w sobie CPU, pamięć programu, pamięć ram, oraz rozbudowane układy wejścia wyjścia. www.knr.meil.pw.edu.pl 2/26
Rodziny mikrokontrolerów -AVR (ATmega, ATtiny, Xmega 8bitowce) -PIC (PIC10Xxxxx-8bit, PIC24Xxxxx-16bit, PIC32) -ARM (bardzo szeroka gama procesorów 32bit!) Oprócz powyższych typów jest jeszcze kilka mniej popularnych i trudnodostępnych oraz już przestarzałych mikrokontrolerów. www.knr.meil.pw.edu.pl 3/26
Przykładowe obudowy up rodziny AVR www.knr.meil.pw.edu.pl 4/26
Co ma w środku up? Mikrokontrolery wyposażone są w: -Jednostkę arytmetyczno-logiczną (ALU) -Pamięć flash, pamięć RAM, pamięć EEPROM -Szynę danych -Szynę adresowa -Porty wejścia/wyjścia -Urządzenia peryferyjne www.knr.meil.pw.edu.pl 5/26
Schemat blokowy struktury wewnętrznej up ATmega 16 www.knr.meil.pw.edu.pl 6/26
Jednostka arytmetyczno logiczna i współpracujące z nią urządzenia. Jednostka ALU odpowiada za wykonywanie operacji arytmetycznych oraz logicznych. www.knr.meil.pw.edu.pl 7/26
Pamięć flash, pamięć RAM, pamięć EEPROM. Pamięci te wykonane są w postaci bloku rejestrów podłączonych do szyny danych i szyny adresowej. Pamięć flash przeznaczona jest do przechowywania wsadu czyli skompilowanego programu. Dostęp do tej pamięci w up AVR możliwy jest za pomocą interfejsu SPI. Pamięć RAM przeznaczona do pracy na bieżąco, po wyłączeniu zasilania dane z pamięci są kasowane. Pamięć EEPROM- tego typu pamięć może być zapisywana samodzielnie prze up, dzięki czemu po zaniku napięcia dane nie giną. www.knr.meil.pw.edu.pl 8/26
Szyna danych oraz szyna adresowanajprościej mówiąc są to szyny łączące pamięć, jednostkę ALU, rejestry wspomagające. W zależności od typu procesora szyny te mogą być 8, 16, czy 32bitowe. Ciekawostką jest to, że nawet po szynie 8 bitowej istnieje możliwość przesłania rozkazu 16bitowego! www.knr.meil.pw.edu.pl 9/26
Porty wejścia/wyjścia. Fizyczne wyprowadzenia up stanowiące medium między wnętrzem up a światem zewnętrznym. Na wyprowadzeniach generowane są stany napięcia odpowiadające stanom logicznym. Dla większości up rodziny ATmega, przyjmuje się, że stan wysoki zaczyna się od 0,6xVcc, stan niski powinien być bliski zeru. Obciążalność wejść jest na poziomie 20mA w stanie niskim. Wyprowadzenia pełnią również funkcję wyjść/wejść urządzeń peryferyjnych. www.knr.meil.pw.edu.pl 10/26
Urządzenia peryferyjne. Urządzenia peryferyjne pracują zwykle w tle up. Oznacza to, że pracują równolegle z wykonującym się kodem. Podstawowe urządzenia peryferyjne: -Timery -Przetworniki ADC, CDA -Komparatory analogowe -Interfejsy UART, TWI (I2C), SPI, USB, CAN, i inne -Wewnętrzne generatory RC -Generatory przerwań zewnętrznych -Watchdog www.knr.meil.pw.edu.pl 11/26
Gdzie szukać informacji na temat własności up? Strona www producenta: http://www.atmel.com Google: fraza datasheet ATmega xx www.knr.meil.pw.edu.pl 12/26
Urządzenia peryferyjne. Timery Liczniki 8 lub 16 bitowe, mogą zliczać impulsy z oscylatora taktującego up lub z zewnętrznego źródła. Przy przepełnieniu zgłaszają przerwanie, mogą pracować jako generatory sygnału PWM. Przetwornik ADC przetwarza sygnał analogowy na cyfrowy, należy zadbać o właściwe zasilanie przetwornika, napięcie odniesienia, rozdzielczość generowanych danych. W up przetwornik jest jeden, natomiast wejść sygnałowych jest zwykle 6 lub 8 (w zależności od obudowy), lub 16. www.knr.meil.pw.edu.pl 13/26
Urządzenia peryferyjne. Interfejs UART bądź USART, w skrócie, pozwala na komunikację między urządzeniami zgodnie z protokołem popularnej w komputerach magistrali szeregowej RS232 (COM). UART od RS232 różni się jednak elektrycznymi parametrami. W UART dysponujemy tylko sygnałem logicznym 0/1 zależnymi od napięciazasilania, RS232 pracuje z napięciami +/-15V. Ze względu na elektryczną niekompatybilność RS232 i UART do komunikacji up z PC wymagana jest przejściówka dopasowująca napięcia (najczęściej wykonana w oparciu o układ MAX232), istnieje też możliwość komunikacji UART- USB z wykorzystaniem przejściówki opartej o układ FT232. www.knr.meil.pw.edu.pl 14/26
Urządzenia peryferyjne. TWI (I2C)- pozwala na komunikację szeregową z innymi urządzeniami (pamięci, wyświetlacze, zewnętrzne przetworniki itp.) Wykorzystuje linie SDA, SCL, GND. SPI (ang. Serial Peripheral Interface) - szeregowy interfejs urządzeń peryferyjnych. Używany do komunikacji między przetwornikami ADC/DAC, układami RTC, pamięciami EEPROM, pamięciami flash, kartami MMC/SD/ itp. Komunikacja odbywa się synchronicznie za pomocą 3 linii: * MOSI -dane dla układu peryferyjnego * MISO - dane z układu peryferyjnego * SCK - sygnał zegarowy (taktujący) * CS (SS) wybór układu * GND www.knr.meil.pw.edu.pl 15/26
Urządzenia peryferyjne. Wewnętrzny generator RC Pozwala na pracę up bez zewnętrznego rezonatora kwarcowego. W ATmegach zwykle ma wartość 8MHz. W świeżych nieprogramowalnych układach włączony jest ponadto dzielnik częstotliwości, tzw. preskaler. Pozwala on na zmniejszenie częstotliwości generatora (zazwyczaj w celu oszczędności energii). Świeże up pracują zwykle na f=1mhz (preskaler =8), wymaga to czasem odpowiedniej konfiguracji programatora. Wewnętrzny generator RC jest niedokładny, a jego parametry ulegają zmienia wraz z zewnętrznymi warunkami np. temperatura. Mikroprocesor może być również taktowany zewnętrznym rezonatorem kwarcowym lub innym przebiegiem. www.knr.meil.pw.edu.pl 16/26
Urządzenia peryferyjne. Generatory przerwań zewnętrznych- pozwalają na wywołanie przerwania poprzez podanie sygnału na odpowiednie wyprowadzenie up. Przerwania mają wyższy priorytet niż wykonujący się aktualnie program, dzięki czemu można w każdej chwili wykonać operacje o wyższym priorytecie. Watchdog- urządzenie wyposażone we własny, niezależny generator taktujący. Kontroluje na bieżąco pracę up i w przypadku kiedy dojdzie do zawieszenia up resetuje go. Prościej mówiąc watchdog oczekuje od procesora pewnych informacji w ustalonym przedziale czasowym. Jeśli takich danych nie dostanie świadczy to o zawieszeniu programu i następuje reset up. www.knr.meil.pw.edu.pl 17/26
Wyprowadzenia up www.knr.meil.pw.edu.pl 18/26
Programowanie up Programowanie up polega na wgraniu do pamięci flash skompilowanego pliku. Można to zrobić na kilka sposobów. Komunikacja z pamięcią za pomocą magistrali SPI używamy do tego programatora. Istnieje wiele różnych programatorów (oraz programów je obsługujących). Programator stk200 podłączenie przez LPT Programator stk500 RS232/USB Programator stk500v2 USB Programator USBasp USB Programy obsługujące programatory PonyProg, AVRdude, Khazam AVR i inne. www.knr.meil.pw.edu.pl 19/26
Programator łączy się z odpowiednimi wyprowadzeniami up. Są to MOSI, MISO, SCK, RESET, GND. Istnieje możliwość zasilania programowanego up z programatora, wtedy trzeba jeszcze podłączyć linię VCC. Do połączenia up z programatorem zazwyczaj wykorzystuje się 10pinowe dwurzędowe złącze zwane potocznie KANDA www.knr.meil.pw.edu.pl 20/26
Inne możliwości zaprogramowania up to wgranie (przy pomocy klasycznego programatora) specjalnego programu do up zwanego Bootloaderem (program rozruchowy). Taki program pozwala przesłać skompilowany plik do pamięci flash up za pomocą innej magistrali danych np. UART, USB. Przykładem jest platforma ARDUINO, którą programujemy bezpośrednio z portu USB komputera. www.knr.meil.pw.edu.pl 21/26
FUSEbity Rejestry konfiguracyjne pozwalają na konfigurację pracy up. Od ich ustawień zależy jaką wartość ma preskaler, czy procesor ma pracować na zewnętrznym rezonatorze, czy włączony jest interfejs JTAG, czy włączony jest WATCHDOG i kilka innych opcji w zależności od typu procesora. WAŻNE!!! Jeśli ustawimy FUSEbity tak by up pracował na zewnętrznym oscylatorze, a nie będzie on podłączony stracimy możliwość ponownego zaprogramowania!!! Ponadto w małych up Reset jest współdzielony z portem we/wy. Jeśli zechcemy używać danego pinu jako we/wy stracimy możliwość programowania!! www.knr.meil.pw.edu.pl 22/26
Programowanie. Popularne języki programowania AVRów: -Asembler -C (C++) -BASCOM Zalety i wady: Asembler- dostępnych około 130 instrukcji, wymagana znajomość architektury procesora, rejestrów lecz mamy pełną kontrolę nad wykonującym się kodem, wsad zajmuje minimalną objętość. www.knr.meil.pw.edu.pl 23/26
C (C++)- Wsparcie wielu bibliotek, duże możliwości kontroli kodu, dość dobrze zoptymalizowany wsad wynikowy, wiele przykładów w sieci, dostępny bezpłatny kompilator, bardziej profesjonalny od BASCOMa przez co bardziej preferowany przez firmy. Wymagana dobra znajomość języka C. BASCOM- Wsparcie wielu bibliotek, łatwość konfiguracji urządzeń peryferyjnych, wiele użytecznych funkcji, wiele przykładów w sieci i literaturze, dostępne oprogramowanie, język bardzo intuicyjny w korzystaniu w zamian za plik wynikowy o dużej wadze, mniejszą wydajność (nie dokońca wiemy co się dzieje w programie). www.knr.meil.pw.edu.pl 24/26
BASCOM Środowisko: BASCOM-AVR IDE zawiera edytor, preprocesor, kompilator oraz narzędzia dodatkowe pozwalające np. wygenerować własny znak dla wyświetlacza LCD, własny terminal do obsługi komunikacji RS232 i inne. www.knr.meil.pw.edu.pl 25/26
Paczka pomocy dla BASCOMa Paczka 100Mb zawiera mn. zeskanowaną książkę dotyczącą programowania w BASCOMie, inne kursy oraz wiele konkretnych zastosowań. http://dl.dropbox.com/u/29529698/bascom_pliki.rar Dobry artykuł o FUSEbitach dla popularnych up AVR http://mirley.firlej.org/fuse_bity_w_mikrokontrolerach_avr www.knr.meil.pw.edu.pl 26/26