cz7

cz7



Programowanie

wyjj/yjjjuwuifla jj/uaaau/uw

w ] wM©    «■

ts(„HeTlo v


Rys. 37 Zmiany w pliku makefiłe

tern szeregowym. Zróbmy to teraz. Zgodnie z tym, czego nauczyliśmy się do tej pory, funkcje związane z transmisją danych umieścimy w oddzielnym module. Utwórz pliki rs.c oraz rs.h. Pamiętaj, aby do pliku makefiłe dodać nowy plik kodu źródłowego. Przypominam o tym na rysunku 38. Kod, jaki należy wpisać w plik rs.c, znajduje się na listingu 53. Nie ma w nim nic niezwykłego - w praktyce przykłady takie można znaleźć w dokumentacji technicznej procesorów AVR.

Listing 54 pokazuje kod, który powinien znaleźć się w pliku nagłówkowym. Deklarujemy tutaj funkcje, które zdefiniowane zostały w pliku źródłowym. Od tej chwili będziemy mogli swobodnie używać ich wszędzie tam gdzie dołączymy plik rs.h.

Dodatkowo w naszym nagłówku definu-jemy dwa makra pomocne przy obliczaniu danej wpisywanej do rejestru UBRR, która wyznacza prędktość transmisji. Makro pomocnicze RS_MAKE_UBRR jest przeniesieniem na C opisanego w dokumentacji sposobu obliczania potrzebnej wartości. Stała F CPU deklarowana jest z poziomu pliku makefiłe.


Dziś zajmiemy się czymś, od czego zaczyna się większość książek o C dla „dużych komputerów”. Dlaczego dopiero teraz? Wspominałem już o tym i napiszę raz jeszcze: mikrokontrolery rządzą się innymi prawami niż stacje robocze. Tam gdzie w stacji roboczej występuje BIOS oraz System Operacyjny, sprawiające razem, że wypisanie informacji na ekranie jest najprostszą możliwą rzeczą tam w mikrokontrolerze... nie ma nic. Musieliśmy po kolei nauczyć się podstawowych operacji na rejestrach, dopiero później wspinać się coraz wyżej. Szczęśliwie rejestry mamy już za sobą. Dziś na celu mamy dotarcie do funkcji primf oraz jej bliskich znajomych. Dowiemy się, jak realizowane są operacje strumieniowe - tak naturalne w dużych maszynach. Nie bez znaczenia jest fakt powstania nowej płytki. Funkcja printf, bardzo uniwersalna i o wielkich możliwościach, zajmuje stosunkowo dużo pamięci programu.

„Hello world”

Stwórzmy folder na nowy program. Skopiuj do niego plik makefiłe. Możesz wziąć go z poprzednich programów albo też bezpośrednio z folderu C:' Wi,nA VR\sample. W Program-mers Notepadzie tworzymy nowy projekt. Możesz nazwać go na przykład hettoworld.

Listing 53-plik rs. #i nclude <avr

// Oczekiwanie aż bufor nadajnik whi1e(l (1«udreo & ucsroa)) {(

return 0;

// oczekiwanie na pojawienie s whiłeC!(l«Rxco 9t ucsroa)) {}

f This will define a symbol, F_CPU,

t ayMBUSifially to create a 32-bit walue i =_cpu -ooooooiD

# Outplit format. Ccan be srec, ihex, binary) FORMAT - ihex

filo mmc Cw-ii-hnin- extension).

RGET ^FelloworlcO

