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

Podobne dokumenty
Mikrokontrolery AVR Wprowadzenie

Instytut Teleinformatyki

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

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

Katedra Elektrotechniki Teoretycznej i Informatyki. wykład 12 - sem.iii. M. Czyżak

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

Wskaźniki a tablice Wskaźniki i tablice są ze sobą w języku C++ ściśle związane. Aby się o tym przekonać wykonajmy cwiczenie.

znajdowały się różne instrukcje) to tak naprawdę definicja funkcji main.

1 Podstawy c++ w pigułce.

Wykład VII. Programowanie. dr inż. Janusz Słupik. Gliwice, Wydział Matematyki Stosowanej Politechniki Śląskiej. c Copyright 2014 Janusz Słupik

1. Pierwszy program. Kompilator ignoruje komentarze; zadaniem komentarza jest bowiem wyjaśnienie programu człowiekowi.

1 Podstawy c++ w pigułce.

Programowanie mikrokontrolerów AVR z rodziny ATmega.

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

Poradnik programowania procesorów AVR na przykładzie ATMEGA8

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

Mikrokontroler ATmega32. Język symboliczny

Schemat blokowy architektury AVR

Wprowadzenie do podstaw programowania AVR (na przykładzie mikrokontrolera ATmega 16 / 32)

Programowanie w języku Python. Grażyna Koba

METODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE. Wykład 02

Programator AVR USBasp

Podstawowe urządzenia peryferyjne mikrokontrolera ATmega8 Spis treści

Po uruchomieniu programu nasza litera zostanie wyświetlona na ekranie

/* dołączenie pliku nagłówkowego zawierającego deklaracje symboli dla wykorzystywanego mikrokontrolera */ #include <aduc834.h>

KOMUNIKACJA Z OTOCZENIEM MIKROKONTROLERA

Wstęp do programowania INP003203L rok akademicki 2018/19 semestr zimowy. Laboratorium 3. Karol Tarnowski A-1 p.

PROE wykład 2 operacje na wskaźnikach. dr inż. Jacek Naruniec

Podstawy programowania skrót z wykładów:

Programowanie w języku C++ Grażyna Koba

W przeciwnym wypadku wykonaj instrukcję z bloku drugiego. Ćwiczenie 1 utworzyć program dzielący przez siebie dwie liczby

Utworzenie pliku. Dowiesz się:

Instytut Teleinformatyki

Systemy wbudowane. Uniwersytet Łódzki Wydział Fizyki i Informatyki Stosowanej. Witold Kozłowski

Zestaw Edukacyjny Atmega-8 (AJAWe-0711) Porty wejścia-wyjścia.

Co nie powinno być umieszczane w plikach nagłówkowych:

WPROWADZENIE DO INFORMATYKI

WYKONANIE APLIKACJI OKIENKOWEJ OBLICZAJĄCEJ SUMĘ DWÓCH LICZB W ŚRODOWISKU PROGRAMISTYCZNYM. NetBeans. Wykonał: Jacek Ventzke informatyka sem.

Programowanie strukturalne i obiektowe. Funkcje

Jak napisać program obliczający pola powierzchni różnych figur płaskich?

Programowanie mikrokontrolerów AVR

Wstęp do programowania INP003203L rok akademicki 2018/19 semestr zimowy. Laboratorium 2. Karol Tarnowski A-1 p.

Programowanie niskopoziomowe

przedmiot kilka razy, wystarczy kliknąć przycisk Wyczaruj ostatni,

Ok. Rozbijmy to na czynniki pierwsze, pomijając fragmenty, które już znamy:

Konfiguracja pakietu CrossStudio for MSP

