Język C. Wykład 9: Mikrokontrolery cz.1. Łukasz Gaweł Chemia C pokój 307

Podobne dokumenty
Programowanie mikrokontrolerów AVR

Język C. Wykład 9: Mikrokontrolery cz.2. Łukasz Gaweł Chemia C pokój 307

1.1 Co to jest USBasp? Parametry techniczne Obsługiwane procesory Zawartość zestawu... 4

Programator AVR USBasp

Systemy wbudowane. Wprowadzenie. Struktura. Mikrokontrolery AVR. Wprowadzenie do programowania w C

LABORATORIUM - ELEKTRONIKA Układy mikroprocesorowe cz.2

Podstawowe urządzenia peryferyjne mikrokontrolera ATmega8 Spis treści

WPROWADZENIE Mikrosterownik mikrokontrolery

Programator procesorów rodziny AVR AVR-T910

Inż. Kamil Kujawski Inż. Krzysztof Krefta. Wykład w ramach zajęć Akademia ETI

Cwiczenie nr 1 Pierwszy program w języku C na mikrokontroler AVR

System mikroprocesorowy i peryferia. Dariusz Chaberski

Instrukcja obsługi programatora AVR Prog USB v2

Instytut Teleinformatyki

Systemy wbudowane. Paweł Pełczyński

Instrukcja obsługi. PROGRAMATOR dualavr. redflu Tarnów

micro Programator ISP mikrokontrolerów AVR zgodny z STK500v2 Opis Obs³ugiwane mikrokontrolery Wspó³praca z programami Podstawowe w³aœciwoœci - 1 -

Instrukcja obsługi programatora AVR Prog USB v2

Mikrokontrolery AVR Wprowadzenie

MultiTool instrukcja użytkownika 2010 SFAR

Instytut Teleinformatyki

Mikroprocesory i mikrosterowniki

dokument DOK wersja 1.0

MIKROKONTROLERY I MIKROPROCESORY

Mikroprocesory i Mikrosterowniki

Instrukcja obsługi programatora AVR Prog USB v2

Płytka uruchomieniowa AVR oparta o układ ATMega16/ATMega32. Instrukcja Obsługi. SKN Chip Kacper Cyrocki Page 1

Kurs Elektroniki. Część 5 - Mikrokontrolery. 1/26

Instrukcja obsługi programatora AVR Prog USB v2

AVR DRAGON. INSTRUKCJA OBSŁUGI (wersja 1.0)

Technika mikroprocesorowa. W. Daca, Politechnika Szczecińska, Wydział Elektryczny, 2007/08

Mikroprocesory i Mikrosterowniki

[INSTRUKCJA ATB-USBASP]

Płytka uruchomieniowa XM64

Ćwiczenie 5 Zegar czasu rzeczywistego na mikrokontrolerze AT90S8515

STM32Butterfly2. Zestaw uruchomieniowy dla mikrokontrolerów STM32F107

Zestaw Startowy EvB. Więcej informacji na stronie:

KOMUNIKACJA Z OTOCZENIEM MIKROKONTROLERA

Systemy Wbudowane. Arduino, AVR. Arduino. Arduino. Arduino. Oprogramowanie. Mikrokontroler. Mikrokontroler Platforma Arduino. Arduino IDE: Arduino C:

2. Architektura mikrokontrolerów PIC16F8x... 13

Programator ZL2PRG jest uniwersalnym programatorem ISP dla mikrokontrolerów, o budowie zbliżonej do STK200/300 (produkowany przez firmę Kanda).

STM32 Butterfly. Zestaw uruchomieniowy dla mikrokontrolerów STM32F107

INSTRUKCJA OBSŁUGI.

Programator STK500v2 USB

Politechnika Białostocka

Struktura i funkcjonowanie komputera pamięć komputerowa, hierarchia pamięci pamięć podręczna. System operacyjny. Zarządzanie procesami

