MicroCHIP.RU
Главная Документация Отладочные средства Справочник Поиск Ссылки Цены
 Новости   Конференция   Как нас найти? 

Представляем новую линейку продуктов, поставляемых ООО "Микро-Чип":
Источники питания

Блоки  питания


 

Синхронизация импульсов???

 Нoвaя темa  |  Наверх  |  Перейти к теме  |  Поиск  |  Правила  |  Вход 

ВНИМАНИЕ!
Вы просматриваете архив форума.

Этот форум работает только в режиме просмотра и поиска.

Действующий форум переведен на новый движок и
находится по адресу www.microchip.su

 Синхронизация импульсов???
Автор: Роман (62.118.147.---)
Дата:   14/04/2004 18:33

Подскажите пожалуйста, как лучше сделать синхронизвцию.
Пишу программу для 16с54 на вход поступають импульсы с частотой в 50гц.
Высокий уровень 50ms, затем низкий 50ms. Так вод надо с началом импульсов выдавать
сигнал,
как лучше это сделать. Частота работы процессора 1Мгц, фронт спада наростания
импульса около 500um
Я сделал набросок программы, но как-то не очень хорошо это работает,
наблюдаеться дрожание выходного импульса, такое впечатление что где-то идёт
рассинхронизация сигнала.

Во кусочек программы:


START:	

loopHI:	btfsc	PORTB, 4	; определение импульма наростания
	goto	loopHI

	movlw	.XX		; Задержка в 500us
	call	Delay

	btfss	PORTB, 4
	goto	loopHI

	; вывод данных
	XXXXXX
	XXXXXX

	; определение импульса спада	

loopLO:	btfss	PORTB, 4	; определение импульма наростания
	goto	loopLO

	movlw	.XX		; Задержка в 500us
	call	Delay

	btfsc	PORTB, 4
	goto	loopLO


	; вывод данных
	XXXXXX
	XXXXXX


	goto	START



Как можно это сделать получше или красивее, и почкму наблюбаеться дрожание вых.
сигнала,
мне кажеться что определение фронтов иногда запаздывает или наобород раньше
срабатывает.


 
 Re: Синхронизация импульсов???
Автор: mnc (62.205.183.---)
Дата:   14/04/2004 19:14

на память не уверен, но помоему надо на тр. шмиттовый вход подавать сигнал. у меня дрожание было
на f876 когда на PORTB с оптрона 50гц подавал. а потом кинул на RA4 сразу полегчало.


 
 Re: Синхронизация импульсов???
Автор: Роман (62.118.143.---)
Дата:   14/04/2004 19:53

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


 
 почему дрожит?
Автор: Vova (195.131.84.---)
Дата:   14/04/2004 20:06

так понятно почему.
Роман писал(а):
>
> START:	
> loopHI:	btfsc	PORTB, 4	; 
определение импульма наростания
> 	goto	loopHI
> 
> 	movlw	.XX		; Задержка в 500us
> 
	call	Delay
> 
> 	btfss	PORTB, 4
> 	goto	loopHI
> 
> 	; вывод данных
> 	XXXXXX
> 
	XXXXXX
> 


если уберешь задержку - дрожание пропадет. хочешь подтверждения? иначе
делать надо, но и тогда дрожание будет плюс-минус время на подтверждение.


 
 Re: почему дрожит?
Автор: mnc (195.14.54.---)
Дата:   14/04/2004 20:24

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


 
 Re: почему дрожит?
Автор: Роман (62.118.142.---)
Дата:   14/04/2004 20:58

Я тоже пришёл к выводу что дрожание происходит из-за задержки, но фронт
спада/нарастания импульса большой окло 500us впринципе это я взял с запасом, так он
немного меньше, то-есть за это время будет чёткий 0 или 1. А как ещё можно поймать
переход фронта. Чтобы вывести импульсы пока он держиться в 0 или 1.


 
 прошивка 16с54а
Автор: magalex (212.179.104.---)
Дата:   15/04/2004 01:44

подскажите попутно-мне дали на один день пик16с54а с одной милой прошивкой(ломает
платные кабельные каналы),попросили выяснить можно-ли переписать..-вставляю в
программатор для 16ф84-считываются все байты фффф..документацию скачать не удалось-
говорят страница отсутствует..-может мне ножки какие перекинуть чтобы её
прочитать?..


 
 Re: Синхронизация импульсов???
Автор: fanton (80.95.35.---)
Дата:   15/04/2004 03:04

ст. 273.


 
 Re: Синхронизация импульсов???