/*W tym miejscu funkcja system wywołuje systemową komendę PAUSE tj.czeka tak długo, aż zostanie wciśnięty dowolny znak z

Laboratorium Systemów wbudowanych Wyższa Szkoła Zarządzania i Bankowości, Informatyka studia inżynierskie

Makropolecenia w Excelu

Rozwiązywanie problemów z Javą

Współpraca mikrokontrolera z wyświetlaczami: ciekłokrystalicznym i siedmiosegmentowym

Wstęp do programowania. Wykład 1

Pytania sprawdzające wiedzę z programowania C++

Programowanie komputerowe. Zajęcia 1

Wykład. Materiały bazują częściowo na slajdach Marata Dukhana

Sterowniki Programowalne (SP) Wykład 13

Przekazywanie argumentów wskaźniki

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

zastępować zarezerwowane słowa lub symbole innymi,

Programowanie Proceduralne

PMiK Programowanie Mikrokontrolera 8051

GND(VSS) i VCC - masa i zasilanie. V0 - regulacja kontrastu

Cel: Przypisujemy przyciskom określone funkcje panel górny (Panel1)

Wykład 4. Środowisko programistyczne

Narzędzie pomocnicze do przedmiotu Podstawy Informatyki - złożoność obliczeniowa

Jeśli chcesz łatwo i szybko opanować podstawy C++, sięgnij po tę książkę.

JĘZYKI PROGRAMOWANIA Z PROGRAMOWANIEM OBIEKTOWYM. Wykład 6

Laboratorium nr 12. Temat: Struktury, klasy. Zakres laboratorium:

Jak rozpocząć pracę z mikrokontrolerami?

Widoczność zmiennych Czy wartości każdej zmiennej można zmieniać w dowolnym miejscu kodu? Czy można zadeklarować dwie zmienne o takich samych nazwach?

Scenariusz lekcji. Scenariusz lekcji 1 TEMAT LEKCJI: 2 CELE LEKCJI: 2.1 Wiadomości: 2.2 Umiejętności: 3 METODY NAUCZANIA: 4 ŚRODKI DYDAKTYCZNE:

7. Pętle for. Przykłady

Podstawy programowania. Wykład 9 Preprocesor i modularna struktura programów. Krzysztof Banaś Podstawy programowania 1

Zmierzyć się z żywiołami, czyli jak zbudować własną stację badawczą! Zaczynamy! Pole komunikatów programu. Nawigacja w programie Arduino

Wstęp do Programowania, laboratorium 02

Wprowadzenie do języka Java

Przed rozpoczęciem pracy otwórz nowy plik (Ctrl +N) wykorzystując szablon acadiso.dwt

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

Electronic Infosystems

Laboratorium 3: Preprocesor i funkcje ze zmienną liczbą argumentów. mgr inż. Arkadiusz Chrobot

Podstawy programowania C. dr. Krystyna Łapin

Informatyka II. Laboratorium Aplikacja okienkowa

Programowanie I C / C++ laboratorium 01 Organizacja zajęć

Java pierwszy program w Eclipse «Grzegorz Góralski strona własna

Podział programu na moduły

ISO/ANSI C - funkcje. Funkcje. ISO/ANSI C - funkcje. ISO/ANSI C - funkcje. ISO/ANSI C - funkcje. ISO/ANSI C - funkcje

Podstawy wykorzystania bibliotek DLL w skryptach oprogramowania InTouch

Instrukcja do ćwiczeń nr 4 typy i rodzaje zmiennych w języku C dla AVR, oraz ich deklarowanie, oraz podstawowe operatory

Instytut Teleinformatyki

Ćwiczenie 1. Przygotowanie środowiska JAVA

Podstawy języka C++ Maciej Trzebiński. Instytut Fizyki Jądrowej Polskiej Akademii Nauk. Praktyki studenckie na LHC IVedycja,2016r.

Programowanie w C++ Wykład 2. Katarzyna Grzelak. 4 marca K.Grzelak (Wykład 1) Programowanie w C++ 1 / 44

Systemy operacyjne. Laboratorium 9. Perl wyrażenia regularne. Jarosław Rudy Politechnika Wrocławska 28 lutego 2017

Podstawy programowania komputerów

Język C, tablice i funkcje (laboratorium, EE1-DI)

Konfiguracja Javy. Jak prawidłowo skonfigurować środowisko Java. Jak zacząć? Poradnik dla systemów Windows 7,8, 8.1 i 10. Wersja 1.

Programowanie mikrokontrolerów AVR z rodziny ATmega.

Wstęp do Informatyki i Programowania Laboratorium: Lista 0 Środowisko programowania

Instrukcja do laboratorium Akademii ETI *

Robert Barański, AGH, KMIW MathScript and Formula Nodes v1.0

Transkrypt:

Cwiczenie nr 1 Pierwszy program w języku C na mikrokontroler AVR Zadanie polega na napisaniu pierwszego programu w języku C, jego poprawnej kompilacji i wgraniu na mikrokontroler. W tym celu należy zapoznać się z częścią teoretyczną będącą wstępem do zadania znajdującego się w części drugiej. Część 1. Wiadomości teoretyczne Uruchom środowisko Eclipse i utwórz nowy projekt stosując się do instrukcji poniżej Po uruchomieniu Eclipse lub w trakcie jego uruchamiania ustaw poprawnie folder works pace na ten który należy do Ciebie. Następnie utwórz nowy projekt wg wskazówek: W oknie Project Explorer kliknij prawym klawiszem myszy i wybierz NEW -> c Project W Project name wpisz nazwę projektu i wybierz typ projektu zgodnie z tym co widać na zrzucie poniżej. Nazwa projektu nie może zawierać żadnych znaków specjalnych i spacji

Następnie wybierz konfigurację kompilatora wg zrzutu:

Następnie wybierz typ MCU na którym będziemy pracować i wpisz poprawnie częstotliwość taktowania. Tutaj będzie to ATmega644P i 16000000Mhz Następnie do projektu dodaj nowy plik źródłowy o nazwie main.c klikając kolejno prawym klawiszem myszy na projekcie: New->C source file

Rejestry MCU służące do obsługi portów we/wy Rejestr DDRx 8 bitowy rejestr konfiguracji kierunku pracy. Wpisanie na dany bit logicznej 1 ustawia dany pin na wyjście, 0 na wejście Rejestr PINx - 8 bitowy rejestr odczytu stanu portu. Rejestr PORTx - 8 bitowy rejestr ustawiający stany logiczne na porcie X jedna z liter oznaczająca porty MCU. W zależności od wyposażenia MCU od A do F Przykładowo poniższe ustawienie bitów w rejestrze DDRA: PA7 PA6 PA5 PA4 PA3 PA2 PA1 PA0 0 0 0 1 0 0 0 1 Oznacza że piny PA0 i PA4 są wyjściami pozostałe zaś pełnią rolę wejść. ZADANIE 1 Zamień liczby zapisane w kodzie dziesiętnym na odpowiadający im kod binarny. Zastanów się jakie piny portu DDRA po wpisaniu tych liczb będą wejściami a jakie wyjściami? (24)dec ( (253)Dec-( (100)Dec-( )bin )bin )bin Zapis liczb do rejestru W języku C rejestr będziemy traktować tak samo jak zmienną programową więc w zasadzie zapis do niego i odczyt realizuje się za pomocą operatora =. Przykładowo: DDRA = 244;

PORTA = 0x16; Definicja zmiennej programowej Zmienna - jest instrukcją programistyczną posiadającą takie cechy jak: nazwa symboliczna, miejsce przechowywania i wartość. Nazwa odnosi się w całym programie do konkretnego miejsca w pamięci gdzie ta zmienna jest przechowywana. Każda zmienna ma jeszcze swój typ po którym kompilator wie ile miejsca owa zmienna będzie zabierała miejsca w pamięci. O typach zmiennych na następnych zajęciach. Wartość z kolei to liczba przechowywana we wskazanym przez nazwę miejscu. Przykład deklaracji zmiennej w języku C: int liczba = 10; //deklaracja zmiennej typu integer(całkowita) o nazwie l iczba i zapisanie do niej wartości 10 Dyrektywy kompilatora Preprocesor jest jednym z modułów kompilatora. Działa on zwykle w ukryciu, przez co nie każdy zdaje sobie sprawę z jego istnienia. Zanim jeszcze ruszy do pracy kompilator kod programu jest przeglądany przez preprocesor. Preprocesor bada cały kod w poszukiwaniu specjalnych komend. Owe komendy to właśnie dyrektywy. Za ich pomocą można niejako sterować przebiegiem kompilacji. Dyrektywy można umieszczać w dowolnym miejscu programu. Każda dyrektywa rozpoczyna się znaczkiem płotka #. Za koniec dyrektywy uważa się koniec wiersza. Zatem nie trzeba już stosować średnika kończącego. Poniżej przedstawione zostały jedynie wybrane dyrektywy. #define - Ta dyrektywa służy do definiowania makrodefinicji. Makrodefinicje stosuje się w celu uproszczenia i skrócenia zapisu. Zamiast za każdym razem pisać długie i skomplikowane wyrażenia można to zrobić jednokrotnie. Wystarczy wówczas owe wyrażenie zapisać, jako makrodefinicje i wywoływać w stosownym momencie. Przypuśćmy, że masz pewien fragment kodu, który stosujesz wielokrotnie w programie. Zajmuje on jedną linijkę, ale jest dość skomplikowany. Wielokrotne wklepywanie lub kopiowanie tego samego tekstu jest trochę męczące. Aby sobie uprzyjemnić życie można zapisać powtarzający się kod, jako

makrodefinicję. Makrodefinicja raz zdefiniowane nie może zostać użyta ponownie. #undef odwołanie makrodefinicji w celu zwolnienia jej nazwy (choćby nawet po to by za chwilę zdefiniować nowe makro pod tą samą nazwą) #if, #elif, #else i #endif - Wszystkie te dyrektywy służą do kompilacji warunkowej. Załóżmy, że piszesz bardzo uniwersalny program, działający na kilku różnych platformach. W zależności od sprzętu poszczególne moduły programu będą nieco inne. Chcesz teraz sprawdzić działanie programu. Wprowadzasz więc pomocniczą zmienną, której wartość będzie zależna od systemu, na którym kompilujesz program. Za pomocą dyrektyw kompilacji warunkowej możesz określić, która część kodu zostanie skompilowana. #include - Dyrektywa include jest stosowana chyba najczęściej. Krótko mówiąc jej działanie skupia się na dołączeniu do kompilowanego pliku zawartości innego pliku. Jest przydatna w sytuacjach, kiedy chcemy skorzystać z funkcji bibliotecznych. Funkcje biblioteczne to najzwyklejsze funkcje dostarczone przez producenta kompilatora. Są one skompilowane i gotowe do pracy. Aby z nich skorzystać należy dołączyć do programu określony plik nagłówkowy zawierający deklaracje interesujących nas funkcji. Wstępnie o funkcjach w języku C Każdy fragment programu w języku C jest zorganizowany w tzw funkcje. Dotyczy to także tego fragmentu który piszesz aby MCU wykonywał zlecone zadanie. Funkcja główna programu w języku C nazywa się main a jej definicja i użycie w programie wygląda jak niżej: /* * main.c * * Created on: 04-10-2015 * Author: xemax */ #include <avr/io.h> #include <util/delay.h> int main(void) { } //tutaj piszemy kod naszego programu Komentarz blokowy Dołączenie plików nagłówkowych Definicja funkcji main i kod programu

Część 2 praktyczna ZADANIE 2 (realizacja wspólna) Napisać program który pozwoli na sterowanie diodami LED podłączonymi do portu PA wg instruktażu do zadania. Pamiętaj o poprawnej inicjalizacji rejestrów ZADANIE 3 Zmodyfikuj napisany program tak aby diody LED mrugały niezależnie w dowolnej wymyślonej przez Ciebie kolejności.