Politechnika Białostocka Wydział Elektryczny Katedra Automatyki i Elektroniki Instrukcja do ćwiczeń laboratoryjnych z przedmiotu Elektronika samochodowa (Kod: TS1C 622 388) Temat: Programowanie mikrokontrolerów AVR serii Automotive Opracował: dr inż. Wojciech Wojtkowski 2 lutego 2017
1 Cel i zakres ćwiczenia Celem ćwiczenia jest poznanie budowy wybranych mikro-kontrolerów stosowanych w pojazdach samochodowych (AVR serii Automotive) oraz zapoznanie z podstawami programowania ich w języku C. Wiadomości zdobyte podczas ćwiczenia laboratoryjnego będą następnie potrzebne podczas wykonywania kolejnych ćwiczeń. Studenci w trakcie ćwiczenia poznają także zasady obsługi niezbędnego oprogramowania narzędziowego. Podczas zajęć laboratoryjnych, przed każdym zadaniem należy odpowiednio skonfigurować dostępne zestawy laboratoryjne (podłączyć zasilanie, podłączyć programator do płytki testowej oraz do komputera PC, zrealizować połączenia na płycie zestawu zgodnie z realizowanym zadaniem), a następnie napisać program w języku C realizujący otrzymane od prowadzącego zadanie. Następnie należy zaprogramować mikrokontroler i przetestować działającą aplikację lub przeprowadzić uruchomienie programu i usunięcie błędów programowych. Będą przydzielane różne zadania o rosnącym, wraz z czasem trwania ćwiczenia, stopniu trudności, np.: konfiguracja portów I/O mikrokontrolera AVR, obsługa przycisków z eliminacją drgań styków, obsługa przycisków z eliminacją drgań styków realizowana w przerwaniach INT, obsługa przycisków realizowana w przerwaniach INT z eliminacją drgań styków realizowaną w przerwaniach zegarowych, odmierzanie czasu trwania impulsów za pomocą liczników i przerwań zegarowych, wyświetlanie informacji na wyświetlaczach LED oraz LCD, pisanie funkcji z parametrami wejściowymi i wyjściowymi, dołączanie plików nagłówkowych, tworzenie własnej biblioteki funkcji. Podstawowe wiadomości z zakresu wykorzystania mikrokontrolerów będą przydatne w kolejnych ćwiczeniach przy realizacji bardziej złożonych zadań. Szczegółowy zakres ćwiczenia i zadania dla każdej grupy studentów ustala prowadzący na początku zajęć. Ćwiczenie realizowane jest w ciągu 6 godzin lekcyjnych (dwa spotkania po 3 godziny). 2 Mikrokontrolery ATmega16M1, 32M1, 64M1 Automotive Mikrokontrolery Atmel serii ATmega16M1, ATmega32M1 oraz ATmega64M1 zostały zaprojektowane do zastosowań w pojazdach samochodowych, m.in. do pracy w systemach kontroli przeniesienia napędu. Szczególnie użyteczne mogą być we wszelkich systemach rozproszonych, w których do komunikacji międzywęzłowej wykorzystywane są interfejsy CAN oraz LIN. Zawierają one odpowiednio 16, 32 i 64kB pamięci Flash, zestaw linii I/O ogólnego przeznaczenia, komparatory analogowe, przetworniki A/C, bardziej rozbudowany generator PWM niż w standardowej serii ATmega (z taktowaniem do 64 MHz). Programowanie AVR 1 z 11
Są to podobnie jak w serii standardowej mikrokontrolery 8-bitowe o architekturze RISC. Dostępne jest sprzętowe wspomaganie sterowania silników bezszczotkowych, coraz częściej wykorzystywanych w nowych konstrukcjach samochodowych. Pisanie oprogramowania w języku C dla mikrokontrolerów serii Automotive wymaga poznania architektury i zasad obsługi nowych specjalizowanych bloków peryferyjnych. Z uwagi na większą efektywność przy ograniczonych zasobach sprzętowych i wydajnościowych, preferowane jest oprogramowanie w C niż w C++. Poszczególne bloki peryferyjne wykorzystywane na zajęciach będą omawiane w trakcie ćwiczenia przez prowadzącego. 3 Zestaw uruchomieniowy W trakcie zajęć wykorzystywane będą zestawy uruchomieniowe EVBavr05 wyposażone w gniazdo umożliwiające wstawienie badanego mikrokontrolera w obudowie DIP40. Widok zestawu uruchomieniowego EVBavr05 jest przedstawiony na rysunku 1. Połączenia na płycie EVB wykonujemy specjalnymi przewodami do złącz typu Goldpin. Widok przewodów jest przedstawiony na rysunku 2. Wyprowadzenia mikrokontrolera umieszczonego w podstawce DIP40 są połączone z odpowiednimi pinami złącza JP18 na płytce EVB zgodnie z rys. 3. Płyta główna umożliwia testowanie wielu różnych aplikacji z wykorzystaniem szeregu różnych układów peryferyjnych. Zestaw EVB umożliwia wygodny dostęp do wszystkich końcówek mikrokontrolera oraz układów peryferyjnych za pomocą złącz typu Goldpin, które można łączyć z układami peryferyjnymi za pomocą przewodów lub zworek. Niektóre układy peryferyjne, są umieszczone w ten sposób, że do ich podłączenia wystarczą zworki umieszczone w odpowiednich miejscach na płycie EVB. Schemat podłączenia przycisków jest przedstawiony na rysunku 4. Do dyspozycji mamy przyciski SW0, SW1, SW2, SW3, SW4, SW5, SW6 oraz SW7 połączone z dwurzędowym złączem Goldpin JP14 (rys. 4). W trakcie ćwiczenia należy połączyć potrzebne przyciski z odpowiednimi portami mikrokontrolera za pomocą dodatkowych przewodów. Najpierw jednak należy skonfigurować odpowiednie wejścia mikrokontrolera AVR. Uwaga: w przypadku podłączenia przycisku do portu I/O skonfigurowanego wcześniej jako wyjście, może dojść do uszkodzenia portu! Na płycie EVB dostępne są także cztery wyświetlacze siedmiosegmentowe. Schemat podłączenia wyświetlaczy do złącza dwurzędowego JP11 przedstawia rysunek 5. Na początku pracy z mikrokontrolerem AVR, gdy nie dysponujemy jeszcze zasobem własnych bibliotek, warto wykorzystać najprostszą metodę wyświetlania wartości binarnych na ośmiu diodach LED. Na płycie EVB mamy do dyspozycji osiem diod LED połączonych ze złączem JP3 zgodnie z rysunkiem 6. Jeśli istnieje potrzeba analizy większej ilości danych, najwy- Programowanie AVR 2 z 11
Rysunek 1: Widok zestawu uruchomieniowego EVBavr05 [2] Rysunek 2: Widok przewodów połączeniowych do zestawu EVBavr05 Programowanie AVR 3 z 11
Rysunek 3: Schemat połączeń wyprowadzeń mikrokontrolera ze złączem JP18 zestawu uruchomieniowego EVBavr05 [2] godniej jest wykorzystać port RS-232C i dane wysyłać do terminala na komputerze PC. Aby było możliwe połączenie komputera PC z płytką EVB przez RS232C, potrzebny jest konwerter napięć. Jego schemat jest pokazany na rysunku 7. Może być także wykorzystany układ konwertujący USB(wirtualny port szeregowy) na TTL. Programowanie mikrokontrolera odbywa się w systemie (bez wyjmowania układu) poprzez złącze ISP JP12 (Rys. 8). Układ zasilania zestawu EVB jest przedstawiony na rysunku 9. Do zasilania zestawu można wykorzystać dowolny zasilacz wtyczkowy o prądzie maksymalnym większym niż 450 [ma] oraz napięciu wyjściowym 9-12 [V]. Po podłączeniu zasilacza, zestaw włączamy przełącznikiem SW1-Power (Rys. 9). Polaryzacja zasilacza jest bez znaczenia na wejściu zestawu znajduje się mostek prostowniczy (Rys. 9). 4 Przykładowe zadania Napisać program wyświetlający na linijce 8 diod LED stan licznika wciśnięć. Sterowanie dwoma przyciskami góra oraz dół. Programowanie AVR 4 z 11
Rysunek 4: Schemat połączeń przycisków SW0.. SW7 ze złączem JP14 [2] Rysunek 5: Schemat połączeń wyświetlaczy LED ze złączem JP11 [2] Programowanie AVR 5 z 11
Rysunek 6: Schemat połączeń diod LED ze złączem JP3 [2] Rysunek 7: Schemat połączeń konwertera napięć RS232C/TTL ze złączem JP5 [2] Programowanie AVR 6 z 11
Rysunek 8: Złącze programatora ISP [2] Rysunek 9: Schemat układu zasilania [2] Programowanie AVR 7 z 11
Napisać program realizujący funkcję STOPER z dwoma przyciskami sterującymi START / STOP oraz RESET. Program powinien odmierzać możliwie dokładnie upływające sekundy. Wynik prezentowany w postaci binarnej na diodach LED. Napisać program realizujący nawigację po MENU. Menu powinno posiadać 8 pozycji (tyle ile jest dostępnych diod LED). Sygnalizacja pozycji na diodach LED. Wybór pozycji skutkuje wyświetleniem kodu operacji na linijce diod LED. Napisać program do pomiaru czasu reakcji użytkownika. Na linijce 8 diod LED pojawia się w nieoczekiwanym momencie światło na jednej pozycji, użytkownik jak najszybciej musi je wyłączyć wciskając odpowiedni przycisk. Następnie program wyświetla na linijce LED zmierzony czas reakcji w formie binarnej. Wynik w milisekundach. Napisać program wyświetlający stan licznika wciśnięć na wyświetlaczach siedmiosegmentowych LED. Sterowanie dwoma przyciskami góra oraz dół. Napisać program realizujący funkcję STOPER. Program powinien odmierzać możliwie dokładnie upływające sekundy. Wynik prezentowany na czterech wyświetlaczach siedmiosegmentowych. 5 Zagadnienia do przygotowania Przed przystąpieniem do ćwiczenia student powinien zapoznać się z dokumentacją zestawu EVBavr05 [2], a w szczególności przeanalizować schematy ideowe wszystkich bloków funkcjonalnych. Dodatkowo należy przygotować w wersji elektronicznej dokumentację mikrokontrolera [1] oraz dokumentację zestawu [2]. 6 Oprogramowanie narzędziowe Oprogramowanie będzie pisane w języku C. Komplet oprogramowania narzędziowego jest dostępny w sieci Internet i jest bezpłatny. W przypadku systemu Windows składa się z pakietu WinAVR-20071221 lub nowszego oraz AVRStudio4.13 SP2 lub nowszego. Oba pakiety można wcześniej zainstalować na swoim komputerze przenośnym i wykorzystać go podczas ćwiczenia. Dla osób dysponujących szybkim komputerem istnieje alternatywa w postaci pakietu Atmel Studio 7 lub nowszego, dostępna pod adresem [3], jednak absolutnie nie jest to oprogramowanie niezbędne podczas zajęć laboratoryjnych, Programowanie AVR 8 z 11
wystarczy wersja 4.13. W przypadku systemu Linux, wykorzystywany jest pakiet Eclipse 3.8 lub nowszy z zainstalowanymi narzędziami dla AVR i do obsługi programatora ISPCableIII [4], instrukcja instalacji wymaganego pluginu do Eclipse jest dostępna pod adresem: http : //avr eclipse.sourcef orge.net/wiki/index.php/p lugin Download. 7 Wymagania BHP Warunkiem przystąpienia do ćwiczenia jest zapoznanie się z instrukcją stanowiskową BHP stosowaną w Laboratorium. Instrukcja ta powinna być przedstawiona studentom podczas pierwszych zajęć laboratoryjnych i dostępna do wglądu w Laboratorium. Tekst instrukcji stanowiskowej obowiązującej w Laboratorium WE48 znajduje się w pliku instrstan-lab48.pdf. 8 Wymogi odnośnie sprawozdania z realizacji ćwiczenia Sprawozdanie powinno zawierać: stronę tytułową (zgodnie z obowiązującym wzorem), datę wykonania ćwiczenia, zakres ćwiczenia, opis stanowiska laboratoryjnego, zastosowanych modułów, dokładny schemat połączeń, opis przebiegu ćwiczenia z wyszczególnieniem wykonywanych czynności, algorytm rozwiązania danego problemu, algorytm działania programu w formie schematu blokowego, z zachowaniem ogólnie przyjętych zasad tworzenia takich schematów, programy w C z komentarzami, oscylogramy ilustrujące poprawne działanie przygotowanych aplikacji, wyniki w formie tabel, oscylogramów, wykreślone charakterystyki, Programowanie AVR 9 z 11
szczegółową analizę wyników, podsumowanie, uwagi oraz wnioski. Na ocenę sprawozdania będą miały wpływ następujące elementy: zgodność treści z instrukcją, algorytm rozwiązania problemu, analiza wyników, wnioski i uwagi, terminowość i ogólna estetyka. Sprawozdanie powinno być wykonane i oddane na zakończenie ćwiczenia, najpóźniej na zajęciach następnych. Sprawozdania oddane później niż na następnych zajęciach będą oceniane w skali 2, 2.5, 3, bez względu na przyczyny opóźnienia. Przy oddawaniu sprawozdania należy zapisać wszystkie pliki i katalogi projektu do katalogu wskazanego przez prowadzącego zajęcia. Jeśli ocena ze sprawozdania będzie niedostateczna, można w terminie 7 dni przynieść wersję poprawioną, jednak ocena z wcześniejszej wersji również wchodzi do średniej końcowej. Programowanie AVR 10 z 11
Bibliografia [1] Dokumentacja mikrokontrolera ATmega16 : http : //www.atmel.com/images/doc2466.pdf [2] Dokumentacja zestawu EVBavr05 : http : //www.propox.com/download/docs/ev Bavr05 pl.pdf [3] Strona z opisem i programem Atmel Studio : http : //www.atmel.com/tools/atmelstudio.aspx [4] Dokumentacja programatora ISPcableIII : http : //www.propox.com/products/t 158.html 11