Sterowniki Robotów. Prymitywny Animowany Wyświetlacz Opis projektu PAW

Podobne dokumenty
Raport etap III. Prymitywny animowany wyświetlacz 2.0 PAW 2.0

LCD (Liquid Crystal Display)

Instytut Teleinformatyki

Instytut Teleinformatyki

Projekt MARM. Dokumentacja projektu. Łukasz Wolniak. Stacja pogodowa

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

Sprawozdanie z projektu MARM. Część druga Specyfikacja końcowa. Prowadzący: dr. Mariusz Suchenek. Autor: Dawid Kołcz. Data: r.

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

Wizualne systemy programowania. Wykład 11 Grafika. dr Artur Bartoszewski -Wizualne systemy programowania, sem. III- WYKŁAD

Programowanie aplikacji na urządzenia mobilne

1 LEKCJA. Definicja grafiki. Główne działy grafiki komputerowej. Programy graficzne: Grafika rastrowa. Grafika wektorowa. Grafika trójwymiarowa

Politechnika Białostocka Wydział Elektryczny Katedra Automatyki i Elektroniki

Zad. 6: Sterowanie robotem mobilnym

Technika mikroprocesorowa. Konsola do gier

ACSE Sp. z o.o. Graficzne rejestratory VM7000. Dużo funkcji i łatwa obsługa! Duża szybkość, dokładność i wielozakresowość.

Programowanie Mikrokontrolerów

Zad. 3: Rotacje 2D. Demonstracja przykładu problemu skończonej reprezentacji binarnej liczb

1 Zrozumieć Flasha... 1 Co można zrobić za pomocą Flasha?... 2 Tworzenie obrazków do strony 3 Animowanie witryny 4 Tworzenie filmów

LabVIEW PLATFORMA EDUKACYJNA Lekcja 6 LabVIEW i Arduino programy wykorzystujące wyświetlacz LCD, czujnik temperatury, PWM i diodę LED

Expo Composer Garncarska Szczecin tel.: info@doittechnology.pl. Dokumentacja użytkownika

LOW ENERGY TIMER, BURTC

TEST KOŃCOWY DLA KLASY III GIMNAZJUM- POGRAMOWANIE. Szkoła Podstawowa Nr 5. im. Księcia Mazowieckiego Siemowita IV w Gostyninie.

Janusz Ganczarski. OpenGL Pierwszy program

Implementacja sieci neuronowych na karcie graficznej. Waldemar Pawlaszek

Dell P2018H Dell Display Manager Instrukcja użytkownika

GRAFIKA. Rodzaje grafiki i odpowiadające im edytory

Wstęp. Opis ATMEGA128 MINI MODUŁ VE-APS-1406

Mikroprocesory i Mikrosterowniki Laboratorium

MIKROKONTROLERY ARM DOKUMENTACJA WSTĘPNA PROJEKTU GRA PONG

Multimedia i interfejsy. Ćwiczenie 5 HTML5

Programator procesorów rodziny AVR AVR-T910

Zad. 4: Rotacje 2D. 1 Cel ćwiczenia. 2 Program zajęć. 3 Opis zadania programowego

Szkolenia specjalistyczne

Zgrana para - NerO i CleO

Magistrala SPI. Linie MOSI i MISO sąwspólne dla wszystkich urządzeńna magistrali, linia SS jest prowadzona do każdego Slave oddzielnie.

ZL8AVR. Płyta bazowa dla modułów dipavr

Wyświetlacz alfanumeryczny LCD zbudowany na sterowniku HD44780

Grafika rastrowa (bitmapa)-

Narzędzia uruchomieniowe dla systemów Embedded firmy Total Phase

Przegląd rozwiązań z oferty firmy 4D Systems

która metoda jest najlepsza

LabVIEW PLATFORMA EDUKACYJNA Lekcja 5 LabVIEW i Arduino konfiguracja środowiska i pierwszy program

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

TeleVGA. Dokumentacja wer. 1.03

