AVR (14.09.2006 11:14, просмотров: 1) ответил Bill на Я понял все это как попытку сравнить предельные возможности процессоров.
Алгоритм не столько мой, сколько Дисбалансера и mse, я его просто подрихтовал для шустрости http://www.telesys.ru/wwwboards/mcontrol/469/messages/231085.shtml
Просто в ПИК-версии Дисбалансер учел особенности ПИК и грамотно сделал 24 счетчика, а не 1, как у меня. Хорошо зная компилятор, он прекрасно понимал, что получит оптимальную реализацию в два такта на канал. В АВР тот же С-код дал бы 3-4 такта на канал из-за отсутствия в АВР удобной 1-тактовой команды dcfsz и двухтактности команды установки одиночного бита порта sbi. Я обошел эти узкие места, заменив 24 счетчика на 24 уставки и один счетчик, команду декремента-пропуска на команду сравнения и команду установки бита порта на команду сдвига-накопления результата сравнения в промежуточную переменную и последующего вывода этой переменной в порт за один такт каждые 8 итераций. Безусловно, на С это выглядело совершенно иначе, чем в исходном ПИК-варианте. И исходный С-код как раз весьма убедительно использует возможности ПИК - неважно, 16-го или 18-го