UsT^t- smirje flles here. (C dependencies ar

Do projektu dodajemy plik makefiłe i zaczynamy jego edycję. Niezbędne zmiany zaznaczone są na rysunku 37.

Teraz zgodnie z wprowadzonymi zmianami tworzymy główny plik programu o nazwie main.c. Dodajemy go do projektu w oknie Programmers Notcpada. W pliku tym wpisujemy kod z listingu 52. Skompilowanie programu przyniesie dwie niespodzianki:

1.    Program zajmuje zaskakująco dużo miejsca w pamięci (u mnie ponad lkB!).

2.    Program w zasadzie nic nie robi, a raczej: nie daje żadnych zewnętrznych oznak działania.

Pierwszy problem zaskoczył mnie kiedyś, prawdopodobnie tak samo jak mógł zaskoczyć teraz większość Czytelników. Jego rozwiązanie wymaga nieco „gimnastyki”. Ze względu na objętość materiału poczekamy z tym do części 8. Teraz przyjrzyjmy się problemowi z nicnierobieniem naszego programu.

Pytanie podstawowe brzmi: gdzie procesor ma wysłać podany mu napis „Hello world! "? W typowym programie komputerowym będzie to zwykle konsola... Nasza płytka posiada wyświetlacz LCD, jednak kompilator nic o tym nie wie. Posiada także port szeregowy. Wiele kompilatorów właśnie port szeregowy uznałoby za domyślne wyjście dla naszego napisu. W AYR-GCC zostało to rozwiązane inaczej. Domyślnym miejscem, gdzie dane będą wysyłane, będzie pierwsze otwarte urządzenie. Zanim przejdziesz dalej, zajrzyj do ramki „ABC... C - Jak działają strumienie”.

W ramach kursu nie mieliśmy jeszcze okazji zająć się por-

e automatically generated.)


Zwracam Twoją uwagę na fakt, jak ważne jest otoczenie nawiasami obliczeń makra RSMAKEJJBRR. Wstaw w wyobraźni zawarty w nim tekst — tak jak robi to preprocesor - w miejscu wystąpienia jego wywołania. Zauważ, co stałoby się, gdyby nawiasów nie było. Szczególnie widoczne jest to w miejscu, gdzie obliczoną wartość przesuwamy.


Elektronika dla Wszystkich Luty2006 39


Wyszukiwarka

Podobne podstrony:
cz6 ProgramowanieWuj/yjjJUY/yjjly jj/uca^jj^uww dmqq©    c* harddef.h makra.h am, gd
Gerrit Rietveld, willa pani Schroeder, Utrecht Ęf Tl IjjB jj ■ ■■ J f *1 w iii ■ r 1T WM H 1
v( I / I ł““ 1 iiik VI jj_ lr“ wM mi Lj 1 . -i—--- IL
cz7 Programowanie kształceń. Wymaga od nas jedynie stworzenia funkcji wypisującej oraz odczytującej
cz7 Programowanie Programowanie tiriśigned; jnt typ zmiennej wypisywana jest, dziesiętne, liczba że
cz7 Programowanie Listing 57— wykorzystanie funkcji printf int main(void) l ■int a - 1234; int b
dziewczynka z zapałkami 1 N ! n jj
Program ramowy A. Wykład Mechanika I Wstęp: Organizacja zajęć i literatura przedmiotu. Rys
Instrukcja do ćwiczenia - Programowa analiza przepływu danych w sieci teleinformatycznej 2010-11-23
Instrukcja do ćwiczenia - Programowa analiza przepływu danych w sieci teleinformatycznej 2010-11-23
jJ    — AŁt/vi*fiA4^ C-ts^KA^jsi fL^U^j /<*£/-■
IMG772 (2) wm%tś *Scmmanum „UMad Nerwowy 1    * *na*ów Hi* rv* c««f łu*f*ó*t a I
str3 kąty 180" - y 2 180° +« 2 boki WW -=Z - Z WM= Tk+ V WM =Ts + Xs-Td Zgodność tych sześci
62440 JJ D&M djinn03 39 CO E>y$IE; NIE ZDARZYŁO POLITYCZNE ZMIANY POMIĘDZY DWOREM SUŁTANA A NIEMI
strona15 (6) Za^Layrua <jj> aa/YnOd&ć£4i£<go pu>.o -37 I . t/api&LC rÓZNiCMiće &
DSCN0453 (Large) JJ. Sirnm-anie silników- krokowych 71 Rys. 5.8. Ilustracja przepływu prądu przez uz
Zdj?cie140 (2) tamiast m aaaodzi* odniesienia pnyayfl

więcej podobnych podstron