Druga aplikacja Prymitywy, alpha blending, obracanie bitmap oraz mały zestaw przydatnych funkcji wyświetlających własnej roboty.

Zadajniki dotykowe. HMI Touch 4,3, HMI Touch 7

Microsoft Small Basic

Unity 3D - własny ekran startowy i menu gry

Laboratorium Komputerowe Systemy Pomiarowe

Mikrokontrolery AVR techniczne aspekty programowania

Wbudowane układy komunikacyjne cz. 1 Wykład 10

D O K U M E N T A C J A

Programowalne układy logiczne

Wprowadzenie do QT OpenGL

1. Prymitywy graficzne

DOKUMENTACJA PROJEKTU

STM32 Butterfly. Zestaw uruchomieniowy dla mikrokontrolerów STM32F107

Ćwiczenie 4 - Podstawy materiałów i tekstur. Renderowanie obrazu i animacji

Opis implementacji: Poznanie zasad tworzenia programów komputerowych za pomocą instrukcji języka programowania.

Zajęcia z aplikacją ScratchJr mogą zostać przeprowadzone na dwa sposoby:

Laboratorium Procesorów Sygnałowych

Internetowy sterownik podlewania ogrodowego na LOGO! Sieciowy dostęp do LOGO! za pomocą http

Komunikacja w mikrokontrolerach Laboratorium

Opracował: Jan Front

Zatem standardowe rysowanie prymitywów wygląda następująco:

Programowanie procesorów graficznych GPGPU. Krzysztof Banaś Obliczenia równoległe 1

Rejestrator temperatury i wilgotności AX-DT100. Instrukcja obsługi

Grażyna Koba. Grafika komputerowa. materiały dodatkowe do podręcznika. Informatyka dla gimnazjum

Instytut Teleinformatyki

Ćwiczenia z S Komunikacja S z miernikiem parametrów sieci PAC 3200 za pośrednictwem protokołu Modbus/TCP.

Wykorzystanie usług chmurowych dla sterowania robotem mobilnym na przykładzie Amazon EC2

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

Technologie Informacyjne

INSTRUKCJA UŻYTKOWNIKA MPCC

Raport. Grająca płytka GraP

Instrukcja obsługi programu. BlazeVideo HDTV Player v6

PROJECT OF FM TUNER WITH GESTURE CONTROL PROJEKT TUNERA FM STEROWANEGO GESTAMI

Tablet LENOVO Yoga 3 X50L LTE

1. Wstęp Pierwsze uruchomienie Przygotowanie kompozycji Wybór kompozycji Edycja kompozycji...

Rejestrator (datalogger) wilgotności i temperatury AB-172

Metody optymalizacji soft-procesorów NIOS

BSP_LCD_Clear(LCD_COLOR_WHITE); BSP_LCD_SetFont(&Font16); BSP_LCD_SetTextColor(LCD_COLOR_BLACK);

Animacje cz. 2. Rysujemy koło zębate

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

Laboratorium Komputerowe Systemy Pomiarowe

PAKIET nr 12 Instytut Fizyki Teoretycznej

PANELE OPERATORSKIE. Human Machine Interface

Programowanie Układów Logicznych kod kursu: ETD6203. Szczegóły realizacji projektu indywidualnego W dr inż.

CZYM JEST KARTA GRAFICZNA.

Zad. 5: Sterowanie robotem mobilnym

USB HYBRID TV STICK. Instrukcja obsługi. Watch & record Digital TV & Analog TV programs on Your PC! MT4153

Przy dużej wielkości głębokości uzyskamy wrażenie nieskończoności: Dla głębokości zerowej uzyskamy tekst płaski:

Simba 3D LOGO. Cele zajęć: - Poznanie zasad i sposobów tworzenia procedur z parametrami. - Poznanie zasad wywoływania procedur z parametrami.

Wstęp do Programowania Lista 1

Instrukcja instalacji Zespołu Diagnostycznego Delphi w systemie Vista.

Wirtualne przyrządy kontrolno-pomiarowe

Zaawansowany kurs języka Python

