Захотелось чтобы препроцессор вычислял значение которое нужно запихнуть в UBRR...
решил сделать вот так:
Код
#define _BAUND 9600
#define Fosc 4000000
#define BAUND (Fosc/(_BAUND*16))-1
В результате получил 176 а не 25
тогда попробовал вот так:
Код
#define _BAUND 9600
#define BAUND ((Fosc/_BAUND)/16)-1
и получил желанные 25
Но ведь записи то одинаковые, а результаты разные... ???
дальше хочу определить ошибку вот таким вариантом
Код
#define _UBRR ((Fosc/(BAUND+1))/16)
#define BAUND_ERROR ((_UBRR - _BAUND)/_BAUND)*1000
результат который хотелось видеть 1 (т.е. 0.1%) а получил 0

И хотелось бы выводить само значение ошибки, нашел директиву
Код
#warning любое текстовое сообщение
но оно не позволяет выводить результат расчета
типа
Код
#warning ошибка установки скорости обмена составляет BAUND_ERROR
Вообщем вопрос - как обрабатывается препроцессор и можно ли выводить на экран результат в численном виде ?