Victor Aprea schrieb:

I'm (at long last) trying to switch from using Windows to using Ubuntu for
my AVR development. I'm using AVR-GCC 4.5.3 on Ubuntu 12.04. I'm using the
Eclipse IDE with the AVR-GCC plugin. I'm getting the following error trace
from the compiler:

In file included from ../soft_uart.c:16:0:
/usr/lib/gcc/avr/4.5.3/../../../avr/include/util/delay.h: In function
‘soft_uart_init’:
/usr/lib/gcc/avr/4.5.3/../../../avr/include/util/delay.h:153:28: error:
__builtin_avr_delay_cycles expects an integer constant.
/usr/lib/gcc/avr/4.5.3/../../../avr/include/util/delay.h: In function
‘delay_bit_time’:
/usr/lib/gcc/avr/4.5.3/../../../avr/include/util/delay.h:230:28: error:
__builtin_avr_delay_cycles expects an integer constant.

line 16 of soft_uart.c is just the #include <util/delay.h> line.

I use _delay_ms and _delay_us in exactly six lines of code. The first two
are:

_delay_ms(BIT_TIME_US * 2);
_delay_us(BIT_TIME_US);

which both depend on the following definitions:

#define BAUD_RATE   2400
#define BIT_TIME_US (1000000.0 / BAUD_RATE)

and then also the following four lines:

_delay_ms(100);
_delay_ms(250);
_delay_ms(500);
_delay_ms(2000);

I've read this 
thread<http://www.avrfreaks.net/index.php?name=PNphpBB2&file=printview&t=105891&start=0>on
avr-freaks and also this
bug-report<http://old.nabble.com/-bug--34278--Seemingly-overzealous-%22__builtin_avr_delay_cycles-expects-an-integer-constant%22-td32451670.html>,
but nothing jumps out at me as being relevant. Obviously, my arguments are
all well defined constants at compile-time. The same error message shows up
as long as at least one of those six lines is not commented out.

Every single avr-gcc call issued by Eclipse contains the argument
-DF_CPU=3686400UL so F_CPU is also a well defined constant. What the heck
is going on here?

Without more information it's not possible to tell.

Can you post a preprocessed code for a (minimal) example that still
triggers the error, together with the error message and compiler
output? You get both by adding -save-temps -v to compiler options.
The preprocessed code is a text file named *.i

As the error message requestst an /integer/ constant:
Does the error disappear if you avoid float constants?

Johann

Regards,

Vic

_______________________________________________
AVR-GCC-list mailing list
AVR-GCC-list@nongnu.org
https://lists.nongnu.org/mailman/listinfo/avr-gcc-list

Reply via email to