Mikrokontrolery wytyczne do projektów

Programowanie mikrokontrolerów 2.0

Zestaw Startowy EvB. Więcej informacji na stronie:

Transkrypt:

Sterowniki Robotów Prymitywny Animowany Wyświetlacz Opis projektu PAW Paulina Porczyńska - 218484 Juliusz Stanisław Tarnowski - 215197 Tydzień parzysty, środa 11:15, grupa 7 Prowadzący: Wojciech Domski 17 czerwca 2017

SPIS TREŚCI SPIS TREŚCI Spis treści 1 Opis Projektu 2 1.1 Temat................................. 2 1.2 Cel Projektu............................. 2 2 Specyfikacja 2 2.1 Środowisko i język programowania................. 2 2.2 Opis funkcjonalności......................... 2 2.3 Budowa architektury systemu.................... 3 2.3.1 Biblioteki matematyczne................... 3 2.3.2 Klasa koloru......................... 3 2.3.3 Klasy figur.......................... 3 2.3.4 Klasa Scena.......................... 4 2.4 Diagram Klas............................. 4 3 Konfiguracja mikrokontrolera 4 3.1 Konfiguracja pinów.......................... 4 3.2 Peryferia................................ 6 4 Opis działania programu 8 5 Zadania niezrealizowane 10 5.1 Wykorzystanie z SDRAM...................... 10 1

2 SPECYFIKACJA 1 Opis Projektu 1.1 Temat Animacje na LCD (płytka STM32F429I-DISC0) Biblioteka obsługująca rysowanie prymitywów (linia, prostokąt, trójkąt, koło, tekst); buforowanie obrazu. Wykonanie serii animacji na wyświetlaczu graficznym. 1.2 Cel Projektu Głównym zadaniem jest napisanie biblioteki pozwalającej na generowanie obrazów na ekranie LCD płytki STM32F429i. W ramach projektu napisaliśmy funkcje pozwalające rysować proste kształty (koła, linie itp. wypełnione lub nie). Korzystaliśmy z gotowych bibliotek pozwalających na podstawową obsługę i konfigurację wyświetlacza oraz z programów dedykowanych tym płytkom: STM32Cube oraz System Workbench for STM32. Finałem naszego projektu jest seria animacji pokazujących możliwości biblioteki oraz działanie wyświetlacza. 2 Specyfikacja 2.1 Środowisko i język programowania Płytką na której pracowaliśmy jest STM32F429 Discovery. Posiada wbudowany kolorowy wyświetlacz LCD o rozdzielczości 320x240 pixeli. Jest również wyposażona w 2 MB Flash, 8 MB SDRAM. Wyświetlacz jest dotykowy, jednak nie korzystamy z tej jego funkcjonalności. Biblioteka powstała za pomocą dedykowanego oprogramowania w systemie operacyjnym Windows 7. STM32Cube System Workbench for STM32 STM32 ST-Link Utility Językiem, w którym programowaliśmy jest C++. Jest to język uniwersalny, przeznaczony do pisania programów na różne platformy, dzięki temu nasz kod powinno być można w miarę łatwo dostosować do sterowania podobnym ekranem LCD za pomocą innej płytki. Chcieliśmy wykorzystać obiektowość do stworzenia logicznego systemu klas obiektów i funkcji, tak, aby po zakończeniu projektu inne osoby mogły łatwo zrozumieć nasz kod i rozbudowywać go we własnym zakresie. 2.2 Opis funkcjonalności Biblioteka przede wszystkim obsługuj wyświetlanie figur oraz wydarzeń z nimi związanych. Figury są płaskie, jednak zbudowaliśmy bibliotekę tak, aby mogła 2