Автор: magalex (168.37.235.---)
Дата:   15/04/2004 03:13

в даташите по 16с54а такой нет..:(


 
 Re: Синхронизация импульсов???
Автор: fanton (80.95.35.---)
Дата:   15/04/2004 04:59

Зато есть в УК РФ


 
 off!
Автор: mnc (62.205.183.---)
Дата:   15/04/2004 08:43

Но порыться можно в инете(eng). Я как то раз нашел как пик сломать. Этот бит конфигурации по
защите кода. Но тут есть проблема - чтобы попытаться, надо несколько пиков пробовать -
некоторые горят, а некоторые открываются... :( Что то там надо вроде 12В кудато подать...
короче я не стал пробовать. А вот например инженеры в КБ по разработке пиков наверняка знают -
ты им взятку предложи... ;) Но если что - я ничего не говорил... ;))).


 
 Re: почему дрожит?
Автор: mnc (62.205.183.---)
Дата:   15/04/2004 09:01

мне както раз надо было привязатся к началу импульса. ловился он откровенно плохо. и я сделал
таймер, который синхронизировался по дрожащим точкам, период таймера задавался каждый проход,но
усредненно по времени, поетому он крутился с привязкой к фронтам и не дрожал. А данные я
передавал по конкретному значению таймера, соответственно я мог ловить любую точку периода. это
называется математическое ожидание. А зачем вообще если не секрет так точно ловить начало 50Гц
фронта? Но принцип здесь имхо только один - усреднять полученные значения времени - частота то
не меняется.


 
 Re: почему дрожит?
Автор: Zemfir (81.195.173.---)
Дата:   15/04/2004 09:02

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


 
 Re: почему дрожит?
Автор: Zemfir (81.195.173.---)
Дата:   15/04/2004 09:05

Zemfir писал(а):

> можно сделать программный триггер. типа если в течении 100 мкс
> 10 раз на
входе 1,


т.е. например, 10 раз чрез 10 мкс идёт опрос вывода.


 
 особенночти считывания
Автор: magalex (168.37.235.---)
Дата:   15/04/2004 12:40

Мне не нужно ломать-возможно в ней бит защиты и не стоит(с битом считываются нули-а
у меня ffff)-может кто знает в чём особенности читания и прошивки этого камня-и
почему он не читается на месте pic16c84-если ноги совпадают?..


 
 Re: особенночти считывания
Автор: mnc (62.205.183.---)
Дата:   15/04/2004 18:28

а ICSP он не поддерживает?


 
 Re: НЯНАЕММНВРХ ЯВХРШБЮМХЪ
Автор: AL (195.5.2.---)
Дата:   15/04/2004 21:32

>юБРНП: magalex (168.37.235.---)
>дЮРЮ: 15/04/2004 12:40
>
>лМЕ МЕ МСФМН КНЛЮРЭ-БНГЛНФМН Б МЕИ АХР ГЮЫХРШ Х МЕ ЯРНХР(Я АХРНЛ ЯВХРШБЮЧРЯЪ МСКХ-
Ю
>С ЛЕМЪ ffff)-ЛНФЕР ЙРН ГМЮЕР Б В?Л НЯНАЕММНЯРХ ВХРЮМХЪ Х ОПНЬХБЙХ ЩРНЦН ЙЮЛМЪ-Х
>ОНВЕЛС НМ МЕ ВХРЮЕРЯЪ МЮ ЛЕЯРЕ pic16c84-ЕЯКХ МНЦХ ЯНБОЮДЮЧР?..
;
;
мЕЙНППЕЙРМН Б ВСФНИ БНОПНЯ БЛЕЬХБЮРЭЯЪ...
;
щРНР РБНИ 16Я54Ю ОЮПЮКЕКЭМНЦН ОПНЦПЮЛЛХПНБЮМХЪ, Ю 16Я84 ОНЯКЕДНБЮРЕКЭМНЦН.
бЯЕ ОХМШ ОПНЦПЮЛХПНБЮМХЪ МХФЕ, ПЮГАХПЮИЯЪ.
бОНКМЕ БНГЛНФМН ВРН НМ Я ГЮЫХРНИ...
;
;
 
