Programowanie mikrokontrolerów
programowanie mikrokontrolera w WinAVRPoniższy opis dotyczy środowiska programistycznego WinAVR.Spis treści 1. Konfiguracja kompilatora (opis pliku Mfile)W dziale tym przedstawię środowisko programistyczne WinAVR, konfiguracje oraz sposób programowania mikrokontrolerów mikroprocesorów z wykorzystaniem programatora USBasp. Środowisko programistyczne WinAVR składa się z trzech głównych programów:
Poniżej przedstawiono widok okna programu do konfiguracji parametrów kompilacji Mfile Przed przystąpieniem do pisania programu w Programmers notepad musimy ustalić wszystkie parametry niezbęde do kompilacji naszego programu. PArametry konfiguracyjne w przypadku kompilatora WinAVR zapisywane są do pliku makefie który powinien znajdować się w tym samym folderze co pisany program. Aby poprawnie skonfigurować parametry kompilacji możemy wykorzystać system podpowiedzi jakie udostępnia nam program Mfile. Poniżej przedstawiono przykładową konfiguracje pliku konfiguracyjnego wraz z opisem podstawowych parametrów w nim zawartych:
2. Kompilacja programu w Programmers NotepadPoniżej przedstawiony został edytor Programmers notepad służący do edycji naszego programu mikrokontrolera mikroprocesora. Program ten jest darmowym środowiskiem programistycznym posiadających kilka podstawowych udogodnień jest mało rozbudowanym narzędzień jednak posiada wszystkie podstawowe funkcje niezbędne do napisania programu na mikrokontroler mikroporcesor. Jeśli w narzędziu Mfile wszystko zostało prawidłowo skonfigurowane a nasz plik wynikowy o nazwie makefile znajduje się folderze z naszym pisanym programem o rozszeżeniu .c jesteśmy gotowi do napisania programu dla mikrokontrolera mikroprocesora. Napiszmy więc prosty program migający diodą, skompilujmy go i wgrajmy do mikrokontrolera mikroprocesora. Program będzie wyglądał następująco. /* Program migania diodą */ #include <avr/io.h> #include <util/delay.h> #define F_CPU 8000000UL #define cbi(sfr,bit) (_SFR_BYTE(sfr) &= ~_BV(bit)) #define sbi(sfr,bit) (_SFR_BYTE(sfr) |= _BV(bit))) int main(void) { DDRB=0xff; // ustalenie kierunku portu (wyjście) PORTB=0xAA; // wystawienie wartości AAh na port czyli 10101010b while(1) { PORTB=0x55; // wystawienie wartości 55h na port czyli 01010101b _delay_ms(500); // opóźnienie czasowe 500ms PORTB=0xAA; // wystawienie wartości AAh na port czyli 10101010b _delay_ms(500); // opóźnienie czasowe 500ms } } Gdy mamy już napisany nasz program w Notepad Programmers widzimy że wszystko co piszemy podświetlane jest na odpowiedni kolor w zależności od funkcji słowa kluczowego które wpisaliśmy tekst wybarwi nam się na odpowiedni kolor zgodnie z kategorią do której należy. Po napisaniu całego programu możemy przystąpić do procesu kompilacji. W tym celu wybieramy z menu kontekstowego kolejno Tools-> [WinAVR] Make All. Po kliknięciu którego nastąpi proces kompilacji naszego programu. W przypadku udanego procesu kompilacji uzyskami następujący komunikat w oknie wyjściowym programu Programmers Notepad jak na rysunku poniżej. W przypdaku błedów w programie w oknie tym pojawią się informacje jakie zwróci kompilator o ostrzeżeniach oraz błędach w programie prze znas popełnionych. Możemy zauważyć że w procesie kompilacji kompilator pobiera typ mikroprocesora jaki podaliśmy w pliku konfiguracji kompilacji Makefile. Dzieki temu kompilator potrafi określić ilość pamięci jaką mamy do dyspozycji w programowanych modelu na podstawie podanej przez nas nazwy oraz jest w stanie poinformować nas ile pamięci zajmie nasz program i ile zostanie jescze wolnych zasobów do późniejszego wykorzystania w przypadku rozbudowy naszego programu. 3. Podłączenie programatora do układu programowanegoPo procesie kompilacji przed wciśnięciem przycisku programuj należy podłączyć programator USBasp do portu USB komputera oraz wyjścia programatora pod odpowiednie piny w programowanym układzie. Standardowy programator ISP którym jest USBasp wyposażony jest w dziesięciopinowe gniazdo programowania przedstawione poniżej: Wtyczka programatora występuje również w wersji rzadziej spotykanej sześciopinowej jednak bardziej popularną wersją jest wersja dziesięciopinowa. We wtyczce znajdują się 4 głóne sygnały interfejsu ISP są to MOSI, RST, MISO i SCK. Aby zaprogramować mikrokontroler mikroprocesor musimy zapewnić odpowiednie połączenie programatora z mikroprocesorem mikrokontrolerem ktróre powinno być określone w dokumentacji mikroprocesora mikrokontrolera. Przykładowe podłaczenie programatora do mikroprocesora mikrokontrolera ATmega8 przedstawia poniższy rysunek 4. Konfiguracja Fusebit (przygotowanie układu do pracy)Po podłączeniu programatora do układu mikroprocesorowego możemy spotkać się z brakiem komunikacji pomiędzy nimi. Fakt ten wynikać może ze złej konfiguracji prędkości transmisji danych pomiędzy programatorem a układem mikroprocesorowym lun ze złego ustawienia fusebitów. Aby programator prawidłowo współpracował z układami taktowanymi zegarem poniżej 1,5Mhz należy w programatorze USBasp zamknąć zwore SlowCLK odpowiedzialną za obniżenie prędkości transmisji danych programujących mikrokontroler. Spotkamy się z takim problemem przy próbie zaprogramowania mikrokontrolera ATmega8 taktowanego rezonatorem wewnętrznym którego wartość wynosi 1Mhz. W przypadku gdy układ zaprojektowany jest z zewnętrznym rezonatorem kwarcowym należy poprawnie ustawić Fusebity w mikrokontrolerze aby przystosować go do pracy z zewnętrznym rezonatorem. opis fuzebitów znajdziemy w dziale Fusebity. 5. Proces programowaniaPo odpowiednim podłączeniu mikroprocesora mikrokontrolera do programatora możemy przystąpic do programowania naszym napisanym programem. JEśli wykonaliśmy prawidłowo wszystkie wcześniejsze kroki tzn. Konfiguracje makefile, kompilacje oraz podłaczenie mikroprocesora mikrokontrolera po wybraniu opcji programuj jak na poniższym rysunku powinniśmy uzyskać udany proces programowania mikroprocesora mikrokontrolera. Poniższy rysunek przedstawia informacje o udanym procesie weryfikacji zaprogramowanego mikroprocesora mikrokontrolera. by Pioter 05-Feb-2020 16:48:28 CET by Pioter
|
© mikroprocesory.info.pl@gmail.com 2013.