2.3 Budowa architektury systemu 2 SPECYFIKACJA kiedyś obsługiwać przestrzeń trójwymiarową. Z punktu widzenia wydajności dokłada to wiele obliczeń, ale czyni projekt ciekawszym, znacząco zwiększając jego potencjalne możliwości. Figury składają się z prymitywnych kształtów: punktów, linii i okręgów. Każdy prymityw posiada własny kolor. Figury są umieszczane na scenie, która pozwala na obsługę wydarzeń. Wydarzeniem jest przesuwanie oraz obracanie się figury, ale architektura klas pozwala również na łatwą implementację zmiany koloru, wykrycie przyciśnięcia figury na panelu dotykowym, lub nawet kolizje. Oczywiście można poruszać elementami na różnych poziomach: można obracać i przesuwać wszystko na raz z poziomu sceny, można manipulować jedną figurą lub pojedynczym prymitywem w figurze. Ewentualni następcy będą mogli rozbudować bibliotekę o wiele możliwości - wczytywanie tekstur, obsługę panelu dotykowego, implementację prostej fizyki, wczytywanie animacji lub gifów i inne. Naszym celem jest zapewnienie architektury, która to umożliwi. Chcemy, aby obie części projektu były pod tym względem wygodne, dlatego wydarzenia zdefiniowane są dosyć abstrakcyjnie, a interfejs sprzętu umożliwia komunikację również z pominięciem sceny. 2.3 Budowa architektury systemu 2.3.1 Biblioteki matematyczne Napisaliśmy biblioteki PAW Vector.h i PAW Matrix.h pozwalające operować na wektorach i macierzach 4d. Posiadają one przeciążenia wszystkich niezbędnych operatorów, łącznie z operatorem indexowania, co pozwala na intuicyjne odwołania do elementów jak macierz[ x ][ z ] czy wektor[ u ]. Przeciążone zostało też mnożenie macierz * wektor i macierz * macierz. Dodatkowo mamy metodę tworzącą podstawową macierz obrotu. Obydwie klasy są skończone i zawiera wszystkie operacje matematyczne jakich prawdopodobnie możemy potrzebować. 2.3.2 Klasa koloru Klasa PAW Color przetrzymuje informacje o kolorach. W szczególności zwraca kod koloru na podstawie podanych wartości T, R, G, B oraz ma metodę mieszającą kolory na podstawie ich wagi, która będzie mogła być wykorzystywana w algorytmach antyaliasingowych. W przyszłości będzie można dodać obsługę przeźroczystości. 2.3.3 Klasy figur Jest to zbiór klas dziedziczących po klasie wirtualnej PAW Primitive, w chwili obecnej: punkt, linia, koło - podstawowe prymitywy, z których możemy składać inne figury. Klasa wirtualna PAW Figure jest kontenerem na prymitywy tworzące razem większy kształt. Na takiej grupie będzie się wykonywać jednakowe przekształcenia aby zmieniać całą figurę. Na przykład: płatek śniegu jest złożony z trzech obiektów klasy linia. Wszystkie trzy są elementami obiek- 3

2.4 Diagram Klas 3 KONFIGURACJA MIKROKONTROLERA tu klasy figura, dzięki czemu wiemy, że tworzą razem jeden kształt i należy je przekształcać w ten sam sposób. 2.3.4 Klasa Scena Jest to klasa przetrzymująca informacje o scenie: kolor tła, listę wszystkich figur znajdujących się na scenie, rozdzielczość obrazu. Jest odpowiedzialna za rysowanie obiektów na wyświetlaczu (metoda display) oraz ma metody pozwalające na identyczny obrót/translacje/zmianę koloru wszystkich figur na raz. 2.4 Diagram Klas Rysunek 1 przedstawia diagram najlepiej ilustrujący wykonaną przez nas pracę. 3 Konfiguracja mikrokontrolera 3.1 Konfiguracja pinów Rysunek 2 oraz poniższa tabela przedstawiają konfiguracje pinów na mikrokontrolerze. Rysunek 3 przedstawia ustawienia zegarów. Skonfigurowane zostały piny odpowiedzialne za obsługę wyświetlacza oraz pamięci SDRAM i DMA2D, które ostatecznie nie są wykorzystywane. 4

