Получение сигнала произвольной скважности.

Вопросы настройки, программирования, прошивки микроконтроллеров и микросхем программируемой логики
Закрыто
Родился
Сообщения: 16
Зарегистрирован: Пт сен 05, 2008 05:15:14

Сообщение кошак »

Название темы взял со статьи Ридико Леонид Иванович. Генератор прямоугольных импульсов на основе 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.
Вложения
Fig10.gif
(6.75 КБ) 622 скачивания
Реклама
Э...
Аватара пользователя
Сообщения: 2792
Зарегистрирован: Ср апр 04, 2007 08:39:14
Откуда: Москва

Сообщение tych »

Только что была темпа про ШИМ
Думайте сами, решайте сами ... а вот он-лайн перевод на корявый русский http://translate.ru
Контактная информация:
Реклама
Родился
Сообщения: 16
Зарегистрирован: Пт сен 05, 2008 05:15:14

Сообщение кошак »

Рисунок посмотрите,это не про шим,а другое
Сверлит текстолит когтями
Аватара пользователя
Сообщения: 1148
Зарегистрирован: Вт июл 08, 2008 12:24:17

Сообщение Yellow Tiger »

Нееет, уважаемый, это именно "про ШИМ". Так-что, как говорится, берите глаза в руки и читайте, пока не увидите, что ответ на оба ваших вопроса находится у вас перед глазами. :)
Реклама
Эиком - электронные компоненты и радиодетали
Родился
Сообщения: 16
Зарегистрирован: Пт сен 05, 2008 05:15:14

Сообщение кошак »

Черт возми,когда нибудь кто нибудь нормально может обьяснить начинающему ,кроме посыланий на разные страницы,под...бок и т.д.
Просто написать 5 строк кода и все
Реклама
Сверлит текстолит когтями
Аватара пользователя
Сообщения: 1148
Зарегистрирован: Вт июл 08, 2008 12:24:17

Сообщение Yellow Tiger »

Для начала, нужно было выложить свой код, а-то, мало ли, что там наконфигурено. Кроме того, нужно было сформулировать вопрос поточнее, а-то, в начале - "за здравие" (управление скважностью), а в конце - "за упокой" (длительностью импульса и паузы), и как понимать?

P.S. Да, и - чертыхаться не стоило, уверяю.

Добавлено:
Заглянул я в тему, о которой говорил Tych, - вижу, вы, молодой человек, задали этот вопрос еще 27 сентября. Там уже 5 страниц обсуждения - вы его не читали, что-ли? Тогда какой смысл снова задавать вопрос? Что-то я не пойму...
Реклама
Родился
Сообщения: 16
Зарегистрирован: Пт сен 05, 2008 05:15:14

Сообщение кошак »

Все я прочитал,но в этой статье говорится про другое-необходимо производить перезагрузку регистра сравнения два раза за период.
Произошло событие совпадения-на выходе ОС2- 1,после этого я должен внутри прерывания поставить OCR2=10(0,08мс)например,через 0,08 мс произойдет еще одно совпадение и на выходе будет 0,после этого я должен загрузить в OCR2 другое значение.Еще пишется в рисунке про задержку обработки прерывания.Все это как на практике сделать,не могу додуматься со своей тупой головой
Сверлит текстолит когтями
Аватара пользователя
Сообщения: 1148
Зарегистрирован: Вт июл 08, 2008 12:24:17

Сообщение Yellow Tiger »

Хорошо, допустим, что на 5 страницах той темы вы не нашли ответа на свой вопрос (кстати, а чем примеры, выложенные в том топике не устраивают(?) - взять самый близкий пример в качестве отправной точки и вперед! ...???), но сформулировать-то его вы можете? :))
Есть длительность импульса, есть длительность паузы, есть их сумма - длительность периода, есть отношение длительности периода и импульса (скважность) - управление скважностью подразумевает неизменную длительность периода, управление длительностями импульса и/или паузы - подразумевает изменение длительности периода. Таким образом, решение этих двух задач - разное.
И наконец - какое место в коде не работает? Как она выглядит, эта неудавшаяся попытка?
Родился
Сообщения: 4
Зарегистрирован: Чт дек 14, 2006 20:25:35

Сообщение efko »

кошак, выложил для вас рабочий проект тут
http://www.radiokot.ru/forum/viewtopic. ... &start=420
Контактная информация:
Закрыто

Вернуться в «Микроконтроллеры и ПЛИС»