_igor_U_ (21.09.2005 12:32, просмотров: 1838)
Подскажите как указать разрядность данных при присваивании их с помощью define. Avr gcc. Сам вопрос в письме. #define OffValve 240u
#define FullCurrent 512u
#define MiddleCurrent 64u
#define KdVFull OffValve*FullCurrent*6
#define KdVMiddle OffValve*MiddleCurrent*6
KdVFull и KdVMiddle компилятор делает 16 битными. Как пояснить компилятору, что они 32х битные?
Вот что он делает (lss):
Max=KdVFull;
1a6: a0 e0 ldi r26, 0x00 ; 0
1a8: b0 e4 ldi r27, 0x40 ; 64
1aa: c0 e0 ldi r28, 0x00 ; 0
1ac: d0 e0 ldi r29, 0x00 ; 0
Т.е. теряет старшие 16 бит. KdVFull должен быть равен 0хB4000 (737280). Объявление Max:
uint32_t Max;