3.1 Konfiguracja pinów 3 KONFIGURACJA MIKROKONTROLERA PERIPHERALS MODES FUNCTIONS PINS FMC:SDRAM SDCKE1+SDNE1 FMC SDCKE1 PB5 FMC:SDRAM SDCKE1+SDNE1 FMC SDNE1 PB6 FMC:SDRAM 4 banks FMC BA0 PG4 FMC:SDRAM 4 banks FMC BA1 PG5 FMC:SDRAM 12 bits FMC A0 PF0 FMC:SDRAM 12 bits FMC A1 PF1 FMC:SDRAM 12 bits FMC A2 PF2 FMC:SDRAM 12 bits FMC A3 PF3 FMC:SDRAM 12 bits FMC A4 PF4 FMC:SDRAM 12 bits FMC A5 PF5 FMC:SDRAM 12 bits FMC A6 PF12 FMC:SDRAM 12 bits FMC A7 PF13 FMC:SDRAM 12 bits FMC A8 PF14 FMC:SDRAM 12 bits FMC A9 PF15 FMC:SDRAM 12 bits FMC A10 PG0 FMC:SDRAM 12 bits FMC SDCLK PG8 FMC:SDRAM 12 bits FMC SDNCAS PG15 FMC:SDRAM 12 bits FMC SDNRAS PF11 FMC:SDRAM 12 bits FMC SDNWE PC0 FMC:SDRAM 12 bits FMC A11 PG1 FMC:SDRAM 16 bits FMC D0 PD14 FMC:SDRAM 16 bits FMC D1 PD15 FMC:SDRAM 16 bits FMC D2 PD0 FMC:SDRAM 16 bits FMC D3 PD1 FMC:SDRAM 16 bits FMC D4 PE7 FMC:SDRAM 16 bits FMC D5 PE8 FMC:SDRAM 16 bits FMC D6 PE9 FMC:SDRAM 16 bits FMC D7 PE10 FMC:SDRAM 16 bits FMC D8 PE11 FMC:SDRAM 16 bits FMC D9 PE12 FMC:SDRAM 16 bits FMC D10 PE13 FMC:SDRAM 16 bits FMC D11 PE14 FMC:SDRAM 16 bits FMC D12 PE15 FMC:SDRAM 16 bits FMC D13 PD8 FMC:SDRAM 16 bits FMC D14 PD9 FMC:SDRAM 16 bits FMC D15 PD10 FMC:SDRAM 16-bit byte enable FMC NBL0 PE0 FMC:SDRAM 16-bit byte enable FMC NBL1 PE1 5

3.2 Peryferia 3 KONFIGURACJA MIKROKONTROLERA PERIPHERALS MODES FUNCTIONS PINS LTDC RGB666 (18 bits) LTDC R2 PC10 LTDC RGB666 (18 bits) LTDC R3 PB0 LTDC RGB666 (18 bits) LTDC R4 PA11 LTDC RGB666 (18 bits) LTDC R5 PA12 LTDC RGB666 (18 bits) LTDC R6 PB1 LTDC RGB666 (18 bits) LTDC R7 PG6 LTDC RGB666 (18 bits) LTDC G2 PA6 LTDC RGB666 (18 bits) LTDC G3 PG10 LTDC RGB666 (18 bits) LTDC G4 PB10 LTDC RGB666 (18 bits) LTDC G5 PB11 LTDC RGB666 (18 bits) LTDC G6 PC7 LTDC RGB666 (18 bits) LTDC G7 PD3 LTDC RGB666 (18 bits) LTDC B2 PD6 LTDC RGB666 (18 bits) LTDC B3 PG11 LTDC RGB666 (18 bits) LTDC B4 PG12 LTDC RGB666 (18 bits) LTDC B5 PA3 LTDC RGB666 (18 bits) LTDC B6 PB8 LTDC RGB666 (18 bits) LTDC B7 PB9 LTDC RGB666 (18 bits) LTDC HSYNC PC6 LTDC RGB666 (18 bits) LTDC VSYNC PA4 LTDC RGB666 (18 bits) LTDC CLK PG7 LTDC RGB666 (18 bits) LTDC DE PF10 RCC BYPASS Clock Source RCC OSC IN PH0 RCC BYPASS Clock Source RCC OSC OUT PH1 SPI5 Full-Duplex Master SPI5 MISO PF8 SPI5 Full-Duplex Master SPI5 MOSI PF9 SPI5 Full-Duplex Master SPI5 SCK PF7 3.2 Peryferia Poniższe tabele przedstawiają dokładniejszy opis konfiguracji ważniejszych peryferiów. DMA2D mode: Activated Parameter Settings Transfer Mode Memory to Memory Color Mode RGB565 Output Offset 0 Foreground layer Configuration DMA2D Input Color Mode RGB565 DMA2D ALPHA MODE No modification of the alpha channel value 6

