Регистрация | Вход
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
Страница 3 из 3«123
Модератор форума: demanik 
Форум Picbasic.ru » Программирование МК » Proton PicBasic » Частотомер (скважность и прочее и прочее и прочее)
Частотомер
доцент2 Дата: Ср, 05.07.2017, 20:41  |                                                                                                                Сообщение # 31
Группа: Проверенные
Ранг:  Помогаю всем
Сообщений: 342
Репутация: 1   ±
Замечания:   ±
На сайте с 13.09.2011

Статус: Offline

Добавлено (05.07.2017, 20:41)
---------------------------------------------
bulat, Вы не могли бы пояснить как работает Ваш расчет на пример при частоте 1кГц и 50МГц.
TMR1ON=1
Asm
; Задержка 400 машинных циклов
; Длительность задержки 400 микросекунд
; Частота задающего генератора 4 МГц
Movlw       .133
Movwf       Reg_1
delay       Decfsz      Reg_1,F
GoTo        delay
EndAsm

TMR1ON=0
a = TIMER1    ; измеряем за 400 микросекунд
a=a*1000         'столько ожидаем за 1 сек
a=a/65535       'и должен переполниться а раз

TIMER1 = 0
TMR1ON=1
Asm
; Задержка 400 000 машинных циклов
; Длительность задержки 400 миллисекунд
; Частота задающего генератора 4 МГц
Movlw       .119
Movwf       Reg_1
Movlw       .8
Movwf       Reg_2
Movlw       .3
Movwf       Reg_3
delay1       Decfsz      Reg_1,F
GoTo        delay1
Decfsz      Reg_2,F
GoTo        delay1
Decfsz      Reg_3,F
GoTo        delay1
EndAsm
TMR1ON=0
'"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
j=65536*a
j=j+TIMER1
Print At 1, 1, "frequency:    "
b=j/100

Сообщение отредактировал доцент2 - Ср, 05.07.2017, 20:42
ЯНДЕКС Дата: 05.07.2017
доцент2 Дата: Вс, 23.07.2017, 13:42  |                                                                                                                Сообщение # 32
Группа: Проверенные
Ранг:  Помогаю всем
Сообщений: 342
Репутация: 1   ±
Замечания:   ±
На сайте с 13.09.2011

Статус: Offline

В ходе пыток TMR1 pic18f252 (pin11) получил частотомер (спасибо ivan_fd). Кварц мк 20МГц. Измеряет нормально.
Подскажите, можно ли с помощью данного входа измерить длительность импульса и паузы (в диапазоне частот от 40Гц до 60МГц), что бы посчитать скважность? Если да, то нужен алгоритм.
T = t + tau (t - длительн. импульса tau - длит. "паузы")
S = T / t (S - скважность)
В дальнейшем планирую использовать 18f26k22 (набралась маленькая кучка, с десяток) с кварцем 16Мгц и внутренним умножителем до 64МГц.
Прикрепления: 9158613.jpg(107Kb)

Сообщение отредактировал доцент2 - Вс, 23.07.2017, 14:29
ivan_fd Дата: Пн, 24.07.2017, 15:03  |                                                                                                                Сообщение # 33
Группа: Модераторы
Ранг:  Специалист
Сообщений: 911
Репутация: 50   ±
Замечания:   ±
На сайте с 12.01.2009

Статус: Offline

С помощью данного входа не получится.

Меня все время преследуют умные мысли...но я быстрее!!!
xvovanx Дата: Пн, 24.07.2017, 16:37  |                                                                                                                Сообщение # 34
Группа: Проверенные
Ранг:  Помогаю всем
Сообщений: 281
Репутация: 12   ±
Замечания:   ±
На сайте с 02.05.2013

Статус: Offline

Цитата доцент2 ()
измерить длительность импульса и паузы ... что бы посчитать скважность

Думаю для этого лучше использовать входы внешних прерываний INT0, INT1. В 18 серии можно выставить регистрами внешние прерывания по фронтам (0-1 и 1-0). Сигнал подать сразу на оба входа. На первом входе зафиксируем фронт 0-1, на втором спад - можно определить длительность импульса. И далее зафиксировав опять фронт - определяем паузу.
доцент2 Дата: Пн, 24.07.2017, 20:27  |                                                                                                                Сообщение # 35
Группа: Проверенные
Ранг:  Помогаю всем
Сообщений: 342
Репутация: 1   ±
Замечания:   ±
На сайте с 13.09.2011

Статус: Offline

Т.е., как только пришел сигнал 0-1 происходит прерывание и запускаем внутренний таймер TMR0 или TMR1 до прихода спада 1-0 надо подсчитать сколько натикает в таймере.
А при частоте сигнала близкой или более частоты генератора МК как быть? Или я чего-то не понимаю.
xvovanx Дата: Чт, 27.07.2017, 13:54  |                                                                                                                Сообщение # 36
Группа: Проверенные
Ранг:  Помогаю всем
Сообщений: 281
Репутация: 12   ±
Замечания:   ±
На сайте с 02.05.2013

Статус: Offline

Цитата доцент2 ()
А при частоте сигнала близкой или более частоты генератора МК как быть?

Если сигнал соизмерим с тактом микропросессора, тут уже без внешних делителей не обойтись.
доцент2 Дата: Ср, 23.08.2017, 17:12  |                                                                                                                Сообщение # 37
Группа: Проверенные
Ранг:  Помогаю всем
Сообщений: 342
Репутация: 1   ±
Замечания:   ±
На сайте с 13.09.2011

Статус: Offline

Цитата xvovanx ()
тут уже без внешних делителей не обойтись.
Хотелось бы получать не только частоту, но и скважность сигнала во всем диапазоне измерения. Информативность была бы лучше.

Сообщение отредактировал доцент2 - Ср, 23.08.2017, 17:22
Форум Picbasic.ru » Программирование МК » Proton PicBasic » Частотомер (скважность и прочее и прочее и прочее)
Страница 3 из 3«123
Поиск: