Цитата(Т.Достоевский @ Jul 28 2008, 18:54)

Доброго времени суток Уважаемые!
написал так... (IAR_AVR)
Код
#define sus_frec 8000000
#define uS sus_frec/1000000
#define delay_uS(data1) __delay_cycles(##data1 * uS)
На строчку
Код
main{
delay_uS(300); < - !
...
ругается, мол перебор, преобразую в знаковый.
Подскажите, как сделать правильно? Спасибо.
IAR_AVR определяет все константы меньше 65536 как 16 разрядные..... поэтому теряется точность при делении
Может это не совсем правильно, но в выражениях вычисляемых компилятором я привожу все числа к unsigned long long:
#define XTAL 8000000
#define Wait_uS(x) __delay_cycles(((unsigned long long)XTAL*(unsigned long long)x)/(unsigned long long)1000000)
Метрология - наука о достаточной точности.