FIGURE 2-2: CONFIGURATION WORD FOR PIC16C52/C54/C54A/C55/C56/C57/C58A
? ? ? ? ? ? ? ? CP WDTE FOSC1 FOSC0 Register: CONFIG
Address: FFFh bit11 10 9 8 7 6 5 4 3 2 1 bit0
bit 11-4: Unimplemented: Read as ?0?
bit 3: CP: Code protection bit.
1 = Code protection off
0 = Code protection on
bit 2: WDTE: Watchdog timer enable bit (not implemented on PIC16C52)
1 = WDT enabled
0 = WDT disabled
bit 1-0: FOSC1:FOSC0: Oscillator selection bits(2)
11 = RC oscillator
10 = HS oscillator
01 = XT oscillator
00 = LP oscillator
Note: PIC16C52 supports XT and RC oscillator only.
PIC16LV54A supports XT, RC and LP oscillator only.
PIC16LV58A supports XT, RC and LP oscillator only.
;
;
PIN DESCRIPTIONS (DURING PROGRAMMING): PIC16C52/54/54A/54B/55/56/57/58A/58B
During Programming
Pin Name Pin Type Pin Description
T0CKI PROG/VER I Program pulse input/verify pulse input
RA0 - RA3 D0 - D3 I/O Data input/output
RB0 - RB7 D4 - D11 I/O Data input/output
OSC1 INCPC I Increment Program Counter input
MCLR/VPP VPP P Programming Power
VDD VDD P Power Supply
VSS VSS P Ground

;
г.ш. мС ЕЯКХ,БЯЕ РЮЙХ, ЯВХРЮЕЬЭ ОПНЬХБЙС ЛНФЕР ОНДЕКХЬЯЪ, ЕЯКХ МЕ Б КНЛ,
ХМРЕПЕЯМН ОНЦКЪДЕРЭ МЮ ЩРН ВСДН.


 
 Re: НЯНАЕММНВРХ ЯВХРШБЮМХЪ
Автор: magalex (212.179.104.---)
Дата:   16/04/2004 01:31

извиняюсь что влез-хотел попутно спросить чтобы новую тему не открывать-раз уж речь
зашла..

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

на счёт прошивки-выложил-бы-но я не из России-у нас свой способ-платные фильмы
транслируются без синхронизации и на экране всё мелькает-а если уплатить-посылается
какой-то код в кабель -моя коробку-приёмник распознаёт это, синхронизация
примешивается к видео(судя по всему)-картинка стабилизируется..
видимо пик как-то высчитывает синхроимпульсы из общего сигнала и добавляет его к
видео..


 
 Re: Синхронизация импульсов???
Автор: Banderas (193.233.48.---)
Дата:   16/04/2004 10:10

Точно не помню, есть ли у с54 прерывание RBIF, но если есть я бы использовал его.


 
 Re: Синхронизация импульсов???
Автор: Igor_N (195.58.30.---)
Дата:   16/04/2004 10:36

Banderas писал(а):

> Точно не помню, есть ли у с54 прерывание RBIF, но если есть я
> бы использовал его.
Смешно! там воще нету прерываний и стек на 2 уровня.


 
 Re: Синхронизация импульсов???
Автор: AL (195.5.2.---)
Дата:   16/04/2004 17:02

Роман может Вам "смотреть на PORTB, 4 " не 250000/3 ~ 80 тыс.раз в сек, а через
каждые,
например 130 мкс.
Кстате :
loopHI: btfsc PORTB, 4 ; определение импульма наростания
goto loopHI
или у меня глюки (или непонял Вашего вопроса и условий роботы ПИКа) или тут не
правильно.
Это похоже на "если на PORTB, 4 лог "1" перейти на метку loopHI, иначе дальше".
Т.е. в момент старта программы на PORTB, 4 уже лог "1" и ВЫ ловите спад импульса
(на сколько Я понял из начального вопроса надо ловить передний фронт импульса).
>START:
>
>loopHI: btfsc PORTB, 4 ; если на PORTB, 4 лог "1" то перейти на метку
loopHI, иначе дальше
> goto loopHI
> movlw .XX ; Задержка в 500us
> call Delay
> btfss PORTB, 4 ; а тут если на PORTB, 4 лог "0" то перейти на
метку loopHI
> goto loopHI
> ; вывод данных
> XXXXXX
> XXXXXX
> ; определение импульса спада
>loopLO: btfss PORTB, 4 ; определение импульма наростания
> goto loopLO
> movlw .XX ; Задержка в 500us
> call Delay
> btfsc PORTB, 4
> goto loopLO
> ; вывод данных
> XXXXXX
> XXXXXX
> goto START

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





Горячие темы на нашем форуме:
Отдел продаж: тел. (495) 223-2339 sales@microchip.ru   Skype:microchip-moscow
Rambler's Top100