z_avrlibc.pdf
(
131 KB
)
Pobierz
793117 UNPDF
Programowanie procesorów w języku C
dodatek do części 9: “Zmiany w avr-libc”
Uwaga: Pełny opis zmian (w języku angielskim) można znaleźć na stronie:
www.nongnu.org
/avr-libc/
avr-libc 1.2 a 1.4 – najważniejsze różnice
1.
Makro INTERRUPT (umożliwiające tworzenie przerwań obsługiwanych w taki sposób, że zaraz po ich
wywołaniu przerwania są odblokowywane) zostało oznaczone jako element do usunięcia i nie powinno już być
używane. Jeśli potrzebujesz takiej właśnie obsługi przerwania możesz wykorzystać zapis jak niżej:
void
NAZWA_PRZERWANIA
(
void
)
__attribute__
((
interrupt
))
2.
Wprowadzono nowe makro służące do tworzenia przerwań: ISR. Działa ono identycznie jak poprzednie
SIGNAL. Makro SIGNAL może zostać usunięte w przyszłych wersjach i nie powinno być już stosowane.
3.
Praktycznie wszystkie dane z pliku
<avr/signal.h>
zostały przeniesione do pliku
<avr/interrupt.h>.
Pierwszy z wymienionych plików jest aktualnie pusty i w następnych wersjach może zostać usunięty.
4.
Został wprowadzony nowy plik nagłówkowy:
<compat/deprecated.h>.
Znajdują się w nim elementy
przeznaczone do usunięcia (takie jak makro INTERRUPT). Kompilacja starszych programów może wymagać
jego dodania, jeśli nie chcemy zmieniać kodu.
5.
Część plików nagłówkowych została przeniesiona do katalogu
util.
Jedynym z przeniesionych plików,
który do tej pory był nam przydatny jest
delay.h.
W katalogu
avr
pozostał plik o nazwie
delay.h,
jednak
dołącza on swoją wersję z katalogu
util
jednocześnie generując ostrzeżenie.
6.
Wprowadzone zostały nowe nazwy przerwań. Aktualnie stare oraz nowe nazwy będą współistniały. Nie
wyklucza się jednak usunięcia starych nazw. Nowe nazwy są krótsze w zapisie i o tyle wygodniejsze, że są
praktycznie odwzorowaniem nazw stosowanych przez firmę ATMEL, z dodanym przyrostkiem
_vect
.
Poniżej przedstawiam kilka przykładowych nazw wektorów przerwań AT90S2313 według nowego i starego
stylu:
ANA_COMP_vect
INT0_vect
INT1_vect
TIMER0_OVF_vect SIG_
OVERFLOW0
TIMER1_CAPT1_vect SIG_INPUT_
CAPTURE1
...
7.
Rozwinięta została biblioteka
stdio.
Umieszczenie definicji stałej __STDIO_FDEVOPEN_COMPAT_12
przed dołączeniem nagłówka
<stdio.h>
sprawia, że biblioteka staje się w dużej mierze kompatybilna ze
starszą wersją. Może się okazać to pomocne przy kompilacji starszych kodów.
7.0.
Z funkcji
fdevopen
usunięto niewykorzystywany, trzeci parametr.
7.1.
Funkcje
put
oraz
get
strumienia przyjmują teraz dodatkowy parametr, którym jest wskaźnik na obiekt
FILE powiązany ze strumieniem. Zostało to wprowadzone przede wszystkim na punkt następny.
7.2.
Wprowadzona została funkcja fdev_set_udata() oraz fdev_get_udata() które dają możliwość
ustawienia oraz odczytania danej użytkownika znajdującej się w zmiennej FILE. Dana ta może zostać
wykorzystana w dowolny sposób. W połączeniu ze zmianą
7.1
daje to, między innymi, możliwość
wykorzystania tych samych funkcji
put
oraz
get
dla dwóch różnych urządzeń, rozróżnianych jedynie przez
daną użytkownika.
7.3.
Zdefiniowano dokładnie wartości jakie może zwrócić funkcja
get
. _FDEV_ERR – błąd, _FDEV_EOF –
koniec pliku. Powodują one odpowiednie zachowanie funkcji czytających.
7.4.
Wprowadzone zostało makro fdev_setup_stream() umożliwiające powiązanie strumienia z plikiem bez
pośrednictwa dynamicznej alokacji pamięci. Makro FDEV_SETUP_STREAM() umożliwia z kolei inicjację
tworzonej zmiennej typu FILE. W ten sposób udostępniona została nam funkcjonalność której poszukiwaliśmy
w poprzedniej części.
Jednocześnie, aby makra te mogły działać prawidłowo, struktura FILE została zdeklarowana jawnie w pliku
stdio.h.
Wersja przeznaczona do bezpłatnego udostępnienia poprzez stronę
www.elportal.pl
(
www.elportal.com.pl
,
www.edw.com.pl
)
. Jeśli
pobrałeś ten plik z innego miejsca – proszę, poinformuj mnie o tym:
radoslaw.koppel@elportal.pl
. Jeśli chcesz umieścić ten plik na
swojej stronie lub masz jakieś uwagi – skontaktuj się ze mną.
-1/1-
Nowy styl Stary styl
SIG_COMPARATOR
SIG_INTERRUPT0
SIG_INTERRUPT1
Plik z chomika:
atari666
Inne pliki z tego folderu:
index.php.htm
(211 KB)
EdW_kurs_gcc.rar
(86006 KB)
D15G14E_14_030526.pdf
(731 KB)
c2_oper.pdf
(54 KB)
dyn_spec.wmv
(397 KB)
Inne foldery tego chomika:
Hall M. - JavaScript i Java server pages
Zgłoś jeśli
naruszono regulamin