Контроль частоты
- sheva_s
- Грызет канифоль
- Сообщения: 256
- Зарегистрирован: Пт апр 27, 2007 14:32:48
- Откуда: Украина Кривой Рог
- Контактная информация:
Контроль частоты
Всем привет нужно создать девайс который будет мерять частоту и при превышении какого то установленного предела выдавать звуковой сигнал. Планирую сделать на тини13 или тини2313 если не хватит памяти. Максимальная измеряемая частота составляет около 60-70 гц. Подскажите какой алгоритм работы программы должен быть а то что то на ум нечего не лезет ? Как правильно измерять время периода импульса ? Хочу через измерение времени между импульсами сделать что бы было точнее.
- Реклама
Re: Контроль частоты
nox<Fo/Fx, где
Fo-частота тактирования таймера
Fx-задаваемая пользователем пороговая частота
nox-число тиков таймера за период Fx
Если за период измеряемой частоты таймер насчитает меньше nox, то порог превышен.
Fo-частота тактирования таймера
Fx-задаваемая пользователем пороговая частота
nox-число тиков таймера за период Fx
Если за период измеряемой частоты таймер насчитает меньше nox, то порог превышен.
-
aleksandr-zh
- Сверлит текстолит когтями
- Сообщения: 1278
- Зарегистрирован: Пн июн 18, 2007 21:51:20
Re: Контроль частоты
использовать режим ICP (если в АВР)
вот реальная программа измерения частоты 50 Гц
(не показан режим преобразования данных на индикатор...)
вот реальная программа измерения частоты 50 Гц
(не показан режим преобразования данных на индикатор...)
Код: Выделить всё
$regfile = "2313def.dat" ' Частотомер 50.00 Герц компилятор BASCOM
$crystal = 4000000 ' кварц !!!
In_hertz Alias Pind.6
Led7_segm1 Alias Portd.4 ' Автор: Данилин Александр
Led7_segm2 Alias Portd.3 ' 2011-11 Для Эл.сетей города
Led7_segm3 Alias Portd.1
Led7_segm4 Alias Portd.0
Led_port Alias Portb
Const Indikator_cikl = 10 ' Сколько раз будет прорисовываться значение индикаторе
Const Indikator_delay = 5 ' Влияет на яркость свечения. Делать в пределах 3-5.
Declare Sub Byte2led(data_2byte As Word)
Dim Tempb As Byte , Data_2byte As Word , Tempw As Word
Dim Data_1 As Byte , Data_2 As Byte , Data_3 As Byte , Data_4 As Byte
Config Portb = Output : Portb = 255
Config Pind.6 = Input
Config Timer1 = Timer , Prescale = 8 , Capture Edge = Rising
On Capture1 Captmr
Enable Capture1
Enable Interrupts ' разрешаем прерывания и включаем таймер
Config Watchdog = 1024 : Start Watchdog ' защита от зависания
' ===== С Т А Р Т =======
Start_main_prog:
Timercounter = 25000000 \ Timercounter
Data_2byte = Timercounter
Call Byte2led(data_2byte)
Led_data_1 = Data_1 ' преобразуем в данные для индикатора
Led_data_2 = Data_2 ' преобразуем в данные для индикатора
Led_data_3 = Data_3 ' преобразуем в данные для индикатора
Led_data_4 = Data_4 ' преобразуем в данные для индикатора
Goto Print7seg
' =====================
Captmr: ' Считаем импульсы, как-бы наполняем пачками между импульсами
Timercounter = Capture1
Timer1 = 0
Return
' ============ Выводим 4 числа на 7-сегм. индикатор ==========
.......