Programator ICP mikrokontrolerów rodziny ST7. Full MFPST7. Lite. Instrukcja użytkownika 03/09

Charakterystyka mikrokontrolerów. Przygotowali: Łukasz Glapiński, Mateusz Kocur, Adam Kokot,

Programator mikrokontrolerów AVR

LITEcompLPC1114. Zestaw ewaluacyjny z mikrokontrolerem LPC1114 (Cortex-M0) Sponsorzy:

Mikrokontrolery AVR techniczne aspekty programowania

Technika mikroprocesorowa. W. Daca, Politechnika Szczecińska, Wydział Elektryczny, 2007/08

Poradnik programowania procesorów AVR na przykładzie ATMEGA8

Technologia informacyjna. Urządzenia techniki komputerowej

1. Wprowadzenie Programowanie mikrokontrolerów Sprzęt i oprogramowanie... 33

Opracował: Jan Front

MOD STM32 explorem0 z STM32F051C8T6. sklep.modulowo.pl akademia.modulowo.pl zestawy.modulowo.pl app.modulowo.pl blog.modulowo.

ATNEL. Programator USBASP. Instrukcja obsługi. Instrukcja programatora USBASP firmy Atnel. Mirosław Kardaś

Materiały. Języki programowania II (Java+AVR-GCC) Literatura

Politechnika Śląska w Gliwicach

BF30 OCDLINK/USBASP ARM-JTAG/AVR-ISP Programmer-debugger Instrukcja obsługi

KAmduino UNO. Rev Źródło:

E-TRONIX Sterownik Uniwersalny SU 1.2

Techniki mikroprocesorowe i systemy wbudowane

