реклама на сайте
подробности

 
 
4 страниц V   1 2 3 > »   
Reply to this topicStart new topic
> Увеличение Длины Поступающих Импульсов, поступил импульс длительностью L, а выдать нужно L+L/K
IC7K
сообщение Jul 1 2009, 02:09
Сообщение #1





Группа: Новичок
Сообщений: 9
Регистрация: 3-06-09
Из: Хабаровск
Пользователь №: 49 895



голову сломал но сделать не могу никак маленький опыт программирования очевидно.

есть задача:

поступают прямоугольные испульсы с частотой от 0 до 150 Гц и скважностью 1.
необходимо выдать подобные импульсы но с "плавной" регулировкой частоты (длительности) импульса/паузы и такой же скважностью в сторону увеличения длительности (уменьшения частоты).

т.е. допустим поступил импульс/пауза длительностью L, а выдать нужно L+L/K, где K - коэф-т удлиннения импульса/паузы.


пробовал таймером вызывать цикл счетчика и одновременно выдачи импульса в разных вариациях, но чтото никак

может есть какая идея простая?

буду благодарен за помощь!
Go to the top of the page
 
+Quote Post
AnV22
сообщение Jul 1 2009, 02:42
Сообщение #2


Участник
*

Группа: Участник
Сообщений: 24
Регистрация: 18-06-07
Из: Челябинск
Пользователь №: 28 529



Цитата(IC7K @ Jul 1 2009, 08:09) *
поступают прямоугольные испульсы с частотой от 0 до 150 Гц и скважностью 1.

Вы не ошиблись со значением скважности? Может быть со скважностью 2?


--------------------
- Своя программа жизни -
Go to the top of the page
 
+Quote Post
domowoj
сообщение Jul 1 2009, 02:49
Сообщение #3


Профессионал
*****

Группа: Участник
Сообщений: 1 548
Регистрация: 20-12-07
Из: г.Новосибирск
Пользователь №: 33 486



Как соотносятся входная и выходная частоты?


--------------------
И на камнях растут деревья!
Go to the top of the page
 
+Quote Post
dimka76
сообщение Jul 1 2009, 04:49
Сообщение #4


developer
****

Группа: Свой
Сообщений: 902
Регистрация: 12-04-06
Из: Казань
Пользователь №: 16 032



Цитата(IC7K @ Jul 1 2009, 06:09) *
необходимо выдать подобные импульсы но с "плавной" регулировкой частоты (длительности) импульса/паузы и такой же скважностью в сторону увеличения длительности (уменьшения частоты).

т.е. допустим поступил импульс/пауза длительностью L, а выдать нужно L+L/K, где K - коэф-т удлиннения импульса/паузы.


Т.е. удлинять надо и импульс и паузу одновременно.
Пока вы удлиняете импульс, вы пропустите спадающий фронт и как же тогда вы удлините паузу ?


--------------------
Все может быть и быть все может, и лишь того не может быть-чего уж точно быть не может, хотя..и это может быть.
Go to the top of the page
 
+Quote Post
domowoj
сообщение Jul 1 2009, 04:54
Сообщение #5


Профессионал
*****

Группа: Участник
Сообщений: 1 548
Регистрация: 20-12-07
Из: г.Новосибирск
Пользователь №: 33 486



IC7K
А чем "К" будете задавать?


--------------------
И на камнях растут деревья!
Go to the top of the page
 
+Quote Post
Dog Pawlowa
сообщение Jul 1 2009, 06:32
Сообщение #6


Гуру
******

Группа: Свой
Сообщений: 2 702
Регистрация: 14-07-06
Пользователь №: 18 823



Цитата(IC7K @ Jul 1 2009, 05:09) *
голову сломал но сделать не могу никак маленький опыт программирования очевидно.

может есть какая идея простая?

Есть идея простая.
Прежде чем кидаться программировать таймеры, стоит нарисовать на бумажке несколько импульсов на входе и на выходе и представить правила, как из одного сигнала получить другой.
Многое и прояснится.
А запрограммировать - поможем.


--------------------
Уходя, оставьте свет...
Go to the top of the page
 
+Quote Post
IC7K
сообщение Jul 1 2009, 06:38
Сообщение #7





Группа: Новичок
Сообщений: 9
Регистрация: 3-06-09
Из: Хабаровск
Пользователь №: 49 895



