ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Воскресенье
28 апреля
67363 Топик полностью
Bill (31.08.2006 11:55, просмотров: 1) ответил AVR на 2 mse, jaga-jaga, Silence, AF: нашел-таки ту писькомерялку, но не понял главного
Извините мужики, я, пожалуй, тоже встряну. Вы обсуждаете алгоритм, реализованный на PIC16, и пытаетесь сравнить с реализаией этого же алгоритма на AVR. Но есть один момент, который часто упускают из виду. Все дело в том, что данный алгоритм не является в общем случае оптимальным. Хотя данный алгоритм является для PIC16, наиболее оптимальным. Но можно многоканальную ШИМ реализовать несколько по-другому, более коротко, по крайней мере, на Си. И если в AVR для такого алгоритма код будет короче, то в PIC16 код вырастет значительно. Я делал многоканальную ШИМ программно по другому алгоритму. Суть его такова. Имеется только ОДИН счетчик, который наращивается на каждом шаге ШИМ. Далее, происходит сравнение значение величины в каждом канале со значением этого счетчика. Если условие сравнения выполняется, то устанавливается соответствующим образом тот или иной разряд порта. При таком алгоритме нет необходимости заводить массив счетчиков и копровать в него значения величин всех каналов. Но при реализации такого алгоритма на PIC16 неизбежно возникнут проблемы, поскольку в данном процессоре отстутсвует команда неразрушающего сравнения, и, следовательно, потребуется копирование значения каждого канала в рабочий регистр W. Естественно, код значительно вырастет и быстродействие упадет. Так что, алгоритм тоже следует выбирать исходя из возможностей архитектуры и в случае более примитивной архитектуры возможности выбора алгоритма более ограничены. Но, опять же, если мы пишем программы на Си, ограничения архитектуры отходят на второй план. На первый же план выходит оптимальность исходного алгоритма, которая в результате трансляции может оказаться со знаком минус.