Programowanie mikroprocesorów ( mikrokontrolerów )

Jak zaprogramować mikroprocesor mikrokontroler

Poniższy opis dotyczy środowiska programistycznego WinAVR.


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:

  • AVR Insight - jest to debuger którego nie miałem jeszcze okazji używać gdyż z debugowaniem radzę sobie w inny sposób
  • Programmers Notepad - Programistyczny edytor tekstu z podświetlaną składnią zintegrowany z kompilatorem i programatorem AVRDude
  • Mfile - narzędzie do konfigurowania podstawowych parametrów kompilacji

Poniżej przedstawiono widok okna programu do konfiguracji parametrów kompilacji Mfile

Programowanie mikrokontrolerów mikroprocesorów

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:
 

  1. Pierwszym parametrem jest określenie nazwy pliku wejściowego dla kompilatora (pliku z programem który piszemy. W okienko jakie nam wyskoczy wpisujemy tylko nazwę pliku. Rozszeżenie domyślnie jest dodawane jako ".c" należy pamiętać aby nasz plik z programem nazwany był taką nazwą jak wpisaliśmy w tutaj oraz nalezy mu nadać rozszeżenie .c aby kompilator wiedział że to ten plik ma wziać do kompilacji.

    Programowanie mikrokontrolerów mikroprocesorów 
  2. Kolejnym krokiem jest wybranie mikrokontrolera mikroprocesora którego będziemy programować z rozwijanej listy

    Programowanie mikrokontrolerów mikroprocesorów 
  3. W kolejnym kroku wybieramy format pliku wynikowego. Ze względu na AVRDude którym będziemy programować mikroprocesor powinniśmy wybrać format iHEX

    Programowanie mikrokontrolerów mikroprocesorów 
  4. Kolejnym krokiem jest wybór optymalizacji kodu wynikowego. Domyślną opcją jest opcja s.
     Programowanie mikrokontrolerów mikroprocesorów
  5. Kolejnym krokiem jest wybór programatora jakiego używamy do programowania, jednak możliwości programowania AVRDude są nieco większe niż zawartosć tej listy. Nie znajdziemy na niej USBasp w dalszym punkcie podam jak skonfigurować oprogramowanie do proacy z tym programatorem.

    Programowanie mikrokontrolerów mikroprocesorów 
  6. Ostatnim krokiem jest wybór portu do którego mamy podpięty nasz programator który wybieramy z listy.

    Programowanie mikrokontrolerów mikroprocesorów 
  7. Ostatnią funkcją jest funkcja edycji tekstowej manualnie. Po zaznaczeniu tej opcji odblokowana zostaje edycja pliku tekstowego widzianego w tle.

    Programowanie mikrokontrolerów mikroprocesorów 
  8. Dzięki odblokowaniu edycji pliku makefile mamy możliwość zmiany nazwy programatora jak i innych parametrów na dowolne przez nas wpisane. JEdnak musimy zwrócić szczególną uwagę żeby nasze wpisane wartosci mieściły się w zakresie prawidłowych parametrów danej funkcji. W tym miejscu właśnie mozemy wpisać nasz programator USBasp którego nie było na rozwijanej liście wcześniej.

    Programowanie mikrokontrolerów mikroprocesorów 
  9. W pliku makefile możemy również wpisać wartosć częstotliwości taktującej nasz mikrokontroler mikroprocesor co nie jest możliwe z roziwjanej listy. Parametr ten możemy również zmienić odpowiednią komendą w czasie pisania właściwego programu jednak będziemy wtedy dostawać ostrzeżenie z debugera kompilatora tak więc bardziej prawidłowym sposobem jest konfiguracja częstotliwości taktującej na poziomie tego pliku konfiguracyjnego.

    Programowanie mikrokontrolerów mikroprocesorów 

2. Kompilacja programu w Programmers Notepad

Poniż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.

Programowanie mikrokontrolerów mikroprocesorów

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 realizujący naprzemienne miganie diodami na porcie mikrokontrolera
  1.  
  2. /*
  3.  
  4. Program migania diodą
  5.  
  6.  
  7. */
  8.  
  9. #include <avr/io.h>
  10. #include <util/delay.h>
  11.  
  12. #define F_CPU 8000000UL
  13. #define cbi(sfr,bit) (_SFR_BYTE(sfr) &= ~_BV(bit))
  14. #define sbi(sfr,bit) (_SFR_BYTE(sfr) |= _BV(bit)))
  15.  
  16. int main(void)
  17. {
  18.  
  19. DDRB=0xff;                              // ustalenie kierunku portu (wyjście)
  20. PORTB=0xAA;                     // wystawienie wartości AAh na port czyli 10101010b
  21.  
  22. while(1)
  23.     {
  24.        
  25.         PORTB=0x55;             // wystawienie wartości 55h na port  czyli 01010101b
  26.         _delay_ms(500);         // opóźnienie czasowe 500ms
  27.         PORTB=0xAA;                     // wystawienie wartości AAh na port czyli 10101010b
  28.         _delay_ms(500);         // opóźnienie czasowe 500ms
  29.        
  30.         }
  31.  
  32. }
  33.  
  34.  

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 programowanego

Po 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)

rezonator

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 programowania

Po 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




 
Wszelkie prawa zastrzeżone! Kopiowanie, powielanie i wykorzystywanie zdjęć, treści oraz jej fragmentów bez zgody autora zabronione.
© mikroprocesory.info.pl@gmail.com 2013.