3.2 Peryferia 3 KONFIGURACJA MIKROKONTROLERA FMC Clock and chip enable: SDCKE1+SDNE1 Internal bank number: 4 banks Address: 12 bits Data: 16 bits Byte enable: set SDRAM 1 Bank SDRAM bank 2 Number of column address bits 8 bits Number of row address bits 12 bits CAS latency 3 memory clock cycles Write protection Enabled SDRAM common clock 2 HCLK clock cycles SDRAM common burst read Disabled SDRAM common read pipe delay 2 HCLK clock cycles SDRAM timing in memory clock cycles Load mode register to active delay 16 Exit self-refresh delay 16 Self-refresh time 16 SDRAM common row cycle delay 16 Write recovery time 16 SDRAM common row precharge delay 16 Row to column delay 16 7

4 OPIS DZIAŁANIA PROGRAMU LTDC Display Type: RGB666 (18 bits) Parameter Settings Synchronization for Width Horizontal Synchronization Width 8 Horizontal Back Porch 7 Active Width 320 Horizontal Front Porch 6 HSync Width 7 Accumulated Horizontal Back Porch Width 14 Accumulated Active Width 334 Total Width 340 Synchronization for Height Vertical Synchronization Height 4 Vertical Back Porch 2 Active Height 480 Vertical Front Porch 2 VSync Height 3 Accumulated Vertical Back Porch Height 5 Accumulated Active Height 485 Total Height 487 Signal Polarity Horizontal Synchronization Polarity Active Low Vertical Synchronization Polarity Active Low Data Enable Polarity Active Low Pixel Clock Polarity Normal Input BackGround Color Red 0 Green 0 Blue 0 4 Opis działania programu Przedstawiamy tutaj sposób stworzenia prostej animacji oraz jej wyświetlanie na ekranie LCD. Rysunek 4 przedstawia jedną klatkę tej animacji. Połączenie prymitywów w figury, które będą wyświetlane, dobranie odpowiedniego miejsca wyświetlania. Tutaj funkcja tworząca pawie pióro. void PAW_MakeFeatherFromFigure ( PAW_Figure & this_figure ) { // duze oko // polozenie srodka, promien, wypelnienie, kolor PAW_Circle big_cir1 ( PAW_Vector (120, 90, 0, 1), 35, true, PAW_Color (255, 0, 255, 0)); 8

4 OPIS DZIAŁANIA PROGRAMU PAW_Circle big_cir2 ( PAW_Vector (120, 90, 0, 1), 20, true, PAW_Color (255, 0, 0, 255)); // srednie oko PAW_Circle mid_cir1 ( PAW_Vector (120, 90+50, 0, 1), 30, true, PAW_Color (255, 0, 255, 0)); PAW_Circle mid_cir2 ( PAW_Vector (120, 90+50, 0, 1), 15, true, PAW_Color (255, 0, 0, 255)); // male oka PAW_Circle s_cir1 ( PAW_Vector (120, 90+50+40, 0, 1), 25, true, PAW_Color (255, 0, 255, 0)); PAW_Circle s_cir2 ( PAW_Vector (120, 90+50+40, 0, 1), 15, true, PAW_Color (255, 0, 0, 255)); PAW_Circle s_cir3 ( PAW_Vector (120, 90+50+40+30, 0, 1), 20, true, PAW_Color (255, 0, 255, 0)); PAW_Circle s_cir4 ( PAW_Vector (120, 90+50+40+30, 0, 1), 10, true, PAW_Color (255, 0, 0, 255)); PAW_ Circle s_ cir5 ( PAW_ Vector (120, 90+50+40+30+30, 0, 1), 20, true, PAW_Color (255, 0, 255, 0)); PAW_ Circle s_ cir6 ( PAW_ Vector (120, 90+50+40+30+30, 0, 1), 10, true, PAW_Color (255, 0, 0, 255)); // wpisanie ich do figury, kolejnosc jest istotna this_figure. push ( big_cir1 ); this_figure. push ( big_cir2 ); this_figure. push ( mid_cir1 ); this_figure. push ( mid_cir2 ); this_figure. push ( s_cir1 ); this_figure. push ( s_cir2 ); this_figure. push ( s_cir3 ); this_figure. push ( s_cir4 ); this_figure. push ( s_cir5 ); this_figure. push ( s_cir6 ); } Stworzenie obiektu klasy scena, wybranie koloru tła PAW_Scene superscena ( PAW_Color (0 xff,255,255,255)); Dodanie figur do listy elementów na Scenie PAW_Figure f1, f2, f3, t1; PAW_MakeFeatherFromFigure (f1 ); PAW_MakeFeatherFromFigure (f2 ); PAW_MakeFeatherFromFigure (f3 ); PAW_MakeBody (t1 ); superscena. push (f1 ); 9

5 ZADANIA NIEZREALIZOWANE superscena. push (f2 ); superscena. push (f3 ); superscena. push (t1 ); W pętli: zmiana położenia poszczególnych figur i prymitywów oraz wyświetlenie całości. // obroc figury wzgledem jakiego punktu i o jaki kat superscena. figs [0]. rotate ( PAW_Vector (120,290,0,0), a); superscena. figs [1]. rotate ( PAW_Vector (120,290,0,0), b); uint8_ t i = 150; while (i - -) { superscena. display (); // wyswietl } // nastrosz piorka superscena. figs [0]. rotate ( PAW_Vector (120,290,0,0), superscena. figs [1]. rotate ( PAW_Vector (120,290,0,0), a = -1 * a; b = -1 * b; HAL_ Delay ( 1000); // delay do ladnego wyswietlania a); b); 5 Zadania niezrealizowane 5.1 Wykorzystanie z SDRAM Chcieliśmy zapewnić płynną animację, bez konieczności oglądania rysowanie każdej kolejnej figury. Do tego niezbędne jest korzystanie z RAMu oraz DMA2D. W tym momencie wszystko wyświetlane jest na bieżąco, co powoduje migotanie ekranu, brak wyraźnego obrazu, szybkie męczenie się oczu i generalnie wygląda źle. Obsługa RAMu zagwarantowała by nam możliwość wrzucania całych kolejnych klatek animacji na raz. Wtedy, nawet jeśli procesor pozwoli nam na 1FPS, to efekt końcowy był by nieporównywalnie lepszy i przyjemniejszy dla oka. Ostatecznie udało nam się uruchomić ram oraz poprawnie zapisywać i odczytywać z niego dane, jednak nie zrobiliśmy interfaceu niezbędnego do zintegrowania go z naszą biblioteką. 10

5.1 Wykorzystanie z SDRAM 5 ZADANIA NIEZREALIZOWANE Rysunek 1: Architektura systemu 11

5.1 Wykorzystanie z SDRAM 5 ZADANIA NIEZREALIZOWANE Rysunek 2: Konfiguracja wyprowadzeń 12

5.1 Wykorzystanie z SDRAM 5 ZADANIA NIEZREALIZOWANE Rysunek 3: Konfiguracja zegarów 13

5.1 Wykorzystanie z SDRAM 5 ZADANIA NIEZREALIZOWANE Rysunek 4: Prosty Paw złożony z prymitywów 14