W starym WinAvr można było podstawić zmienną w miejsce argumentu funkcji delay. Skutkowało to zwiększeniem objętości kodu.
W Atmel Toolchain, funkcje delay, korzystają z innych mechanizmów niż te w WinAvr. Skutkuje to tym, że jako argument należy podać stałą dosłowną lub zmienną, której wartość jest znana na etapie kompilacji i która nie zmienia swej wartości. Wtedy kompilator za zmienną i tak podstawi stałą i delay poprawnie działa.
Podanie zmiennej, której wartość nie jest znana na etapie kompilacji powoduje zatrzymanie kompilacji i wyrzucenie błędu
__builtin_avr_delay_cycles expects a compile time integer constantKiedyś z ciekawości to sprawdziłem i poniższy program
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
bez problemów kompiluje się w WinAvr zwiększając rozmiar wsadu do ponad 3kB.
Natomiast w Atmel Toolchain taki kod się nie kompiluje a kompilator zgłasza wyżej wymieniony błąd