_delay_ms работает правильно, а вот _delay_us ругается и отсылает
c:/winavr-20071221/bin/../avr/include/util/delay.h:143: sorry, unimplemented: inlining failed in call to '_delay_ms': function not considered for inlining
c:/winavr-20071221/bin/../avr/include/util/delay.h:116: sorry, unimplemented: called from here
ВОТ СЮДА
Код
_delay_us(double __us)
{
uint8_t __ticks;
double __tmp = ((F_CPU) / 3e6) * __us;
if (__tmp < 1.0)
__ticks = 1;
else if (__tmp > 255)
{
_delay_ms(__us / 1000.0);
return;
}
else
__ticks = (uint8_t)__tmp;
_delay_loop_1(__ticks);
}
{
uint8_t __ticks;
double __tmp = ((F_CPU) / 3e6) * __us;
if (__tmp < 1.0)
__ticks = 1;
else if (__tmp > 255)
{
_delay_ms(__us / 1000.0);
return;
}
else
__ticks = (uint8_t)__tmp;
_delay_loop_1(__ticks);
}
Как я понял проверяется частота F_CPU и если она меньше чем нужно то микросекундных задержек нима.
На плате я непредусмотрел место для кварца о чём щас жалею.
Насколько максимально можно раскачегарить внутренний RC, или как сделать задержку на 50мкс.
?