Při rebuild all se vypisuje F_CPU not defined, co znamená?

Při zadání rebuild all se mi objevuje tohle (při build už ne):

c:/program files/winavr/lib/gcc/…/…/avr/include/util/delay.h:85:3: warning: #warning “F_CPU not defined for <util/delay.h>”

u

#include <util/delay.h>

Co s tím, nebo to nevadí?

:arrow_right: administrator: přejmenováno z "Warování"

:arrow_right: administrator: přesunuto z "Microchip"

No rekl bych ze ses ve spatne kategorii pokud mas nakej warning pro AVRko :slight_smile:
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.

Podla cesty vidim, ze robis s C.
Tak v AVRstudiu klikni na :

“Project”->“Configuration Options”

tam najdes okienko pre vpisanie frekvencie.

Je někde nějaký seznam frekvencí?
Pokud ne, jaká je frekvence k atmega16?

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.

Takže není jedna absolutní hodnota, ale pouze nejvyšší možná rychlost určitého procesoru?

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.