No rekl bych ze ses ve spatne kategorii pokud mas nakej warning pro AVRko
Jednoduse nemas definovanou frekvenci, na ktere bude MCU pracovat, takze compiler neumi presne spocitat delaye, ktery jsi v kodu pouzil.
Takze se musi napsat neco jako #pragma CLOCK_FREQ 4000000
nebo # define FCY 40000000
nebo # define F_CPU 40000000
Edit: Samozrejme s frekvenci odpovidajici tve aplikaci.
Vacia ako 0Hz a zaroven mensia, alebo rovna 16MHz.
Aky si tam das Xtal, taku frekvenciu budes mat. Alebo pouzijes interny RC oscilator.
Skratka prekladac MUSI vediet, s akou frekvenciou budes MCU prevadzkovat. Inak nema na zaklade coho automaticky prepocitat konstatny do cakacej slucky _delay(). Ak chces, aby procesor cakal povedzme 11ms, potom musi prekladac vlozit do programu take mnozstvo instrukcii, aby ich beh trval onych 11ms. Ale kedze instrukcia trva vacsinou 1-2 takty procesora, musi prekladac vediet, ako rychlo chces, aby ti procesor makal a z toho si odvodi kolko tych instrukcii do cakacej slucky ma vlozit, respektive presnejsie, kolko krat ma cakacia zlucka zbehnut.
hodnota zavisi od pouziteho kristalu alebo RC oscilatora (pripadne interneho oscilatore frekvenciu toho najdes v datasheete.
TJ ak sa rozhodnes ze na prevadzku ti staci 4Mhz kristal tak zadefinujes v programe ze pouziješ ten.
Ak sa rozhodnes zmenit nebude ti stihat procesor robit co chces… das iny napr 8Mhz s zmenis aj hodnotu v programe. Kompilator prepocitta veci tak aby odpovedali zvolenej hodnote Kristalu.