Politechnika Białostocka Wydział Elektryczny Katedra Automatyki i Elektroniki Kod przedmiotu: TS1C 622 388 Instrukcja do ćwiczeń laboratoryjnych z przedmiotu: Elektronika samochodowa Temat: Programowanie mikrokontrolerów AVR serii Automotive Opracował: dr inż. Wojciech Wojtkowski Politechnika Białostocka 2014
Mikrokontrolery ATmega16M1, 32M1, 64M1 Automotive Nowe 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 wewnętrznym taktowaniem do 64 MHz. Są to podobnie jak w serii standardowej mikrokontrolery 8-bitowe o architekturze RISC. Dodatkowo dostępne jest sprzętowe wspomaganie sterowania silników bezszczotkowych, ostatnio 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++. Całkowicie odmienna jest natomiast obsługa nowej serii UC3 32 bitowych mikrokontrolerów AVR. Cel i zakres ćwiczenia Celem ćwiczenia jest zapoznanie z podstawami programowania mikrokontrolerów AVR serii Automotive w języku C. 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 uruchomieniowe (podłączyć zasilanie, podłączyć programator do płytki i do komputera PC poprzez złącze USB, zrealizować połączenia na płycie zestawu uruchomieniowego zgodnie z realizowanym zadaniem), a następnie napisać program w języku C realizujący konkretne zadanie. Następnie należy zaprogramować mikrokontroler i przetestować działającą aplikację lub przeprowadzić uruchomienie programu i usunięcie błędów programowych. Do rozwiązania będą różne zadania o rosnącym, wraz z czasem trwania ćwiczenia, stopniu trudności, np.: konfiguracja portów I/O mikrokontrolera AVR do różnych Programowanie AVR Strona 2
celów, 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 przerwania zegarowe, 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 w projektach mikrokontrolerów AVR będą wykorzystane 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ęć. Zakres ćwiczenia jest realizowany w ciągu 6 godzin lekcyjnych (trzy spotkania po 2 godziny). Zestaw uruchomieniowy W trakcie poznawania podstaw programowania mikrokontrolerów AVR studenci korzystają z zestawów uruchomieniowych EVBavr05 wyposażonych w mikrokontroler AVR ATmega16. Widok zestawu uruchomieniowego EVBavr05 jest przedstawiony na rysunku 1. Rys. 1. Widok zestawu uruchomieniowego EVBavr05 [1] Połączenia na płycie EVB wykonujemy specjalnymi kabelkami do złącz typu Goldpin. Wyprowadzenia mikrokontrolera umieszczonego w podstawce DIP40 są połączone z odpowiednimi pinami złącza JP18 na płytce zgodnie z rys. 2. Płyta główna umożliwia testowanie wielu różnych aplikacji z wykorzystaniem szeregu układów peryferyjnych. Studenci mają dostęp do wszystkich końcówek Programowanie AVR Strona 3
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. Rys. 2. Schemat połączeń wyprowadzeń mikrokontrolera ze złączem JP18 zestawu uruchomieniowego EVBavr05 [1] Schemat podłączenia przycisków jest przedstawiony na rysunku 3. Do dyspozycji mamy przyciski SW0, SW1, SW2, SW3, SW4, SW5, SW6 oraz SW7 połączone z dwurzędowym złączem Goldpin JP14 (Rys. 3). 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 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 4. Na początku poznawania mikrokontrolera AVR, gdy nie dysponujemy jeszcze zasobem własnych bibliotek do różnych celów, 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 Programowanie AVR Strona 4
zgodnie z rysunkiem 5. Jeśli istnieje potrzeba analizy większej ilości danych, najwygodniej 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, potrzebny jest konwerter napięć. Jego schemat jest pokazany na rysunku 6. Rys. 3. Schemat połączeń przycisków SW0.. SW7 ze złączem JP14 [1] Rys. 4. Schemat połączeń wyświetlaczy LED ze złączem JP11 [1] Programowanie mikrokontrolera odbywa się w systemie (bez wyjmowania układu) poprzez złącze ISP JP12 (Rys. 7). Programowanie AVR Strona 5
Rys. 5. Schemat połączeń diod LED ze złączem JP3 [1], Rys. 6. Schemat połączeń konwertera napięć RS232C/TTL ze złączem JP5 [1] Układ zasilania zestawu EVB jest przedstawiony na rysunku 8. Do zasilania zestawu można wykorzystać dowolny zasilacz wtyczkowy o prądzie minimalnym 500 [ma] oraz napięciu wyjściowym 9-12 [V]. Po podłączeniu zasilacza, zestaw włączamy przełącznikiem SW1-Power (Rys. 8). Polaryzacja zasilacza jest bez znaczenia na wejściu zestawu znajduje się mostek prostowniczy (Rys. 8). Programowanie AVR Strona 6
Rys. 7. Złącze programatora ISP [1] Rys. 8. Schemat układu zasilania [1] Przykładowe zadania Napisać program wyświetlający na linijce 8 diod LED stan licznika wciśnięć. Sterowanie dwoma przyciskami góra oraz dół. Napisać program realizujący funkcję STOPER z przyciskami sterującymi RESET oraz START. 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 Programowanie AVR Strona 7
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 z przyciskami sterującymi RESET oraz START. Program powinien odmierzać możliwie dokładnie upływające sekundy. Wynik prezentowany na czterech wyświetlaczach siedmiosegmentowych. Zagadnienia do przygotowania Przed przystąpieniem do realizacji ćwiczenia należy zapoznać się z dokumentacją zestawu EVBavr05 [1] oraz powtórzyć materiały wykładowe dotyczące programowania mikrokontrolerów AVR Automotive. Dodatkowo należy przygotować w wersji elektronicznej dokumentację mikrokontrolera [2] oraz dokumentację zestawu EVB [1]. 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.13SP2. 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 6.1 lub nowszego, dostępna pod adresem [4], jednak absolutnie nie jest to oprogramowanie niezbędne, wystarczy wersja 4.13. W przypadku systemu Linux, wykorzystywany jest pakiet Eclipse z zainstalowanymi narzędziami do pisania oprogramowania dla AVR i do obsługi programatora ISPCableIII [5]. Wymagania BHP Warunkiem przystąpienia do praktycznej realizacji ćwiczenia jest zapoznanie się z obowiązującą w laboratorium instrukcją BHP oraz przestrzeganie zasad w niej Programowanie AVR Strona 8
zawartych. Konieczne jest także zapoznanie z ogólnymi zasadami pracy przy stanowisku komputerowym. Wymogi odnośnie sprawozdania z realizacji ćwiczenia Sprawozdanie powinno zawierać: stronę tytułową (zgodnie z obowiązującym wzorem), 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, programy w C z komentarzami, oscylogramy ilustrujące poprawne działanie przygotowanych aplikacji, podsumowanie, uwagi oraz wnioski. Na ocenę sprawozdania będą miały wpływ następujące elementy: zgodność zawartości z instrukcją, algorytm rozwiązania problemu, 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 niżej. Jeśli ćwiczenie laboratoryjne jest realizowane podczas 2 lub 3 spotkań, sprawozdanie należy sporządzić z każdego spotkania osobno, tytułując: Temat ćwiczenia, część 1, Temat ćwiczenia, część 2, itd.. Programowanie AVR Strona 9
Literatura 1. Dokumentacja zestawu EVBavr05 dostępna na stronie producenta: http://www.propox.com/download/docs/evbavr05_pl.pdf 2. Dokumentacja mikrokontrolera ATmega16 dostępna na stronie producenta: http://www.atmel.com/images/doc2466.pdf 3. Materiały wykładowe z przedmiotu Elektronika samochodowa 4. Strona dotycząca oprogramowania Atmel Studio: http://www.atmel.com/tools/atmelstudio.aspx 5. Dokumentacja programatora ISP CableIII: http://www.propox.com/products/t_158.html Programowanie AVR Strona 10