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

 
 
> Увеличение Длины Поступающих Импульсов, поступил импульс длительностью 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
 
Start new topic
Ответов
=GM=
сообщение Jul 1 2009, 11:54
Сообщение #2


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
IC7K
сообщение Jul 2 2009, 00:05
Сообщение #3





Группа: Новичок
Сообщений: 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
Палыч
сообщение Jul 2 2009, 06:08
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 2 399
Регистрация: 10-05-06
Из: г. Новочеркасск
Пользователь №: 16 954



Цитата(IC7K @ Jul 2 2009, 03:05) *
вопрос о фазе не стоит. вот мой код - скажите где трабл wassat.gif
Трабл - всё в том же... Вы, наверное, не внимательно читаете ответы... Вам уже сколько твердили, что не нужно удлиннять импульс. Нужно сгенерить сигнал частотою Fвых=Fвх/К. Запустите два таймера: одним будете определять частоту входного сигнала, другой таймер - в режим генерации частоты (CTC mode, OCn toggle). После определения частоты входного сигнала (методов много - в зависимости от задачи: точности, быстродействия - поищите, это не раз обсуждалось), у второго таймера меняют значения регистров для изменения частоты выходного сигнала.

P.S. Извиняюсь... Невнимательно посмотрел: что такое коеффициент К. Выходная частота Fвых=Fвх*К/(K+1)
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- IC7K   Увеличение Длины Поступающих Импульсов   Jul 1 2009, 02:09
- - AnV22   Цитата(IC7K @ Jul 1 2009, 08:09) поступаю...   Jul 1 2009, 02:42
- - domowoj   Как соотносятся входная и выходная частоты?   Jul 1 2009, 02:49
- - dimka76   Цитата(IC7K @ Jul 1 2009, 06:09) необходи...   Jul 1 2009, 04:49
- - domowoj   IC7K А чем "К" будете задавать?   Jul 1 2009, 04:54
- - Dog Pawlowa   Цитата(IC7K @ Jul 1 2009, 05:09) голову с...   Jul 1 2009, 06:32
- - IC7K   Скважность 1 это пауза равна импульсу по длительно...   Jul 1 2009, 06:38
|- - dimka76   Цитата(IC7K @ Jul 1 2009, 10:38) Скважнос...   Jul 1 2009, 06:49
||- - ATLab   ЦитатаСкважность 1 это пауза равна импульсу по дли...   Jul 2 2009, 04:48
||- - IC7K   можно вынести в отдельную ветку и там выяснить что...   Jul 2 2009, 05:33
|||- - ATLab   Цитата(IC7K @ Jul 2 2009, 15:33) а что мо...   Jul 2 2009, 05:44
|||- - IC7K   что еще непонятного? если кому то мой вопрос неясе...   Jul 2 2009, 05:53
|||- - Dog Pawlowa   Цитата(IC7K @ Jul 2 2009, 08:53) что еще ...   Jul 2 2009, 06:38
||- - dimka76   Цитата(ATLab @ Jul 2 2009, 08:48) другой ...   Jul 2 2009, 06:49
|||- - Палыч   To IC7K Если у Вас всё ещё остались вопросы, то р...   Jul 2 2009, 07:11
||- - Tanya   Цитата(ATLab @ Jul 2 2009, 08:48) Куда ка...   Jul 2 2009, 13:04
||- - ATLab   Цитата(Tanya @ Jul 2 2009, 23:04) А сами-...   Jul 2 2009, 13:52
||- - Tanya   Цитата(ATLab @ Jul 2 2009, 17:52) Понятие...   Jul 2 2009, 14:26
||- - Dog Pawlowa   Цитата(Tanya @ Jul 2 2009, 17:26) Однако,...   Jul 2 2009, 17:58
|- - Dog Pawlowa   Цитата(IC7K @ Jul 1 2009, 09:38) может эт...   Jul 1 2009, 07:39
- - Alex11   Поскольку входная и выходная частоты разные, то во...   Jul 1 2009, 07:07
|- - domowoj   Цитата(Alex11 @ Jul 1 2009, 14:07) Поскол...   Jul 1 2009, 10:41
|- - Dog Pawlowa   Цитата(=GM= @ Jul 1 2009, 14:54) При опре...   Jul 1 2009, 16:32
||- - ATLab   Цитата(Палыч @ Jul 2 2009, 16:08) ... Нев...   Jul 2 2009, 07:24
|- - =GM=   Цитата(IC7K @ Jul 1 2009, 23:05) В основн...   Jul 2 2009, 12:33
|- - IC7K   блин я уже пожалел что применил умное слово скважн...   Jul 2 2009, 23:19
|- - ATLab   Цитата(IC7K @ Jul 3 2009, 09:19) любой ча...   Jul 3 2009, 00:56
|- - domowoj   Цитата(IC7K @ Jul 3 2009, 06:19) блин я у...   Jul 3 2009, 01:54
|- - =AK=   Цитата(IC7K @ Jul 3 2009, 08:49) у меня а...   Jul 3 2009, 04:10
- - sigmaN   Да. А что мешает это сделать без _особой_ сноровки...   Jul 1 2009, 21:53
- - akl   Здравствуйте. Можно сделать так -"навечно...   Jul 2 2009, 03:27
|- - domowoj   Цитата(akl @ Jul 2 2009, 10:27) Здравству...   Jul 2 2009, 14:01
- - ATLab   RE: Увеличение Длины Поступающих Импульсов   Jul 2 2009, 06:07
- - domowoj   Ребята, не спорьте! http://ru.wikipedia.org/wi...   Jul 2 2009, 17:52
|- - Tanya   Цитата(domowoj @ Jul 2 2009, 21:52) Ребят...   Jul 2 2009, 18:24
|- - ATLab   Цитата(Tanya @ Jul 3 2009, 04:24) Так там...   Jul 2 2009, 22:17
|- - Tanya   Цитата(ATLab @ Jul 3 2009, 02:17) P.S. Ст...   Jul 3 2009, 03:22
|- - domowoj   Цитата(Tanya @ Jul 3 2009, 10:18) Зря Вы ...   Jul 3 2009, 03:25
|- - Tanya   Цитата(domowoj @ Jul 3 2009, 07:25) В люб...   Jul 3 2009, 05:43
|- - ATLab   ЦитатаИХМО, для того что бы начать составлять рабо...   Jul 3 2009, 07:23
|- - dimka76   Цитата(ATLab @ Jul 3 2009, 11:23) у Вас к...   Jul 3 2009, 08:46
|- - =AK=   Цитата(dimka76 @ Jul 3 2009, 18:16) Как р...   Jul 3 2009, 09:58
|- - rezident   Цитата(dimka76 @ Jul 3 2009, 14:46) Как р...   Jul 3 2009, 10:51
- - tyro   ИХМО, для того что бы начать составлять работающий...   Jul 3 2009, 04:32
- - GDI   Если скважность всегда постоянная, то зачем мерять...   Jul 3 2009, 07:31
- - ATLab   Ох не зря я сетовал на образование: почитайте опре...   Jul 3 2009, 11:12
|- - dimka76   Цитата(ATLab @ Jul 3 2009, 15:12) физики,...   Jul 3 2009, 11:25
||- - rezident   Цитата(dimka76 @ Jul 3 2009, 17:25) вот и...   Jul 3 2009, 12:53
||- - singlskv   Цитата(rezident @ Jul 3 2009, 16:53) А ес...   Jul 3 2009, 20:58
|- - =AK=   Цитата(ATLab @ Jul 3 2009, 20:42) объясни...   Jul 4 2009, 00:21
|- - ATLab   Цитата(=AK= @ Jul 4 2009, 10:21) .. на дв...   Jul 4 2009, 03:11
- - mdmitry   Уважаемые участники дискуссии! НЕ ПОРА ЛИ ОСТА...   Jul 3 2009, 13:57
- - IC7K   большое спасибо всем за ответы, буду пытаться иска...   Jul 7 2009, 22:26
- - Herz   Цитата(ATLab @ Jul 3 2009, 09:23) Tanya, ...   Jul 8 2009, 08:24
- - IC7K   помогла программа VLAB код заработал   Jul 12 2009, 05:19


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

 


RSS Текстовая версия Сейчас: 26th June 2025 - 01:12
Рейтинг@Mail.ru


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