Скважность 1 это пауза равна импульсу по длительности (сорри если ошибся smile.gif

K задается вручную путем подбора и всегда постоянно, т.е. это % от длины импулься получается

Т.е. удлинять надо и импульс и паузу одновременно.
Пока вы удлиняете импульс, вы пропустите спадающий фронт и как же тогда вы удлините паузу ?


верно, но в том то все и дело smile3046.gif как то надо обойти эту проблему

стоит нарисовать на бумажке

малоли какие есть механизмы у контроллера, я же не спец.
может этот вопрос давно решен другим макаром.
Go to the top of the page
 
+Quote Post
dimka76
сообщение Jul 1 2009, 06:49
Сообщение #8


developer
****

Группа: Свой
Сообщений: 902
Регистрация: 12-04-06
Из: Казань
Пользователь №: 16 032



Цитата(IC7K @ Jul 1 2009, 10:38) *
Скважность 1 это пауза равна импульсу по длительности (сорри если ошибся smile.gif


Скважность это отношение длины импульса к периоду. Т.е. когда длительность импульса и паузы равны, то скважность равна двум.


Цитата
может этот вопрос давно решен другим макаром.


Посмотрите микросхему К155ИЕ8


--------------------
Все может быть и быть все может, и лишь того не может быть-чего уж точно быть не может, хотя..и это может быть.
Go to the top of the page
 
+Quote Post
Alex11
сообщение Jul 1 2009, 07:07
Сообщение #9


Гуру
******

Группа: Свой
Сообщений: 2 106
Регистрация: 23-10-04
Из: С-Петербург
Пользователь №: 965



Поскольку входная и выходная частоты разные, то вопрос о фазе не стоит, поэтому делайте два независимых процесса - измерение длительности импульса или периода, что Вам важнее, и генерацию меандра с заданной частотой. Период меандра изменяйте хоть после каждого измерения, хоть усредняйте - в зависимости от задачи.
Go to the top of the page
 
+Quote Post
Dog Pawlowa
сообщение Jul 1 2009, 07:39
Сообщение #10


Гуру
******

Группа: Свой
Сообщений: 2 702
Регистрация: 14-07-06
Пользователь №: 18 823



Цитата(IC7K @ Jul 1 2009, 09:38) *
может этот вопрос давно решен другим макаром.
Вам достаточно ясно дают понять, что вопрос некорректно поставлен, а Вы опять про механизмы в контроллере.
Фазу соблюсти невозможно, т.е. речь может идти не об "удлинении импульса", а генерации другого сигнала, как выше пишут.


--------------------
Уходя, оставьте свет...
Go to the top of the page
 
+Quote Post
domowoj
сообщение Jul 1 2009, 10:41
Сообщение #11


Профессионал
*****

Группа: Участник
Сообщений: 1 548
Регистрация: 20-12-07
Из: г.Новосибирск
Пользователь №: 33 486



Цитата(Alex11 @ Jul 1 2009, 14:07) *
Поскольку входная и выходная частоты разные, то вопрос о фазе не стоит, поэтому делайте два независимых процесса - измерение длительности импульса или периода, что Вам важнее, и генерацию меандра с заданной частотой. Период меандра изменяйте хоть после каждого измерения, хоть усредняйте - в зависимости от задачи.

абсолютно согласен


--------------------
И на камнях растут деревья!
Go to the top of the page
 
+Quote Post
=GM=
сообщение Jul 1 2009, 11:54
Сообщение #12


Ambidexter
*****

Группа: Свой
Сообщений: 1 589
Регистрация: 22-06-06
Из: Oxford, UK
Пользователь №: 18 282



Цитата(IC7K @ Jul 1 2009, 01:09) *
есть задача: поступают прямоугольные испульсы с частотой от 0 до 150 Гц и скважностью 2.
необходимо выдать подобные импульсы но с "плавной" регулировкой частоты (длительности) импульса/паузы и такой же скважностью в сторону увеличения длительности (уменьшения частоты)

Ваша задача распадается на две простые подзадачи: 1) измерение периода входного сигнала и 2) формирование меандра заданной частоты.

Вариантов решения подзадач - море...Лаптевых, ниже приведен самый простой.

Формируете меандр с помощью прерывания таймера по переполнению, в нём вы должны инвертировать выходной пин и загрузить новое значение полупериода. В основной программе непрерывно измеряете период входного сигнала и соответствующим образом корректируете период таймера.

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


--------------------
Делай сразу хорошо, плохо само получится
Go to the top of the page
 
+Quote Post
Dog Pawlowa
сообщение Jul 1 2009, 16:32
Сообщение #13


Гуру
******

Группа: Свой
Сообщений: 2 702
Регистрация: 14-07-06
Пользователь №: 18 823



Цитата(=GM= @ Jul 1 2009, 14:54) *
При определенной сноровке можно даже на си залудить.

Насмешил. А без сноровки? biggrin.gif


--------------------
Уходя, оставьте свет...
Go to the top of the page
 
+Quote Post
sigmaN
сообщение Jul 1 2009, 21:53
Сообщение #14


