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:
  1. pracujemy w grupach 1-2 osobowych – jedna grupa, jedno sprawozdanie/program,
  2. wyniki z wykonane laboratorium należy opracować i wysłać przez eportal w wyznaczonym terminie,
  3. należy dostarczyć:
    1. plik symulacji z wykonanego zadania
    2. kody źródłowe z komentarzami do wykonanego zadania
    3. dodatkowe notatki jeśli były wymagane w zadaniu
  4. dostarczenie materiałów po terminie skutkuje obniżeniem oceny o 10 punktów za każde 2 tygodnie spóźnienia,
  5. laboratorium oceniane jest w skali 0-100 punktów,
  6. w celu otrzymania oceny, prezentujemy przygotowane zadania w możliwym terminie na zajęciach zdalnych,
  7. 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
  1. zapoznajemy się z instrukcją do laboratorium (PTM-LAB1.1),
  2. ściągamy projekt i symulacje (pliki),
  3. 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
  1. zapoznajemy się z instrukcją do laboratorium (PTM-LAB1.2)
  2. ściągamy paczkę z projektem i symulacją (pliki),
  3. łą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
  1. zapoznajemy się z instrukcją do laboratorium (PTM-LAB1.3)
  2. ściągamy paczkę z projektem i symulacją (pliki),
  3. łą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
  1. zapoznajemy się z instrukcją do laboratorium (PTM-LAB1.4)
  2. ściągamy paczkę z projektem i symulacją (pliki),
  3. łączymy układ jak na rysunku z paczki i ładujemy program,
  4. 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
  1. zapoznajemy się z instrukcją do laboratorium (PTM-LAB1.5)
  2. co to jest sygnał PWM, do czego można go wykorzystać, jak wyglądają przebiegi dla tego sygnału dla różnego wypełnienia?
  3. przygotować jeden program końcowy zgodnie z wytycznymi.
Program końcowy:
  1. stworzyć układ składający się z:
    1. Atmega32
    2. wyświetlacz LCD Hd44780
    3. wyświetlacz 7 segmentowy
    4. potencjometr analogowy – podający napięcie w zakresie 0-5V,
    5. element “Probe” do pomiaru napięcia podawanego przez potencjometr,
    6. 4 przyciski (UP, Down, X, OK)
    7. 3 diody LED (LED1, LED2, LED3)
  2. 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,
  3. 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,
  4. funkcje programu:
    1. Info – wyświetla ekran powitalny na 4 sekundy i wraca do menu,
    2. 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,
    3. 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,
    4. 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,
    5. 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:

  1. jeden rozdział to jedna funkcja programu,
  2. jeden dodatkowy rozdział poświęcić na opisanie mechanizmu menu,
  3. do każdego rozdziału należy zrobić opis słowny, załączyć zdjęcia z ekranu symulatora przedstawiające działanie,
  4. na końcu sprawozdania należy załączyć kod całego programu (kod wklejamy do sprawozdania, nie mogą być osobne pliki),
  5. 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