Зарегистрирован: Пт сен 05, 2008 05:15:14 Сообщений: 16
Рейтинг сообщения:0
Название темы взял со статьи Ридико Леонид Иванович. Генератор прямоугольных импульсов на основе AVR.Заинтересовался вот этим методом-
Рис. 10. Получение сигнала произвольной скважности.
Метод получения такого сигнала проиллюстрирован на рис. 10. Для примера рассматривается режим генерации положительных импульсов. В момент возникновения события совпадения переключается состояние выхода OC1, который настроен на переключение по совпадению (режим «toggle»). В данном примере он переключается с нуля в единицу. Перезагрузка регистра сравнения OCR1A осуществляется в обработчике прерывания, который вызывается с некоторой задержкой (эта задержка называется interrupt latency). Перезагрузка должна быть произведена обязательно до того момента, когда должно произойти новое совпадение. Именно время выполнения обработчика прерывания ограничивает минимальную длительность импульсов в данном режиме. Поэтому принят ряд мер для уменьшения этого времени. Перезагрузка осуществляется величиной, которая определяет длительность единицы, в данном примере это длительность импульса d. При следующем совпадении выход OC1 переключается из единицы в ноль и осуществляется перезагрузка регистра сравнения длительностью нуля, в данном примере это разность периода и длительности P-d. Никаких вычислений в прерывании не производится, длительности нуля и единицы основная программа передает сразу «готовыми к употреблению».
Вроде все понятно,но на деле сделать не получается,всегда получается только меандр,таймер2 сконфугировал вот так-
Код:
// Timer/Counter 2 initialization // Clock source: System Clock // Clock value: 125,000 kHz // Mode: CTC top=OCR2 // OC2 output: Toggle on compare match ASSR=0x00; TCCR2=0x1A; TCNT2=0x00; OCR2=0x00;
Как сделать,чтобы длительность и паузу можно было как угодно менять,кто нибудь на примере может показать ?Для CVAVR.
Нееет, уважаемый, это именно "про ШИМ". Так-что, как говорится, берите глаза в руки и читайте, пока не увидите, что ответ на оба ваших вопроса находится у вас перед глазами.
Зарегистрирован: Пт сен 05, 2008 05:15:14 Сообщений: 16
Рейтинг сообщения:0
Черт возми,когда нибудь кто нибудь нормально может обьяснить начинающему ,кроме посыланий на разные страницы,под...бок и т.д.
Просто написать 5 строк кода и все
Для начала, нужно было выложить свой код, а-то, мало ли, что там наконфигурено. Кроме того, нужно было сформулировать вопрос поточнее, а-то, в начале - "за здравие" (управление скважностью), а в конце - "за упокой" (длительностью импульса и паузы), и как понимать?
P.S. Да, и - чертыхаться не стоило, уверяю.
Добавлено:
Заглянул я в тему, о которой говорил Tych, - вижу, вы, молодой человек, задали этот вопрос еще 27 сентября. Там уже 5 страниц обсуждения - вы его не читали, что-ли? Тогда какой смысл снова задавать вопрос? Что-то я не пойму...
Зарегистрирован: Пт сен 05, 2008 05:15:14 Сообщений: 16
Рейтинг сообщения:0
Все я прочитал,но в этой статье говорится про другое-необходимо производить перезагрузку регистра сравнения два раза за период.
Произошло событие совпадения-на выходе ОС2- 1,после этого я должен внутри прерывания поставить OCR2=10(0,08мс)например,через 0,08 мс произойдет еще одно совпадение и на выходе будет 0,после этого я должен загрузить в OCR2 другое значение.Еще пишется в рисунке про задержку обработки прерывания.Все это как на практике сделать,не могу додуматься со своей тупой головой
Хорошо, допустим, что на 5 страницах той темы вы не нашли ответа на свой вопрос (кстати, а чем примеры, выложенные в том топике не устраивают(?) - взять самый близкий пример в качестве отправной точки и вперед! ...???), но сформулировать-то его вы можете? Есть длительность импульса, есть длительность паузы, есть их сумма - длительность периода, есть отношение длительности периода и импульса (скважность) - управление скважностью подразумевает неизменную длительность периода, управление длительностями импульса и/или паузы - подразумевает изменение длительности периода. Таким образом, решение этих двух задач - разное.
И наконец - какое место в коде не работает? Как она выглядит, эта неудавшаяся попытка?
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 4
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения