Programowanie
p/uimjjjjywyjjiy pusomM®
Co uważniejsi Czytelnicy zauważyli zapewne, że w części pierwszej listingi 1 i 2 są identyczne; Ci, którzy nie spostrzegli tego od razu, ale próbowali przeprowadzić na ich podstawie kompilację programu, zorientują się, że jest to niemożliwe.
Między moim komputerem a drukarnią wkradt się błąd, któiy należy jak najszybciej Sprostować. Na tej stronie przedstawiam poprawiony listing 1.
Dodatkowe pliki znajdujące się na stronie internetowej Elektroniki"dla Wszystkich są prawidłowe. Sposobu poprawienia błędu można także domyślić się na podstawie treści artykułu - gratuluję, jeśli udało Ci: się to zauważyć,
i Listing i Prawidłowa zawartość pliku make.bat
| @set PATH=C:\WinAVR\BIN;C : \WinAVR\UTILS\BIN; make.e
Listing 4 Podstawowy szablon pliku głównego
//////////////////////////////////////////////////////////////////////////////// // LEDMulti.c - plik główny programu obsługi multipleksowanego wyświetlacza LED // przeznaczenie: "Programowanie procesorów w jeżyku C (EdW)"
//
// Autor: Radosław Koppel Kompilator: WinAVR 20050214
////////////////////////////////////////////////////////////////////////////////
#incłude <avr\io.h>
int main(void)
Dziś będziemy starali się okiełznać dostępny na płytce testowej wyświetlacz LED. Za wyświetlacz zabierzemy się stopniowo. Nie protestuj, jeśli pierwsze z napisanych programów będą, na przykład, beznadziejnie marnować zasoby. Chcę. abyś przedstawione kody traktował jako dobrą ilustrację do wiedzy o C, którą chcę przekazać.
Ponieważ, jak już wspomniałem, do efektywnego pisania programów na mikrokontrolery w C konieczna jest znajomość procesora, zachęcam Cię do wyposażenia się w jakikolwiek opis jego rejestrów. Może być to dokumentacja dostępna na stronie firmy Atmel. Może być jakaś dobra książka. Nie jest konieczna literatura zajmująca się szczegółowo asemblerem tego procesora. Potrzebna jest natomiast wiedza o rejestrach wewnętrznych służących do obsługi takich elementów jak porty wejścia-wyjścia.
Zanim zaczniesz pisać kod programu, konieczne jest wykonanie kilku czynności, jakie przedstawiłem w części 1. Zerknij na przedstawiony tam rysunek 11. Ja nowy program nazwałem LED Mu! li. Zakładam, że wybierzesz taką samą nazwę i z takim założeniem będę prowadził dalszy opis.
Utwórz folder na nowy program. W moim przypadku był to C:\GCC-srcXKurs\I*EDmulri
Koniecznie skopiuj teraz do naszego folderu plik makefile.
Może okazać się, że najwygodniej będzie skopiować plik z poprzedniego programu. Zawsze możesz także sięgnąć do szablonu umieszczonego w folderze C:\WinAVR\satnples. Po lej czynności uruchom Programmers Notepada. Utwórz nowy projekt, wybierając z menu Fiie->New->Pro-ject. Plik projektu zapisz w utworzonym właśnie katalogu. Ja nadałem mu nazwę LEDMul-ti.pnproj - nie wpisuj rozszerzenia, zostanie ono nadane automatycznie.
Teraz utwórz plik główny naszego programu. Umożliwia to sekwencja Ftle->New->CZ C++. W tym przypadku możesz użyć także znajdującego się w pasku narzędzi przycisku tworzącego nieokreślony nowy plik tekstowy. Plik powinien zostać zapisany oczywiście w katalogu LEDMulti. Ja nadałem mu nazwę LEDMulti.c - tym razem podanie rozszerzenia jest konieczne.
Nasz program składa się z dwóch plików: makefile oraz LEDMulti.c. W celu wygodnego dostępu do nich, oba pliki dodajemy do projektu: W okienku Projects kliknij na nazwie LEDMulti i z rozwiniętego menu wybierz komendę Add Files.
W tej chwili pliki powinny być już dostępne w panelu naszego projektu. Przypominam, że powtarzam tutaj informacje, które przedstawia rysunek 11 (część pierwsza cyklu). Jeśli w którymś momencie będziesz miał problem, być może uznasz, że opisałem tutaj coś zbyt skrótowo - wróć do wspomnianej ilustracji.
Edytor wie już, jakie pliki wchodzą w skład naszego programu, pora poinformować o tym kompilator. W tym celu edytuj plik makefile. Ustawienia, jakie powinieneś tutaj wprowadzić, pokrywają się z ustawieniami wprowadzanymi przy okazji pierwszego ćwiczenia: nie zmienił się przecież typ procesora, zakładam, że kwarc także jest taki sam, plik wyjściowy w formacie IntelHEX bardzo nam pasuje, optymalizacja rozmiaru kodu nadal wydaje się dobrym rozwiązaniem, tak samo jak typ pliku przeznaczony dla emulatora. Różnica pojawi się w polu TARGET. Znajdź odpowiednią linię i wpisz tutaj nazwę pliku głównego. Będzie to najprawdopodobniej LEDMulti (bez jakichkolwiek rozszerzeń, brak spacji na końcu!).
Znakomicie! Jesteśmy gotowi do napisania kolejnego programu. Przy odrobinie wprawy wszystkie konieczne czynności wykonasz zapewne w czasie krótszym, niż mogłoby się wydawać z długości opisu.
Skoro tworzymy od początku nowy program, chciałbym, przy okazji, zaproponować Ci
38 Czerwiec 2005 Elektronika dla Wszystkich