AVR-GCC - port szeregowy

Większość kontrolerów AVR posiada wbudowany układ pozwalający na przesyłanie informacji w postaci szeregowej za pomocą linii: TXD - wyjście szeregowe i RXD - wejście szeregowe. Transmisja może się odbywać w trybie full-duplex, gdyż układ ten posiada dwa niezależne rejestry transmisyjne. Układ posiada także własny układ taktujący, co zwalnia liczniki-czasomierze z generowania tego sygnału.

AVR-GCC - kompilacja prostych programów

Proste programy tzn. takie, które składają się tylko z jednego pliku źródłowego można kompilować bez użycia programu make. Zakładając, że wybraliśmy mikrokontroler AT90S2313 a program źródłowy znajduje się w pliku o nazwie program.c. Wydajemy polecenie:\r\n

\r\navr-gcc -mmcu=at90s2313 program.c\r\n

\r\npowoduje ono skompilowanie ww. programu na wybrany typ mikrokontrolera - tu: AT90S2313 i utworzenie pliku wynikowego a.out. Należy zaznaczyć, że jest to najprostsze z możliwych wywołanie kompilatora - program wynikowy nie jest optymalizowany itp.

AVR-GCC - wstęp

Kilka lat temu firma Atmel wprowadziła nową rodzinę 8 bitowych mikrokontrolerów zbudowanych w architekturze RISC (o zredukowanej liście rozkazów), z których większość wykonuje się w pojedynczym takcie zegara, posiadające bardzo rozbudowane peryferia i łatwo programowalne w systemie docelowym (pięć przewodów łącznie z zasilaniem). Wydawać by się mogło, że nowa rodzina mikrokontrolerów z zupełnie nową niekompatybilną z innymi rodzinami listą rozkazów nie zostanie dobrze przyjęta na rynku.

HP Compaq nx6110 i karta Mini PCI Intel 2200BG

HP Compaq nx6110 to solidnie wykonany laptop, który jednak w najtańszych wersjach nie został wyposażony w kartę WiFi. Na szczęście jest tam łatwo dostępne od spodu obudowy pod klapką złącze Mini PCI wraz z niezbędnymi przewodami do anten jak i samymi antenami. Wydawało by się, że wystarczy zakupić dowolną kartę WiFi Mini PCI i włożyć ją do laptopa... otóż producent laptopa utrudnił nam życie... :( w BIOSie zapisał bowiem, które (jakiego producenta) karty będą mogły pracować z laptopem.

AVR-GCC - kompilator

Na kompilator AVR-GCC składa się wiele programów, są to:

AVR-GCC - komparator analogowy

Komparator analogowy porównuje napięcia na wejściach AIN0 i AIN1. W przypadku gdy napięcie na AIN0 jest wyższe od AIN1 ustawiany jest bit ACO w rejestrze ACSR. Wyjście komparatora może zostać wykorzystane do wyzwalania przechwytywania wartości licznika/czasomierza 1. Oprócz tego, komparator analogowy może wygenerować przerwanie. Można wybrać czy przerwanie ma być generowane przez wyjście komparatora zboczem narastającym, opadającym lub obydwoma.

AVR-GCC - wejście i wyjście binarne

Rejestry Tutaj sytuacja się trochę (pozornie) komplikuje. Do każdego z fizycznych portów (tzn. tych dostępnych z zewnątrz układu) przypisane są trzy rejestry. Ale dzięki temu możemy niemal dowolnie konfigurować każdą końcówkę układu związaną z portami, tzn. ustalać kierunek, podciągać wejścia do zasilania, odłączać od reszty układu elektronicznego itp. Ustalanie kierunku - DDRx Rejestr kierunku danych (ang. Data Direction Register X, gdzie X jest oznaczeniem znakowym portu np. DDRA jest rejestrem kierunku dla portu A).

AVR-GCC - pamięć programu (FLASH)

Do przechowywania stałych np. tekstów dla wyświetlaczy LCD najlepiej nadaje się pamięć programu. Uzasadnienie tego jest proste: stałe zadeklarowane w pamięci SRAM zajmują cenne miejsce w tej (małej) pamięci (są tam kopiowane z pamięci flash podczas startu programu i nie są z niej usuwane) mogą być więc powodem różnych dziwnych błędów (na domiar złego kompilator nas zwykle o nich nie informuje). To tworzenia tego typu danych przeznaczone jest wyrażenie: __attribute__ ((progmem)). Aby w pełni z niego skorzystać należy włączyć do projektu plik nagłówkowy avr/pgmspace.h.

AVR-GCC - pamięć EEPROM

W odróżnieniu do prostych definicji zmiennych w pamięci SRAM, użycie pamięci EEPROM, do której dostęp odbywa się przez specjalne rejestry wymaga użycia specjalnych funkcji dla uzyskania dostępu do niej. Deklaracje tych funkcji znajdują się w pliku nagłówkowym avr/eeprom.h. Jednak należy uważać by nie stosować zmiennych w EEPROM, do których często zapisywane będą dane - np. zmienna sterująca pętli. Dzieje się tak dlatego, iż nominalnie pamięć EEPROM ma ograniczona możliwość przeprogramowywania. Producent gwarantuje tylko 100 tysięcy operacji zapisu.

AVR-GCC - opis funkcji biblioteki avr-libc

W tym artykule zostały zebrane opisy większości funkcji dostępnych z biblioteki avr-libgc. Niestety może brakować opisów części funkcji, a część z nich może zniknąć w nowych wersjach biblioteki ponieważ kompilator AVR-GCC i jego biblioteki podlegają ciągłym zmianom.

Subskrybuje zawartość