I WANT TO BELIEVE
******

Группа: Свой
Сообщений: 2 617
Регистрация: 9-03-08
Пользователь №: 35 751



Да.
А что мешает это сделать без _особой_ сноровки, просто на Си?
Или тут имелось ввиду знание Си в принципе? Ну тогда без вопросов ))))


--------------------
The truth is out there...
Go to the top of the page
 
+Quote Post
IC7K
сообщение Jul 2 2009, 00:05
Сообщение #15





Группа: Новичок
Сообщений: 9
Регистрация: 3-06-09
Из: Хабаровск
Пользователь №: 49 895



Цитата(=GM= @ Jul 1 2009, 15:54) *
Ваша задача распадается на две простые подзадачи: 1) измерение периода входного сигнала и 2) формирование меандра заданной частоты.

Вариантов решения подзадач - море...Лаптевых, ниже приведен самый простой.

Формируете меандр с помощью прерывания таймера по переполнению, в нём вы должны инвертировать выходной пин и загрузить новое значение полупериода. В основной программе непрерывно измеряете период входного сигнала и соответствующим образом корректируете период таймера.

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


В основной программе непрерывно измеряете период входного сигнала и соответствующим образом корректируете период таймера
а как его измерить? частота 16МГц, а таймер занят. а ведь считать то его нужно в единицах таймера получается

я по таймеру 16МГц/256=62500 считал длину импулься и тут же параллельно выдавал, и как бы получается так что все сдвигается и накладывается на входной, вобщем запутало меня все это.

вопрос о фазе не стоит. вот мой код - скажите где трабл wassat.gif

CODE
//==========START TIMER PROCESS=====================
Timer:
CLI

//заносим и выделяем бит скорости из порта С
IN PortCVal, PINC ;
ANDI PortCVal, 1<<InPortSyg

//выделяем предыдущее состояние бита из порта С
MOV temp1, Flags ;
ANDI temp1, 1<<InSygFlag

//копируем бит из порта С для проверки изменился ли он
MOV temp3, PortCVal
EOR temp3, temp1 ; проверяем изменился ли бит
//если изменился то пытаемся его продлить
BRNE DecDelay ;1x1=0(Z) 0x0=0(Z) 1x0=1 0x1=1
//после задержки инвертируем флаг сигнала
LDI temp3,1<<InSygFlag ;
EOR Flags, temp3

//вычисляем длительность нового импульса DelL_Next DelH_Next

CalNewDel:

MOV dd16uL, CtrL
MOV dd16uH, CtrH

//для упрощения задаем фиксированную задержку
LDI DelL_Next, $10
LDI DelH_Next, $00
//прибавляем к длительности импульса
ADD DelL_Next, CtrL
ADC DelH_Next, CtrH
//начнем подсчет заново
CLR CtrL
CLR CtrH

//ПРОДОЛЖИМ ВЫДАЧУ ИМПУЛЬСА
DecDelay:
DEC DelL_Cur
BRNE FollowCount
TST DelH_Cur
BRNE DecDelayH
//Задержка ЗАКОНЧИЛАСЬ, загружаем НОВУЮ
MOV DelL_Cur, DelL_Next
MOV DelH_Cur, DelH_Next
RJMP ActuateSyg
DecDelayH:
DEC DelH_Cur
RJMP FollowCount
//АКТУАЛИЗАЦИЯ ТОЛЬКО ПОСЛЕ ЗАДЕРЖКИ!!!!!
ActuateSyg:
//выделяем предыдущее состояние OutSyg из флага

MOV PortCVal, Flags
LDI temp3,1<<OutSygFlag ;
AND PortCVal, temp3
EOR PortCVal, temp3 ;
EOR Flags, temp3

//актуализация сигнала (изменение на обратный)
OUT PORTC, PortCVal //выдача импульса

FollowCount:
INC CtrL ; и увеличиваем общий счетчик импульсов
BRNE SetTimer
INC CtrH
BRNE SetTimer
//ограничиваем длину входного импульса
SER CtrL
SER CtrH ;Counter=$FFFF

SetTimer:

//предустановка периода таймера на 1 тик
LDI temp1, $FF ;загружаем старший байт
OUT TCNT1H, temp1 ; Старший байт пошел!
LDI temp1, $FE ;загружаем младший байт
OUT TCNT1L, temp1 ; Младший байт пошел!

RETI


Сообщение отредактировал IC7K - Jul 2 2009, 00:23
Go to the top of the page
 
+Quote Post

4 страниц V   1 2 3 > » 
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 22nd June 2025 - 10:11
Рейтинг@Mail.ru


Страница сгенерированна за 0.03014 секунд с 7
ELECTRONIX ©2004-2016