Instrukcja - ćwiczenie 5 - Wydział Elektroniki, Telekomunikacji i
Transkrypt
Instrukcja - ćwiczenie 5 - Wydział Elektroniki, Telekomunikacji i
LABORATORIUM Procesory i komputery przemysłowe Katedra Systemów Elektroniki Morskiej Wydział Elektroniki Telekomunikacji i Informatyki Politechnika Gdańska Temat nr 5 System czasu rzeczywistego bazujący na stałopozycyjnym procesorze sygnałowym Prowadzący: Mariusz Rudnicki Opracowali: Jan H. Schmidt Aleksander Schmidt Cel ćwiczenia Celem ćwiczenia jest zapoznanie studenta z możliwościami procesora sygnałowego TMS320F2808 firmy Texas Instruments. Ćwiczenie realizowane będzie z wykorzystaniem zestawu uruchomieniowego firmy Spectrum Digital zawierającego w/w procesor. Omawiany układ stanowi hybrydę mikrokontrolera oraz procesora sygnałowego. Jego bogate zasoby peryferyjne umożliwiają samodzielną pracę a znaczna moc obliczeniowa pozwala na implementację złożonych algorytmów. Jest to przedstawiciel serii 32 bitowych procesorów z wbudowaną pamięcią Flash oraz charakteryzujących się mocą obliczeniową 100 MIPS. Płyta zestawu uruchomieniowego posiada złącza jak przedstawiono na poniższym zdjęciu: Rys. 1. Rozmieszczenie elementów, wyprowadzeń oraz bloków funkcjonalnych na płycie zestawu uruchomieniowego TMS320F2808 DSK Płyta zawiera następujące elementy: procesor sygnałowy TMS320F2808, taktowany zegarem 100 MHz; 2 układy interfejsów linii RS232C (SCI-A, SCI-B); 2 układy interfejsów szyny eCAN (CAN-A, CAN-B); złącze rozszerzające analogowe; złącze rozszerzające wejścia/wyjścia; złącze interfejsu JTAG. 2 Praca z modułem uruchomieniowym 1. Diagnostyka Rozpoczęcie pracy z modułem uruchomieniowym należy rozpocząć od uruchomienia programu diagnostycznego. Jego zadaniem jest przetestowanie połączenia pomiędzy komputerem PC (zintegrowanych środowiskiem programistycznym) a modułem uruchomieniowym jak i pracę najważniejszych elementów takich jak procesor oraz współpracujące z nim układy. Aby uruchomić program diagnostyczny należy użyć ikony umieszczonej na pulpicie: Rys. 2. Ikona programu diagnostycznego mudułu uruchomieniowego Rys. 3. Okno rozpoczęcia procesu diagnostycznego Rys. 4. Okno z poprawnym wynikiem diagnostyki 3 2. Zintegrowane środowisko programistyczne W celu uruchomienia zintegrowanego środowiska programistycznego należy skorzystać z ikony umieszczonej na pulpicie. Rys. 5. Ikona zintegrowanego środowiska programistycznego Rys. 6. Okno główne 4 Pierwszą czynnością po uruchomieniu środowiska jest nawiązanie połączenia z modułem uruchomieniowym - można tego dokonać poprzez wybranie opcji z menu Debug →Connect (Alt+C). Rys. 7. Nawiązanie połączenia z modułem Wszystkie pliki projektowe oraz program terminala są umieszczone w następującej lokalizacji: C:\CCStudio_v3.1\MyProject\ Aby odczytać wcześniej przygotowany projekt należy wybrać opcję Project→Open… 5 Rys. 8. Odczyt pliku projektowego Po odczytaniu pliku projektowego z katalogu ProgramNr1 i wybraniu okna z plikiem źródłowym okno środowiska będzie wyglądało następująco: Rys. 9. Okno środowiska po odczycie pliku projektowego 6 Tworzenie programu wykonywalnego (*.out) – znajdującego się w podkatalogu Debug – dokonuje się poprzez: a.) Kompilację projektu: - opcja „Rebuild All” ikona poziomego Toolbaru: - opcja „Rebuild All” z menu Project: b.) Weryfikację tworzenia pliku wykonywalnego w oknie wyjściowym: 7 Ładowanie programu do pamięci procesora sygnałowego dokonuje się poprzez wybranie opcji z menu File→Load Program: Plik wykonywalny (*.out) zwykle znajduje się w podkatalogu Debug tworzonego projektu. 8 Aby uruchomić program lub śledzić jego kod krok po kroku można użyć różnych ikon pionowego Toolbara, skrótów klawiszowych lub opcji z menu Debug: 9 Zadanie 1. Zmodyfikować szablon programu (Katalog projektu Program 1) tak, aby procesor zmieniał stan zadanego przez prowadzącego pinu wejścia/wyjścia dla odpowiedniego portu procesora. Zadanie wykonaj dla obu sposobów realizacji zadania – patrz przykłady. Zmierz uzyskane czasy. Materiały pomocnicze zamieszczono w Załączniku 1. W sprawozdaniu należy: 1. Umieścić zestawiony kod programu, 2. Umieścić zarejestrowane oscylogramy i zamieścić pomierzone czasy zmiany stanu a.) wysoki→niski, b.) niski→wysoki, 3. Skomentuj uzyskane czasy i ich różnice. Powyższe czynności należy wykonać dla obu sposobów realizacji zadania Przykład: Zestawić program tak aby pin GPIO0 zmieniał stan wysoki→niski, niski→wysoki, wysoki→niski…). Stan wysoki poziom napięcia 3.3V, stan niski 0V. Poprawność działania programu zweryfikować podglądając przebieg sygnału na pinie GPIO0 korzystając z oscyloskopu. Fragment kodu programu (pierwszy sposób): EALLOW; GpioCtrlRegs.GPAMUX1.bit.GPIO0 = 0; GpioCtrlRegs.GPADIR.bit.GPIO0 = 1; EDIS; //Multiplekser ustawiono na funkcję GPIO //GPIO0 ustawiono jako wyjście while(1){ GpioDataRegs.GPATOGGLE.bit.GPIO0 = 1; } //Zmiana stanu pinu GPIO0 Fragment kodu programu (sposób drugi): EALLOW; GpioCtrlRegs.GPAMUX1.bit.GPIO0 = 0; //Multiplekser ustawiono na funkcję GPIO GpioCtrlRegs.GPADIR.bit.GPIO0 = 1; //GPIO0 ustawiono jako wyjście EDIS; while(1){ GpioCtrlRegs.GPASET.bit.GPIO0 = 1; //Ustaw stan wysoki na pinie GPIO0 GpioCtrlRegs.GPACLEAR.bit.GPIO0 = 1; //Ustaw stan niski na pinie GPIO0 } 10 Zadanie 2. Zmień szablon programu (Katalog projektu Program 2) tak, aby procesor, wykorzystując układ Timer0, odmierzył czas – zadany przez prowadzącego. Moment startu odliczania i jego zakończenie należy zasygnalizować zaświeceniem diody LED sterowanej z pina GPIO34. W szablonie programu zamieszczono odpowiednie funkcje do wykorzystania: void LED_On(void); void LED_Off(void); void LED_Toggle(void); Materiały pomocnicze zamieszczono w Załączniku 2. W sprawozdaniu należy: 1. Umieścić zestawiony kod programu 11 Zadanie 3. Zmodyfikować szablon programu (Katalog projektu Program 3) tak, aby procesor wykorzystując interfejs SCI (RS232C) wysyłał zadany znak z określonymi parametrami transmisji – zadanymi przez prowadzącego. Używając programu Terminal na komputerze PC podejrzeć poprawność wysyłanych znaków. Materiały pomocnicze zamieszczono w Załączniku 3,4 i 5. W sprawozdaniu należy: 1. Zamieścić zestawiony kod programu. 2. Zamieścić zarejestrowane oscylogramy przebiegu linii TxD (RS232C) i zidentyfikować na nim bit startu, stopu, parzystości oraz bity przesyłanego znaku. 3. Zamieścić „zrzut ekranu z odebranymi znakami” okna programu Terminal. Rys. 10. Schemat połączeń Przykład: Zestawić programu z następującymi parametrami transmisji: 1 bit stopu, bez kontroli parzystości, dana 8-bitowa, prędkość transmisji 9600 bitów/s. Dla: fCPU = 100 000 000 Hz Prędkość transmisji = 9600 bit/s 12 Otrzymujemy: SCIHBAUD = 0x01; SCILBAUD = 0x44; Fragment kod programu: //Parametry transmisji SciaRegs.SCICR.bit.STOPBITS = 0; SciaRegs.SCICR.bit.PARITY = 0; SciaRegs.SCICR.bit.PARITYENA=0; SciaRegs.SCICR.bit.SCICHAR = 7; //1 stop bit //Odd Parity //Parity enabled //Character length control //Prędkość transmisji: SciaRegs.SCIHBAUD = 0x01; SciaRegs.SCILBAUD = 0x44; 13 Zadanie 4. Korzystając z interfejsu SCI (RS232C) zmodyfikować programu (Katalog projektu Program 4) tak, aby realizował zadany program. Działanie programu polega na odbieraniu znaku, odpowiednim zinterpretowaniu go i odpowiedzi. Parametry transmisji oraz schemat reakcji - wg wytycznych prowadzącego. Do komunikacji z modułem procesora należy na komputerze uruchomić program Terminal. Materiał pomocnicze zamieszczono w Załączniku 3. W sprawozdaniu należy: 1. Umieścić kod programu. 2. Umieścić „zrzut ekranu wyników transmisji” programu Terminal Rys. 11. Schemat połączeń Przykład: Zestawić program, który będzie realizował, po odebraniu znaku, odpowiednie zadania wg załączonej tabeli reakcji: Odebrany znak w kodzie ASCII „1” „2” Inne Zadanie do realizacji Zapal diodę LED i wyślij znak „A” Zgać diodę LED i wyślij znak „B” Wyślij znak „C” 14 Fragment kodu programu: Status = SciaRegs.SCIFFRX.bit.RXFFST; If(Status != 0){ //Jest odebrany znak w buforze odbiorczym ReceivedChar = SciaRegs.SCIRXBUF.all; If(ReceivedChar == ‘1’){ LED_On(); SCIA_WyslijZnak(‘A’); while((SciaRegs.SCICTL2.bit.TXEMPTY != 1)&&(SciaRegs.SCIFFTX.bit.TXFFST >=16)); } else if(ReceivedChar == ‘2’){ LED_Off(); SCIA_WyslijZnak(‘B’); while((SciaRegs.SCICTL2.bit.TXEMPTY != 1)&&(SciaRegs.SCIFFTX.bit.TXFFST >=16)); } else{ SCIA_wyslijZnak(‘C’); while((SciaRegs.SCICTL2.bit.TXEMPTY != 1)&&(SciaRegs.SCIFFTX.bit.TXFFST >=16)); } } 15 Załącznik 1 Sygnały portów procesora Sygnały cyfrowe Rys. 12. Widok złącza P8 z cyfrowymi sygnałami I/O DSP Rys. 13. Szczegółowy opis pinów złącza P8 16 Sygnały analogowe Rys. 14. Widok złącz P5 i P9 z analogowymi sygnałami wejściowymi DSP Rys. 15. Szczegółowy opis pinów złącz P5 i P9 17 Procesor umożliwia multipleksowanie do 3 niezależnych sygnałów peryferyjnych na pojedynczym pinie GPIO co przedstawia poniższy rysunek. Rys. 16. Schemat blokowy konfiguracji pinu Definiując pin do pracy należy określić jego funkcję oraz rodzaj (wejście/wyjście). 18 Tabela 1. Możliwe ustawienia multiplexera 19 Załącznik 2 Zegary procesora Procesor posiada trzy 32-bitowe zegary, które mogą być użyte w aplikacjach użytkownika. Rys. 17. Schemat funkcjonalny timera Timer pracuje w następujący sposób: 32-bitowy rejestr licznika TIMH:TIM zostaje załadowany wartością z rejestru PRDH:PRD. Po uruchomieniu licznika rejestr licznika jest dekrementowany z taktem zegara SYSCLKOUT. Po osiągnięciu wartości zero generowane jest przerwanie. Zależność na generacje przerwania po upływie określonego czasu: PRD = fCPU[MHz]*żądany czas [us]. Maksymalna wartość PRD= 232; 20 Załącznik 3 Asynchroniczny port szeregowy SCI – RS232C Rys. 18. Schemat blokowy modułu komunikacji szeregowej 21 Rys. 19. Rejestr parametrów transmisji 22 Załącznik 4 Ramka przesyłanej danej – interfejs RS232C 1 bit startu; 7 bitów danej znak „A” – 41HEX; Bit parzystości; dwa bity stopu. 23 Załącznik 5 Tabela ASCII 24