Всем доброго времени.
Помогите разрешить задачу. Возникла чисто случайно. Меня попросили объяснить по аппаратному ному шиму, и честно говоря я понял что несколько затрудняюсь ответить. Есть сомнения.
Попытаюсь объяснить суть как можно внятнее ))). Даже нашел пример.
http://avrlab.com/node/90
При OCR1A=TCNT1 на на выводе OC1A в зависимости от битов COM1A0, COM1A1 (в регистре TCCR1A), устанавливается нолик или единица. Как в примере, если то, у нас при возрастании счетчика(и естественно при пересечении с OCR1A) на выходе будут в каждом такте "0". При обратном счете поменяется на "1".
Так вот что будет на самом деле на выходе при OCR1A=0 (постоянно=0)?
По идее в первый проход (с начала "первого выполнения" последовательности) , у нас OCR1A=TCNT1=0, и в первый такт (при условии что за один такт OC1A успевает менять состояние с "0" в "1" и обратно, естественно) у нас на OCR1A будет "0".
Далее таймер считает до 255, и у нас также на протяжении этих 255-ти тактов на OCR1A будет "0". Теперь таймер считает в обратном направлении до "нуля", при этом все такты до "0"(не включительно)на OCR1A будет также "0".
Так вот вопрос: когда таймер дойдет до "нуля" будет опять условие OCR1A=TCNT1=0. Что произойдет? Вроде как поменяется на "1" (ведь условие пересечения есть) или все-таки не поменяется? Тут как бы неопределенное состояние. Ведь дальше он опять начнет считать до 255. И непонятно какое это пересечение, то ли при счете вверх, то ли счете вниз. Или он дважды это воспримет, т.е. на OCR1A дать "1" и тут же "0"?
Еще такой вопрос правильно ли я понял, что по сути "полный такт ШИМА"(счетчик досчитал до 255 и назад) будет составлять 512 тактов. То есть получается по времени "разрешение по уровням" будет -512 ? Нет под рукой осциллографа посмотреть.
Надеюсь я достаточно четко задал вопрос ))). Жду разрешения вопроса.