Цитата(Proton @ Feb 17 2007, 07:07)

Возникла необходимость реализации решения дифферинциальных уравнений для автоматической системы управления. Чтобы получить приемлимую точность, надо использовать дробные числа, реализация плавающей точки в IAR'овской библиотеке оказался слишком ресурсоёмким. Интересным показался вариант в AVR201, но там для целой части используется всего 1 бит, чего мне явно недостаточно.
Подскажите где можно посмотреть примеры реализации операций с фиксированной точкой, где хотя бы 1 байт отведён на целую часть, т.е. имеет формат не хуже 8.16(1 байт на целую часть, 2 байта на дробную).
Виртуальная точка в целочисленных операциях, по определению стоит после самого младшего разряда, но её можно поставить где угодно, сиё зависит от интерпретации входных чисел и результата, вот вам и будет операция с фиксированной точкой. Естественно, нужно учитывать перемещение точки при умножении и делении. Например, при умножении чисел 1,23 и 4,56 получим результат 5,6088. Видно что у множителей точка стояла перед второй позицией в числе, а в произведении она стоит после четвёртой позиции.
В вашем конкретном случае можно работать с входными числами вида <byte1>.<byte0>, и выходными <byte2>.<byte1><byte0>. Сохраняя <byte2>.<byte1> в промежуточных вычислениях с возможным округлением. Теоретически можно так делать.
А вот практически так делать не надо, просто работаете с целочисленными 24-битными значениями, а при интерпретации помните, что единица младшего разряда ваших чисел равна 1/(2^16), что эквивалентно тому, что точка у вас стоит перед 16-м разрядом. Таким образом, вам подойдут один к одному все целочисленные алгоритмы.
На сайте атмел еще посмотрите avr202 (http://www.atmel.com/dyn/resources/prod_documents/doc0937.pdf).