Wytyczne, instrukcje do zajęć prowadzonych w formie zdalnej
zajęcia są wykonywane przy użyciu symulatora SimulIDE – dokładny opis wykorzystania symulatora znajduje się na stronie: link.
zalecane środowiska programistyczne:
Wytyczne do oceniania:
- pracujemy w grupach 1-2 osobowych – jedna grupa, jedno sprawozdanie/program,
- wyniki z wykonane laboratorium należy opracować i wysłać przez eportal w wyznaczonym terminie,
- należy dostarczyć:
- plik symulacji z wykonanego zadania
- kody źródłowe z komentarzami do wykonanego zadania
- dodatkowe notatki jeśli były wymagane w zadaniu
- dostarczenie materiałów po terminie skutkuje obniżeniem oceny o 10 punktów za każde 2 tygodnie spóźnienia,
- laboratorium oceniane jest w skali 0-100 punktów,
- w celu otrzymania oceny, prezentujemy przygotowane zadania w możliwym terminie na zajęciach zdalnych,
- przed wystawieniem oceny końcowej wszystkie laboratoria powinny być zaliczone, brak zaliczonego laboratorium oznacza otrzymanie za nie 0 punktów.
Progi ocen:
- 5,0 – 91 – 100
- 4,5 – 81 – 90
- 4,0 – 71 – 80
- 3,5 – 61 – 70
- 3,0 – 51 – 60
- 2,0 – poniżej 50
Laboratorium 1.1
- zapoznajemy się z instrukcją do laboratorium (PTM-LAB1.1),
- ściągamy projekt i symulacje (pliki),
- dokonujemy niezbędnych podłączeń dla linijki diodowej według schematu (PD7-lewa dioda, PD6- lewa dioda-1, ….. , PD0-prawa dioda).
Zadanie 1 (3):
- włączyć wszystkie diody LED – jak można to zrobić, przetestować 3 sposoby.
Zadanie 2 (3,5):
- napisać funkcję, która będzie mrugała wszystkimi diodami z częstotliwością 1s.
Zadanie 3(4):
- przygotować funkcje, która będzie realizowała zadanie „biegający punkt”. Jedna dioda na linijce diodowej jest włączona i porusza się w lewo lub w prawo – w zależności gdzie świecący punkt był wcześniej. Przykład biegającego punktu: Biegający punkt.
Zadanie 4(4,5):
- zapoznać z LAB 1.2 – część dotycząca obsługi przycisków
- podłączyć jeden przycisk (przycisk 1) do dowolnego portu, którego działanie powoduje:
- przycisk wciśnięty – świecą wszystkie diody LED,
- przycisk nie wciśnięty – nie świecą diody LED.
Zadanie 5(5):
- dodajemy obsługę kolejnego przycisku (przycisk 2), którego działanie powoduje:
- biegający punkt, który każdy kolejny krok jest wyzwalany po przyciśnięciu przycisku,
- jednocześnie ma działać program z zadania 4, wywołanie przycisku 1 uruchamia wszystkie diody, puszczenie powraca do biegającego punktu w jakim był on ustawiony wcześniej.
Laboratorium 1.2
- zapoznajemy się z instrukcją do laboratorium (PTM-LAB1.2)
- ściągamy paczkę z projektem i symulacją (pliki),
- łączymy LCD i klawiaturę jak na rysunku poniżej (w ustawienia klawiatury ustawiamy Key Labels na “789-456+123C*0#=”):
Zadanie 1 (3):
- wgrywamy przykładowy program z paczki, jak działa program?
- zrobić zegarek:
- w pierwszej linijce program odlicza czas i wyświetla w formacie 16:05:01
- odliczenie sekund można zrobić na opóźnieniu (funkcja delay)
- wyświetlić w drugiej linijce swój numer indeksu.
Zadanie 2(4):
- wgrać ponownie domyślny program z paczki,
- obsłużyć klawiaturę z 16 przyciskami,
- napisać funkcję, która zwraca numer wciśniętego przycisku 1-16, a dla braku wciśniętego przycisku ma zwrócić -1, zastosować mechanizm obsługi klawiatury macierzowej,
- zrobić program, który wyświetla na LCD numer wciśniętego przycisku w drugiej linii wyświetlacza. Wciśniecie przycisku 2 wyświetla napis “”Wcisnieto: 2” i tak dla każdego przycisku z klawiatury, wykorzystać wcześniej zrobioną funkcję.
Zadanie 3(5):
Przygotować program, który będzie realizował funkcje kalkulatora zgodnie z poniższymi wytycznymi. Wprowadzanie liczby 1 wybranie operacji, wprowadzenie liczby drugiej, naciśnięcie przycisku “=”. Ponowne naciśnięcie przycisku “=” kasuje wyniki i pozwala wykonać kolejne obliczenia.
Wynik obliczeń, wprowadzone liczby należy wyświetlać na LCD.
Funkcje przycisków:
- cyfry 0-9 – wprowadzanie liczb do wykonywania operacji, wciśnięcie 1,4,5,9 oznacza liczbę 1459
- znak “+” – to operacja dodawania
- znak “-” – to operacja odejmowania
Kalkulator umożliwia dodawanie i odejmowanie dwóch liczb w zakresie 0-9999.
Laboratorium 1.3
- zapoznajemy się z instrukcją do laboratorium (PTM-LAB1.3)
- ściągamy paczkę z projektem i symulacją (pliki),
- łączymy układ jak na rysunku z paczki i ładujemy program.
Zadanie 1(3):
- poznajemy system przerwań – co to są przerwania? Do czego można je wykorzystywać?
- uzupełniamy funkcje “void TimerInit()” tak aby wywoływała przerwanie wewnętrzny odpowiednią częstotliwością.
- uzupełnić funkcję przerwania wewnętrznego “ISR(TIMER1_COMPA_vect)”, tak by powodowała miganie diodą LED “Led-ISR” – można skorzystać z makra “tbi”
- podpiąć oscyloskop pod diodę LED i sprawdzić czy ustawiona częstotliwość przerwania odpowiada 2Hz
Zadanie 2(4):
- zapoznajemy się z budową wyświetlacza 7-segmentowego. Ile linii mikokontrolera potrzeba do obsługi takiego wyświetlacza?
- uzupełniamy funkcję “seg7Init()” – ustawiamy port podłączone do wyświetlacza jako wyjścia
- co robi i jak działa funkcja “seg7ShowCyfra”? uzupełnić tablicę “char cyfra[10]” tak aby odpowiadała wyświeltanym cyfrą na wyświetlaczu 7-segmentowym (indeks tablicy 0 – wyświetla 0, indeks 4-wyświetla 4).
Zadanie 3(5):
- napisać program do odliczania czasu od 9 do 0 – odliczanie czasu musi być precyzyjne i należy wykonać je przy wykorzystaniu przerwania,
- odliczanie jest wyświetlane na wyświetlaczu 7 segmentowym,
- jak odliczy do zera to uruchamia się dioda LED, świeci przez 5 sekund i następuje reset zegarka,
- jeśli nastąpi przyciśnięcie przycisku w czasie odliczania to następuje zatrzymanie odliczania, ponowne przyciśnięcie resetuje zegarek,
- pierwsze uruchomienie programu, restart zegarka wprowadza układ w tryb oczekiwania na przycisk, po przyciśnięciu następuje odliczania.
Laboratorium 1.4
- zapoznajemy się z instrukcją do laboratorium (PTM-LAB1.4)
- ściągamy paczkę z projektem i symulacją (pliki),
- łączymy układ jak na rysunku z paczki i ładujemy program,
- sprawdzić czy działa wyświetlacz LCD, wyświetlić w pierwszej linii swoje imię (imiona).
Zadanie 1(3):
- przygotować funkcję „ADC_init()” w której dokonana będzie konfiguracja przetwornika A/D na podstawie dokumentacji mikrokontrolera:
- Rejestr ADMUX bity: REFS0:1 – konfiguracja napięcia referencyjnego – wybrać napięcie AVCC
- Rejestr ADCSRA bity: ADPS0:2 – konfiguracja podzielnika częstotliwości dla układu przetwornika (częstotliwość sygnału taktującego) – ustawić aby częstotliwość była mniejsza
niż 100KHz - Rejestr ADCSRA bit: ADEN – uruchomienie układu przetwornika
- Rejestr ADMUX bity: MUX0:4 – konfiguracja/wybór kanału/pinu na którym będzie dokonywany pomiar – wybrać ADC0 – odpowiada pinowi PA0
- przygotować funkcję „uint16_t ADC_10bit()” – zwraca zmierzone napięcie:
- Rejestr ADCSRA bit: ADSC – uruchomienie pojedynczego pomiaru – ustawienie bitu
- Rejestr ADCSRA bit: ADSC – oczekiwanie na zakończenie pomiaru – oczekiwanie na wyzerowanie bitu
- Rejestr ADC – przechowuje wynik pomiaru – wartość jaką ma zwrócić funkcja
- napisać funkcję “ADC_10bit()” – która będzie zwracała odczytaną wartość z rejestru pomiarowego przetwornika A/D i wyświetlała w pierwszej linii wyświetlacza LCD,
- napięcie zmieniamy kręcąc potencjometrem po prawej stronie układu.
Zadanie 2(4):
- zapisać wzór na przeliczenie wartości zwracanej przez funkcję „ADC_10bit()” na wartość napięcia w V,
- zaimplementować funkcję “ADC_measure()”, która będzie zwracała napięcie w V z dokładnością do dwóch miejsc po przecinku i przeskalowaną do liczby całkowitych (np. 2,59 to 259, 3,95 to 393),
- wyświetlić na LCD w drugiej linii: Pomiar1 :4.75V – gdzie 4.75V to wynik pomiaru w woltach,
- porównać wyniki z wartościami wskazywanymi przez miernik “Test1”.
Zadanie 3(4,5):
- napisać program, który będzie wyświetlał w pierwszej linii LCD mierzone napięcie,
- w drugiej linii napis “on/off” w zależności od działania komparatora, co to jest komparator? Napisać funkcję realizującą komparator analogowy.
- komparator steruje napisem na LCD i diodą LED1
- jeśli napięcie podawane przez potencjometr jest większe niż 2,50V to ma być stan on, jeśli mniejsze to off, analogicznie ma działać dioda LED.
Zadanie 4(5):
- dodać drugi potencjometr, który będzie służył za drugie źródło regulowanego napięcia, dodać diodę Reg1,
- obsłużyć pomiar drugiego napięcia (wyświetlać w pierwszej linii wyświetlacza LCD: V1: 4.25V — V2: 2.45V)
- zaimplementować regulator dwupołożeniowy z histerezą – algorytm realizuje działanie regulatora dwustanowego z histerezą i wyświetla swój stan na diodzie Reg1, histerezę ustawić na 0,50V, wartość zadana to wartość z 1 potencjometru, a wartość rzeczywista to napięcie z 2 potencjometru,
Laboratorium 1.5
- zapoznajemy się z instrukcją do laboratorium (PTM-LAB1.5)
- co to jest sygnał PWM, do czego można go wykorzystać, jak wyglądają przebiegi dla tego sygnału dla różnego wypełnienia?
- przygotować jeden program końcowy zgodnie z wytycznymi.
Program końcowy:
- stworzyć układ składający się z:
- Atmega32
- wyświetlacz LCD Hd44780
- wyświetlacz 7 segmentowy
- potencjometr analogowy – podający napięcie w zakresie 0-5V,
- element “Probe” do pomiaru napięcia podawanego przez potencjometr,
- 4 przyciski (UP, Down, X, OK)
- 3 diody LED (LED1, LED2, LED3)
- program po uruchomieniu wyświetla komunikat powitalny ze swoją nazwą “Program PTM 2021” i numerami indeksów autorów, wyświetlanie trwa z 4 sekundy,
- następnie uruchamia się menu z którego za pomocą przycisków (UP,Down) możemy wybrać odpowiednią funkcje, przycisk OK uruchamia funkcję, przycisk X wychodzi z funkcji,
- funkcje programu:
- Info – wyświetla ekran powitalny na 4 sekundy i wraca do menu,
- Liczby – za pomocą przycisków Up,Down ustawiamy liczbę w zakresie 0-50 (wyświetlamy ją na wyświetlaczu LCD i 7 segmentowym- liczby tylko do 9, powyżej wyświetlamy znak “-“), przycisk X pozwala wrócić do menu, dla liczb parzystych świecimy diodę LED1, dla pozostałych diodę LED2, jeśli liczba jest liczbą pierwszą to uruchamiamy diodę LED3,
- Stoper – liczenie z dokładnością do 0,1s należy zrealizować za pomocą przerwań wewnętrznych, po wejściu do funkcji wyświetla się 00:00, przycisk OK resetuje i uruchamia stoper, ponowne przyciśnięcie przycisku OK zatrzymuje stoper, przycisk X wychodzi do menu głównego, co jedną sekundę następuje włączenie/wyłączenie diody LED1 jak stoper jest uruchomiony,
- Zegar – liczenie z dokładnością do 1,0s należy zrealizować za pomocą przerwań wewnętrznych, wyświetlamy na LCD czas 00:00 (minuty i sekundy), na wyświetlaczu 7 segmentowym wyświetlamy tylko pojedyncze sekundy (0-9), dioda LED 3 ma się zaświecić co każdą sekundę na czas 200ms, przycisk X wychodzi z funkcji,
- Miernik – program wykorzystuje przetwornik ADC do pomiaru napięcia z potencjometru. Wyświetla w pierwszej linii bezpośrednio odczytaną wartość z rejestru pomiarowego ADC, w drugiej linii wyświetla napięcie w V (należy dokonać przeliczenia), przycisk X wychodzi z programu.
Tak przygotowany program musi posiadać komentarze opisujące stworzony kod i będzie podlegał prezentacji w ramach zaliczenia przedmiotu.
Do programu należy napisać sprawozdanie końcowe gdzie:
- jeden rozdział to jedna funkcja programu,
- jeden dodatkowy rozdział poświęcić na opisanie mechanizmu menu,
- do każdego rozdziału należy zrobić opis słowny, załączyć zdjęcia z ekranu symulatora przedstawiające działanie,
- na końcu sprawozdania należy załączyć kod całego programu (kod wklejamy do sprawozdania, nie mogą być osobne pliki),
- sprawozdanie wysyłamy w formacie PDF o nazwie “PTM-końcowe-xxxxxx-xxxxx.pdf” (gdzie xxxxx to numery indeksów autorów), każda osoba wysyła sprawozdanie przez eportal.
Laboratorium 1.6
oddanie końcowego programu, wystawienie propozycji oceny końcowej
Laboratorium 1.7
termin dodatkowy