ahoj ,
používám atmegu128 , program od ASIXu a v něm mám nastavený interní oscilátor 1MHz.Používám program CodeVisionAVR a v tomto programu když napíšu funkci delay_us(500); tak se mi na osciloskopu zobrazí pulz dlouhý 2000us , což je 4x více než by mělo být.
díky za rady
administrator: přejmenováno z "interní oscilátor u AVR128"
V CodeVison AVR nic nenastavuji , protože to hází chybu.
Když napíšu do programu
CKSEL.0 = 1;
CKSEL.1 = 0;
CKSEL.2 = 0;
CKSEL.3 = 0;
což znamená nastav interní oscilátor na frekvenci 1MHz tak překladač hází chybu undefined symbol
Jen bych dodal, že pracovní frekvenci megy128 jde měnit (pouze snížit) programově za chodu. To by taky ovlivnilo delay().
Slouží k tomu XTAL Divide Control Register – XDIV
CHybí ti definice #define F_CPU 1000000U
Tuhle definici potřebuje knihovna util/delay.h
Výchozí hodnota je 4MHz, proto správně ti to zpožďuje nyní 2000us.