Biblioteka tAvrLib
1.0.1
- Autor:
- Tomasz Wasilczyk (http://www.wasilczyk.pl)
Biblioteka tAvrLib jest zbiorem funkcji przeznaczonych dla mikrokontrolerów AVR, z nastawieniem na obsługę urządzeń peryferyjnych.
Najnowsza wersja tej biblioteki jest dostępna na stronie projektu: tAvrLib.wasilczyk.pl.
Niniejszy kod jest objęty licencją GNU LGPL v3 (
http://www.gnu.org/licenses/lgpl.html). Zezwala się na bezpłatne używanie biblioteki w innych, własnościowych lub nie, projektach. Nie wolno jednak korzystać z kodu lub jego fragmentów bez podania źródła wraz z odnośnikiem (oczywiście interfejs użytkownika końcowego nie musi zawierać wspomnianej informacji). Mile widziane jest informowanie autora o projektach wykorzystujących bibliotekę.
Biblioteka została przygotowana do współpracy z AVR Libc (
http://www.nongnu.org/avr-libc/) - kompilator avr-gcc dla systemu Linux. Mimo to dołożę starań, aby nie było problemów z uruchomieniem pod systemem Windows (w szczególności WinAVR).
Przed użyciem żądanych funkcji wystarczy po prostu dołączyć wybrany plik nagłówkowy (*.h) - kod funkcji (*.c) zostanie dołączony razem z nim. Rozwiązanie to pozwala na użycie opcji kompilatora -fwhole-program
(wymaga ona kompilacji całego programu tylko jednym poleceniem avr-gcc).
- Uwaga:
- Pominięcie przełącznika
-fwhole-program
może skutkować znacznym wzrostem objętości wynikowego programu.
Jeżeli Twoja aplikacja nie może być kompilowana z powyżej opisanym przełącznikiem, a wielkość kodu wynikowego ma istotne znaczenie, należy zmodyfikować pliki biblioteki, usuwając z niej nie używane funkcje. Można też usunąć z plików nagłówkowych dołączenia plików *.c (jednocześnie dołączając do tych drugich pliki *.h) oraz kompilować z użyciem linkera. Nie jest to jednak zalecane rozwiązanie.
Przykładowy sposób kompilacji programu wykorzystującego tAvrLib:
avr-gcc -mmcu=atmega16 -O2 -fwhole-program -Isciezka/do/tAvrLib program.c -o program
avr-size program
avr-objcopy -O ihex program program.hex
Polecenie avr-size
nie jest konieczne, ale pozwala w prosty sposób sprawdzić użycie pamięci w programie. Zaleca się także używanie flag kompilatora -Wall
, -Wextra
i -pedantic
.
W katalogu
examples znajdują się przykładowe programy, demonstrujące działanie wybranych komponentów tAvrLib. Przed kompilacją należy przygotować środowisko. W systemie Windows wystarczy zainstalować WinAVR (przy domyślnej konfiguracji), natomiast w systemie Linux:
- zainstalować pakiety: cross-avr-gcc (cross-avr-binutils), avrdude, avr-libc,
- do pliku
~/.bashrc
dopisać PATH=$PATH:/opt/cross/bin ; export PATH
, - (opcjonalnie) do pliku /etc/sudoers dopisać
ALL ALL= NOPASSWD: /opt/cross/bin/avrdude
.
Gdy środowisko jest już poprawnie skonfigurowane, należy wejść do katalogu z programem i wpisać:
- Nota:
- Jeżeli wykonujemy kompilację spod Windowsa (WinAVR), należy z pliku Makefile usunąć polecenie
sudo
.
W celu użycia innego programu, niż avrdude, można wygenerować plik *.hex poleceniem: