TECHNIKA
NAGŁOŚNIENIOWA
r
diod - Zaświecone zielone świadczą o tym, że przekaźnik jest załączony, inny stan - przekaźnik wyłączony.
Może się zdarzyć, że zegar będzie się spóźniał lub spieszył o kilka sekund na dobę. Można to skorygować trymerem Cl. Ponieważ odczyt godziny następuje co lOs, należy trymerem zmienić czas dopiero po upływie ok. 24 godzin.
Zasilanie podłączamy do gniazda A2. Powinno mieć ono wartość 6-12V, z tym że im mniejsza jego wartość, tym mniej będzie się grzał stabilizator U3. Przy napięciu zasilania 10-12V stabilizator grzeje dość mocno, przydałby mu się więc mały radiatorek. Dzieje się tak, gdyż przekaźnik został podłączony za stabilizatorem i po włączeniu pobiera on ok. 80-1 OOmA prądu. Podłączyłem ten przekaźnik w ten sposób, ponieważ chciałem, aby układ (a raczej przekaźnik) nie determinował wartości zasilania. Ponieważ zwykle centralki są zasilane z 12V, można było zastosować przekaźnik 12V i stabilizator nie musiałby
mieć malutkiego radiatorka. Jednak zdarzają się wersje na 6V, a w przypadku oryginalnych rozwiązać także inne wartości zasilania, więc postanowiłem go podłączyć właśnie w ten sposób. Zawsze przecież można dodać niewielki radiatorek. Nie zwiększy to znacząco kosztów, a polepszy właściwości chłodzące.
Oczywiście na grzanie się stabilizatora wpływa jasność wyświetlacza, którą ustawiamy rezystorami R1-R4, R8, R9.
Płytki drukowane i program można ściągnąć z Elportalu EdW.
Rafał Kuchta
Listing 159 Plik Bootlib.h
4 i frdef BOCTLIB_H_II>CLUDED Hfdefine BOOTLIB_H_INC L UD ED
vdd Do_Srn(uint3_t SPMval);
Int Do_wricel'ageCuir.t:6_t klastiAdres);
#endif //BOOTl IB_H_INCLliDED
mmmmm
PEŁNA OFERTA WYKONANIA
■ OBWODY JEDNOWARSTWOWE
■ OBWODY DWUWARSTWOWE Z METALIZACJA
WYKONUJEMY PŁYTKI W ILOŚCIACH MODELOWYCH oraz PRODUKCYJNYCH
KRÓTKIE TERMINY !!!
DOKŁADNE INFORMACJE:
- w stoisku: “ZWROTNICE GŁOŚNIKOWE” szczęka nr 12
- w zakładzie ELMAX, 05-091 ZĄBKI, ul.Bema 8 t*17fax (0-22) 781-63-95
- c-mail: clmaxsc@ikp.com.pl
Ciąg dalszy ze sirony 44.
Naszym zadaniem jest zmiana typu pliku .s z „Assembler ' na ,,A VR Assembler Uprzyjemni to pracę przez właściwe kolorowanie składni.
Utwórz teraz plik Bootlib.S i dodaj go do projektu. Do pliku makefile wprowadzamy go zgodnie z opisem w ramce o pełnym asemblerze.
Początek kodu z pliku Bootlib.S przedstawia listing 157. Widzimy tutaj w praktyce, jak wygląda dołączenie plików nagłówkowych, stosowanie dyrektywy tfdefine oraz samo tworzenie funkcji. Zwracam uwagę na czwartą linię, która umożliwia nam dostęp do bufora tworzonego w pliku bootloader.c. Z punktu widzenia kompilatora zmienna ta będzie liczbą określającą położenie bufora w pamięci. Praktyczny dostęp do takiej zmiennej został zaznaczony na listingu 158. Na listingu tym pozostawiłem jedynie ciekawe fragmenty z punktu widzenia naszego kompilatora. Zwróć uwagę na sposób zwracania wartości przez funkcję oraz odzyskiwanie rejestrów, które tego wymagają. Część wykropkowana to praktycznie przeniesienie kodu z podręcznika ATmegal62. Jedyny
dodatek, który został wprowadzony, to dyrektywy #if-#endif, które dołączają fragmenty kodu zależnie od deklaracji:
BOOTLIBAUTOERASE - kasowanie strony przed zapisem;
BOOTLIBAUTOCHECK. - sprawdzenie poprawności zapisu.
Na koniec pozostaje nam jedynie napisanie pliku Bootllb.h widocznego na listingu 159 oraz jego dołączenie do pliku głównego. Od tego momentu nasze asemblerowe funkcje wywołujemy identycznie jak funkcje pisane w C.
Po skompilowaniu programu z opcjami odpowiadającymi wersji napisanej w C (włączone kasowanie pamięci, wyłączone sprawdzanie zapisu), okaże się, że udało nam się zaoszczędzić jedynie 6B. Jeśli zajrzysz do pliku <avr/booi. h >, zauważysz, że praktycznie wszystkie widoczne tutaj funkcje zostały napisane w asemblerze. Jednak teraz, gdy poznaliśmy nową możliwość
WinAYR, nic nie stoi na przeszkodzie dalszej optymalizacji. Można się spodziewać, że sporą oszczędność uzyskalibyśmy, gdyby cały kod został umiejętnie napisany w asemblerze... do lego jednak służą inne, w zakresie pisania kodów asemblerowych wygodniejsze, narzędzia.
Radosław koppeł
Płytka do montażu elementów PLCC16-PLCC68
0IP/PLCC1 . . . ,
Elektronika dla Wszystkich Październik 2006 47