Zaliczenie Termin zaliczenia: Sala IE 415 Termin poprawkowy: > (informacja na stronie:

KAmduino UNO. Płytka rozwojowa z mikrokontrolerem ATmega328P, kompatybilna z Arduino UNO

Programowanie w językach asemblera i C

Spis treœci. Co to jest mikrokontroler? Kody i liczby stosowane w systemach komputerowych. Podstawowe elementy logiczne

Liczniki, rejestry lab. 08 Mikrokontrolery WSTĘP

Technika Mikroprocesorowa

SigmaDSP - zestaw uruchomieniowy dla procesora ADAU1701. SigmaDSP - zestaw uruchomieniowy dla procesora ADAU1701.

Zestaw uruchomieniowy z mikrokontrolerem LPC1114 i wbudowanym programatorem ISP

Niektóre piny mogą pełnić różne role, zależnie od aktualnej wartości sygnałów sterujących.

[INSTRUKCJA ATB-USBASP]

USB interface in 8-bit microcontrollers PIC18F family manufactured by Microchip.

Podstawowe urządzenia peryferyjne mikrokontrolera ATmega8 Spis treści

Płytka uruchomieniowa XM32

MCAR Robot mobilny z procesorem AVR Atmega32

Laboratorium 1 Temat: Przygotowanie środowiska programistycznego. Poznanie edytora. Kompilacja i uruchomienie prostych programów przykładowych.

SYSTEMY CZASU RZECZYWISTEGO (SCR)

ICD Wprowadzenie. Wprowadzenie. Czym jest In-Circuit Debugger? 2. O poradniku 3. Gdzie szukać dodatkowych informacji? 4

Warsztaty AVR. Instalacja i konfiguracja środowiska Eclipse dla mikrokontrolerów AVR. Dariusz Wika

Podstawy Techniki Mikroprocesorowej

Mikrokontroler Wykład 5

ISP ADAPTER. Instrukcja obsługi rev.1.1. Copyright 2009 SIBIT

RODZAJE PAMIĘCI RAM. Cz. 1

Dariusz Kozak ZESTAW URUCHOMIENIOWY MIKROKOMPUTERÓW JEDNOUKŁADOWYCH MCS-51 ZUX51. Loader LX51 INSTRUKCJA OBSŁUGI DK Wszystkie prawa zastrzeżone

1.Wstęp. 2.Generowanie systemu w EDK

o Instalacja środowiska programistycznego (18) o Blink (18) o Zasilanie (21) o Złącza zasilania (22) o Wejścia analogowe (22) o Złącza cyfrowe (22)

Wizualizacja stanu czujników robota mobilnego. Sprawozdanie z wykonania projektu.

Wyjścia analogowe w sterownikach, regulatorach

Elementy składoweµc - przypomnienie

MOD Xmega explore z ATXmega256A3BU. sklep.modulowo.pl akademia.modulowo.pl zestawy.modulowo.pl app.modulowo.pl blog.modulowo.

Spis treści. Projekt współfinansowany ze środków Unii Europejskiej w ramach Europejskiego Funduszu Społecznego

Wstęp Architektura... 13

Programowanie niskopoziomowe. dr inż. Paweł Pełczyński

Parametryzacja przetworników analogowocyfrowych

Systemy operacyjne i sieci komputerowe Szymon Wilk Superkomputery 1

Politechnika Gdańska Wydział Elektrotechniki i Automatyki Katedra Inżynierii Systemów Sterowania

MikloBit ul. Cyprysowa 7/ Jaworzno. JTAG + ISP dla AVR. rev

Transkrypt:

Język C Wykład 9: Mikrokontrolery cz.1 Łukasz Gaweł Chemia C pokój 307 lukasz.gawel@pg.edu.pl

Trochę teorii..

Mikrokontroler (dawniej mikrokomputer jednoukładowy) jest to układ scalony z wyspecjalizowanym mikroprocesorem (CPU) zdolny do autonomicznej pracy w systemach kontrolno-pomiarowych. Posiada własną pamięć (RAM), pamięć programu (FRAM, MRAM, ROM, Flash) oraz układ do komunikacji z otoczeniem. Zastosowanie: Sprzęty gospodarstwa domowego; Motoryzacja; Aparaty fotograficzne; Rejestratory danych pomiarowych; Układy automatyki; Sprzęt medyczny, telekomunikacyjny itd..; I dużo, dużo więcej

Najważniejsi producenci mikrokontrolerów Atmel- AVR, ATTiny, ATmega32 Philips- ARM Microchip Technology- PIC ST Microelectronics- ST(X), np. ST6 Hitachi- Renesas Intel

Architektura mikrokontrolera Szerokość szyny danych (32-bit, 16-bit, 8-bit) określa liczbę linii danych (równolegle przesyłanych bitów), natomiast częstotliwość- maksymalną szybkość transmisji danych (CPU) Realizuje ciąg rozkazów zapisanych w pamięci programu, na danych pochodzących z pamięci bądź urządzeń peryferyjnych Służy do przekazywania adresów fizycznych z których CPU wykonuje odczyty i zapisy danych Służy do przekazywania sygnałów z CPU, jaki rodzaj operacji ma wykonać układ współpracujący (pamięć i peryferia) Pełka R., Mikrokontrolery architektura, programowanie, zastosowania

Jednostka centralna (procesor rdzeniowy) cechy: Synchroniczność- wszystkie operacje wykonywane w rytm sygnału zegarowego, Sekwencyjność- stan wyjść zależy nie tylko od stanu wejść, lecz również poprzednich stanów tego układu, Posiada własną pamięć- do przechowywania argumentów rozkazów niezbędnych do wykonania na nich określonych operacji. W zależności od typu, mikrokontroler wyposażony jest w różne typy wbudowanej pamięci wewnętrznej: pamięć RAM (ang. Random Access Memory) pamięć ROM (ang. Read-Only Memory) pamięć EPROM (ang. Erasable Programmable ROM) pamięć OTP (ang. One Time Programmable) pamięć EEPROM (ang. Electrically Erasable PROM) pamięć FLASH (ang. bulk erasable non-volatile memory)

Najważniejsze przykładowe informacje z kart charakterystyki mikrokontrolera (ATmega8): CPU: 8-bitowy RISC FLASH: 8K, programowalna, nieulotna pamięć programu SRAM: 1K, zmienne, stos, itp. EEPROM: 0.5K, nieulotna Timer/licznik/PWM x3 10-bit ADC x6, Analog Comparator SPI, USART, TWI 23 programowalne cyfrowe linie IO 19 przerwań sprzętowych (w tym 2 zewnętrzne) ISP: proste programowanie Zegar: max 16 MHz - prawie 16 mln instrukcji/s Wewnętrzny zegar 1-8 MHz

Mikrokontrolery- porty wejść/wyjść Port mikrokontrolera- zbiór nóżek mikroprocesora, gdzie każda odpowiada jednemu bitowi w rejestrze sterującym, dzięki czemu jesteśmy w stanie sterować podłączonymi komponentami W zależności od wpisów w rejestrze sterującym może pełnić funkcję: Sterującą- gdy jest skonfigurowany jako wyjście Zbierającą dane- gdy jest skonfigurowany jako wejście Odcinającą- gdy jest skonfigurowany jako wejście o wysokiej impedancji Domyślnie każda nóżka jest skonfigurowana jako wejście! Najczęściej występują porty A-D *W celu zdefiniowania właściwości portów zawsze należy sięgnąć po dokumentację techniczną mikrokontrolera! Mogą one różnić się parametrami (np. obciążenie prądowe oraz funkcje specjalistyczne)!

Mikrokontrolery- porty wejść/wyjść Opis nóżek mikrokontrolera (w uproszczeniu): PB0- PB7, PC0- PC4, PD0-PD7- porty wejścia/wyjścia z możliwością dołączania rezystorów Ponadto: Zasilające (VCC- plus, GND-masa- minus) Zerujące (domyślnie- stan wysoki 1) Podłączenia z programatorem *W celu zdefiniowania właściwości portów zawsze należy sięgnąć po dokumentację techniczną mikrokontrolera! Mogą one różnić się parametrami (np. obciążenie prądowe oraz funkcje specjalistyczne)!

Mikrokontrolery- porty wejść/wyjść Rejestry sterujące: DDRx- rejestr określający kierunek przesyłania danych (1-wyjście, 0-wyjście) x- numer pinu od 0 do 7 (przy 8-pinowych mikrokontrolerach) PORTx- rejestr danych portu- zawiera wartość wystawianą na port (1- stan wysoki, 0- stan niski) PINx- rejestr wejściowy portu (pozwala odczytać wartość na określonym pinie)

Co niezbędne do rozpoczęcia pracy z μc? Zaprojektowanie schematu! Mikrokontroler (koszt rzędu kilkunastu zł) Płytka stykowa lub zestaw uruchomieniowy Elementy elektroniczne, którymi chcemy sterować Programator (wykonany samodzielnie, bądź zakup za kilkadziesiąt zł) Komputer z niezbędnym oprogramowaniem (darmowym!)

Przykładowy schemat podłączeń mikrokontrolera ATmega8 (minimum) Wykorzystany schemat pochodzi ze strony: http://mikrokontrolery.blogspot.com

Programator Zawsze można programator zbudować samodzielnie, w internecie jest mnóstwo dostępnych schematów

Programator Najpopularniejszym złączem wykorzystywanym przez programatory do komunikacji z mikrokontrolerami (patrz żółte kropki na schemacie mikrokontrolera) jest złącze KANDA

Języki programowania mikrokontrolerów Język C- uniwersalny, prosty w obsłudze, popularny, dobra optymalizacja, darmowe środowiska programistyczne i kompilatory, największa baza gotowych programów, Assembler- trudny w opanowaniu, skomplikowany kod źródłowy dla nawet prostych operacji, niezwykle przydatny gdy chodzi o optymalizację pamięci zużywanej przez program, Bascom- mniej popularny, ograniczony jedynie do mikrokontrolerów AVR, do obsługi prostych projektów, płatne środowisko pracy, wolniejszy niż dwa powyższe, mikroc, mikrobasic, mikropascal- płatne, coraz mniej popularne.

Środowiska programistyczne ATMEL Studio- oryginalne, wielofunkcyjne stanowisko do programowania w języku Assembler oraz C/C++, obsługuje rodzinę mikrokontrolerów AVR, ARM, można symulować działanie mikrokontrolera WinAVR + kompilator C (gnu gcc*)- pakiet narzędzi niezbędnych do pracy z mikrokontrolerami, nieco starsze, większa gama mikrokontrolerów, lżejszy niż powyższy Mniej popularne: AVR Studio, PonyProg2000 * Dla dociekliwych parametry gnu gcc: http://gcc.gnu.org/onlinedocs/gcc-4.2.3/gcc/

Kompilator języka C dla platformy AVR Najpopularniejszy zestaw narzędzi dla tej platformy bazuje na porcie kompilatora gcc: avr-gcc i dla systemu Windows nosi nazwę WinAVR http://winavr.sourceforge.net/ W skład pakietu wchodzi: kompilator C/C++, zestaw plików nagłówkowych dla wszystkich mikrokontrolerów AVR, program make, powłoka bash wraz z podstawowymi narzędziami, edytor Programmer s Notepad 2, program AVRdude* do programowania pamięci mikrokontrolerów *AVR Downloader/Uploader

Środowiska obsługujące programatory AVRDude- mało przyjazny użytkownikowi, należy wprowadzać komendy z poziomu wiersza poleceń, jednakże są dostępne nakładki, dzięki którym wgrywanie programów staje się czytelniejsze MkAvrCalculator- czytelny, łatwy sposób sprawdzenia połączenia pomiędzy mikrokontrolerem a PC, obsługuje różne typy programatorów stk500v1-2, USBasp itp., wersja darmowa ograniczona do najpopularniejszych mikrokontrolerów, prosty sposób odczytu i zapisu programów z i do mikrokontrolera inne

Edytory Programmers Notepad- zawarty w pakiecie WinAVR, posiada wgrane niezbędne dane do kompilowania programów przeznaczonych do mikrokontrolerów, oraz do współpracy z programatorem Każdy inny przeznaczony do języka C Bardziej zaawansowane narzędzia: AVR Studio Eclipse CDT Visual Studio Express

Pierwsze kroki

Na początek schemat Włącznik Układ, którym będziemy sterować Programator Niezbędne minimalne połączenia, by mikrokontroler pracował prawidłowo Wykorzystany schemat pochodzi ze strony: http://mikrokontrolery.blogspot.com

Połączenie w rzeczywistości

MkAvrCalculator Sprawdzenie poprawnego podłączenia programatora i mikrokontrolera Wybór użytego programatora Wybór użytego portu programatora Sprawdzenie podłączonego μc Wyświetla nazwę i sygnaturę podłączonego μc

MkAvrCalculator- błędy nowicjusza Prawdopodobnie błąd sterownika programatora Prawdopodobnie błąd podłączenia do złych pinów Niewłaściwy dobór programatora

Pierwszy program (omówienie niektórych komend) Częstotliwość zegara procesora μc (należy sprawdzić z kartą techniczną μc) Dodaje plik nagłówkowy zawierający deklaracje rejestrów IO. Zapewnia komunikację μc z urządzeniami Definiuje porty użyte do komunikacji z urządzeniami zewnętrznymi Ustawia port PB0 oraz PB1 jako port wyjściowy Ustawia stan wysoki na wyjściu sterującym PB0 (dioda się nie świeci) Wykorzystano edytor Programmers Notepad

I to wszystko? Wystarczy skompilować i gotowe? Mikrokontroler już steruje układem? Niestety nie

Konfiguracja kompilatora (pliku Make) By móc skompilować wcześniej napisany program, należy zmodyfikować plik kompilatora Make, a następnie umieścić ten plik w tym samym folderze, co plik z napisanym programem Plik kompilatora edytujemy za pomocą programu mfile (z pakietu WinAVR)

Konfiguracja pliku Make- podstawowe zmiany Zmiana nazwy pliku make

Konfiguracja pliku Make- podstawowe zmiany Zmiana nazwy pliku make Wybór typu mikrokontrolera

Konfiguracja pliku Make- podstawowe zmiany Zmiana nazwy pliku make Wybór typu mikrokontrolera Rodzaj używanego programatora Uwaga! Brak programatora USBasp w liście rozwijanej*

Konfiguracja pliku Make- podstawowe zmiany Zmiana nazwy pliku make Wybór typu mikrokontrolera Rodzaj używanego programatora Uwaga! Brak programatora USBasp w liście rozwijanej* Typ portu do którego podłączony jest programator Zmiana możliwości edycji pliku make w oknie dialogowym (bez zaznaczenia tej edycji nie jesteśmy w stanie go samodzielnie edytować)

Konfiguracja pliku Make- podstawowe zmiany Rodzaj używanego programatora Uwaga! Brak programatora USBasp w liście rozwijanej* By zmienić typ programatora na USBasp Należy w oknie dialogowym odszukać ścieżkę AVRDUDE_PROGRAMMER i wpisać ręcznie USBasp Tak skonfigurowany plik Make zapisujemy w folderze zawierającym wcześniej napisany program. Jeżeli używamy tego samego programatora i mikrokontrolera, można ten plik powielać

Kompilacja programu W celu kompilacji utworzonego programu w programie Programmers Notepad korzystamy z funkcji Po czym otrzymujemy stosowny komunikat o powodzeniu kompilacji W efekcie zostały utworzone: main.hex binarny kod programu, który zostanie załadowany do mikrokontrolera main.elf program wraz z informacjami dla debuggera main.lss skompilowany program w wersji czytelnej (assembler)

Wprowadzenie programu do mikrokontrolera W tym celu należy posłużyć się również Programmers Notepad Po pozytywnym zaprogramowaniu mikrokontrolera otrzymamy odpowiedź

Pierwsze problemy jakie można napotkać Problem ze sterownikami programatora- tyczy się to głównie starszych programatorów, dla których nie ma wersji sterowników dla wersji 64- bit (niestety czasami tyczy się to również nowszych programatorów). W tym przypadku nie ma możliwości wykorzystania i wykrycia μc. Problem z niewłaściwym podpięciem programatora do mikrokontrolera- wystarczy podpiąć jeden niewłaściwy pin, byśmy nie mogli połączyć się z μc, zatem uwaga jest bardzo ważna! Nauka podstawowych wejść/wyjść jest niezbędna Niewłaściwy wybór programatora, bądź rodzaju mikrokontrolera w Mfile! Będzie skutkować niepoprawną próbą zaprogramowania Błędy programowe, ukierunkowanie niewłaściwych portów Większość rozwiązań można znaleźć na forach dyskusyjnych

Przydatne książki oraz linki Francuz T., Język C dla mikrokontrolerów AVR. Od podstaw do zaawansowanych aplikacji, wyd. Helion Kardaś M. Mikrokontrolery AVR Język C Podstawy programowania wyd. II, wyd. obsługa Eclipse http://ktc.wieik.pk.edu.pl/kurs_avr/avr_programowanie.pdf - ogólnodostępny pdf opisujący funkcje AVRDude oraz modułów wykorzystywanych przy funkcji #include http://forum.atnel.pl forum firmy ATNEL, dostawcy m.in. USB- AspCable i MkAVRCalculator, liczne rozwiązania problemów, dostępne gotowe programy etc. https://www.forbot.pl/ - kolejne forum o tematyce robotyki Liczne kursy online, które pozwolą wam zacząć przygodę z μc: http://mikrokontrolery.blogspot.com http://mirekk36.blogspot.com/p/spis-tresci.html