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

 
 
2 страниц V   1 2 >  
Reply to this topicStart new topic
> частотомер на PIC
akaGunner
сообщение Dec 2 2016, 15:19
Сообщение #1





Группа: Новичок
Сообщений: 2
Регистрация: 2-12-16
Пользователь №: 94 474



Добрый день.В общем навыков программирования на ассимблере у меня нет, но задача есть.
Разработать устройство для отображения на 3-разрядном семисегментном индикаторе информацию о частоте входного сигнала от 45.0 Гц до 65.0 Гц с разрешением 0.1 Гц.Форма сигнала синусоидальная с размахом от 1 до 4 вольт (постоянное смещение 2.5 в). Использовать динамическое управление.

В общем схему и номиналы резисторов мне изобразить удалось.Вопрос в том как написать алгоритм программы, по нему я думаю не очень сложно написать саму программу.Проблема состоит также в том что я не совсем понимаю сам принцип работы частотомера.как я понял значение частты мы получаем из выражения F=1/T.А сам период Т вычисляется как N*t, где t-время одного импульса а N-количество эти самых импульсов.В даташите на PIC18F2520 я вычитал что t=Fosc/делитель, я выбрал делитель 4 а Fosc 4 МГц, следовательно импульс равен 1 мкс, а вот с N проблема, чтобы их посчитать нужен период синусоиды моей не зная частоты, я прикинул что можно по положительному перепаду посчитать, т.е когда она значение 2.5 В первый раз пересекает в + и в конце аналогично, но как это реализовать не понимаю.
Прошу вашей помощи help.gif
Go to the top of the page
 
+Quote Post
ViKo
сообщение Dec 2 2016, 15:47
Сообщение #2


Универсальный солдатик
******

Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362



http://f6csx.free.fr/PROJETS/Fmetre/AN592.pdf
Глянул в листинг, мать моя мамочка, сколько строчек, из-за ассемблера, и я так писал когда-то, темный был...
Go to the top of the page
 
+Quote Post
Plain
сообщение Dec 2 2016, 17:16
Сообщение #3


Гуру
******

Группа: Участник
Сообщений: 6 776
Регистрация: 5-03-09
Из: Москва
Пользователь №: 45 710



Если кварц 4 МГц, то, например:

Входной сигнал подать на вход RA0 встроенного аналогового компаратора C1, а на его вход RA3 — середину питания, т.е. общую точку делителя из двух одинаковых резисторов 10 кОм.

Выход RA4 этого компаратора соединить со входом RC2 защёлки Таймера 1.

На вход предделителя на 8 Таймера 1 подать TCY (т.е. TMR1 будет тактоваться частотой 125 кГц), а его защёлку настроить на режим "Capture mode, every rising edge".

Настроить прерывание от защёлки Таймера 1.

650–450 это 200 чисел, с запасом 652–448, а защёлкиваемый диапазон, соответственно, от 1/(8 · 44,8E-6)=2790 до 1/(8 · 65,2E-6)= 1917.

Поэтому при заходе в прерывание считывать из CCPR1 защёлкнутое значение, вычитать из него крайние 1917 и делить на 4 (командой сдвига, разумеется).

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

Данные таблицы сгенерировать программой, минут за 5 написанной на любом удобном высокоуровневом языке.
Go to the top of the page
 
+Quote Post
Ruslan1
сообщение Dec 2 2016, 19:18
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 2 360
Регистрация: 6-03-06
Из: Кишинев
Пользователь №: 15 025



А зачем тут ассемблер?
Вам не нужно микросекундами врукопашную управлять. Используйте, как тут уже подсказали, Capture Mode, и напишите все полностью на Си. Тут не нужно ничего ассемблерного.


Цитата(ViKo @ Dec 2 2016, 17:47) *
http://f6csx.free.fr/PROJETS/Fmetre/AN592.pdf
Глянул в листинг, мать моя мамочка, сколько строчек, из-за ассемблера, и я так писал когда-то, темный был...

Ну, Вы тоже нашли что советовать, аппнот 20-летней давности, написанный для семечки с 25 байтами RAM. В таких камнях не по темности, а по нужде на ассемблере пишут.
ну и да, 20 лет назад и я на ассме еще писал sm.gif
Go to the top of the page
 
+Quote Post
VCO
сообщение Dec 2 2016, 19:36
Сообщение #5


Voltage Control Output
******

Группа: Свой
Сообщений: 4 598
Регистрация: 21-07-09
Из: Kursk
Пользователь №: 51 436



Цитата(Ruslan1 @ Dec 2 2016, 22:18) *
Ну, Вы тоже нашли что советовать, аппнот 20-летней давности, написанный для семечки с 25 байтами RAM.
...
ну и да, 20 лет назад и я на ассме еще писал sm.gif

"По Сеньке шапка". И грамотный пример для ТС.
Для измерения 50 Гц с такой точностью i7 не нужен.
И си шарп с джавою - тоже. Именно "тупой" MPASM)))


--------------------
Слово - не воробей, вылетит - не пощадит
Go to the top of the page
 
+Quote Post
ViKo
сообщение Dec 2 2016, 19:54
Сообщение #6


Универсальный солдатик
******

Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362



Цитата(Ruslan1 @ Dec 2 2016, 22:18) *
Ну, Вы тоже нашли что советовать, аппнот 20-летней давности, написанный для семечки с 25 байтами RAM. В таких камнях не по темности, а по нужде на ассемблере пишут.

А я по памяти. Там хитро складывают-вычитают импульсы. Раздел-то 8-битовых микроконтроллеров. И название темы. Писал для PIC16 уже и на C, Hi-Tech.
Go to the top of the page
 
+Quote Post
all_nik
сообщение Dec 5 2016, 15:27
Сообщение #7


Участник
*

Группа: Участник
Сообщений: 22
Регистрация: 17-05-09
Из: РБ
Пользователь №: 49 187



Вот Ваш диплом в готовом виде.
http://we.easyelectronics.ru/STM32/chastot...-stm32f10x.html
Go to the top of the page
 
+Quote Post
esaulenka
сообщение Dec 5 2016, 16:20
Сообщение #8


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

Группа: Свой
Сообщений: 1 032
Регистрация: 13-03-08
Из: Маськва
Пользователь №: 35 877



Вот интересно, кто-нибудь, кроме Plain, условия задачки читал?
Ни страдания на изиэлектрониксе, ни AN592 не подходят к задачке "измерить сигнал до 65 Гц с точностью 0.1 Гц".
Хотя мы всех условий не знаем, если обновлять показания можно раз в минуту, то прокатит.


--------------------
Тут обсуждается творческий порыв, а не соответствие каким-либо стандартам ©
Go to the top of the page
 
+Quote Post
VCO
сообщение Dec 5 2016, 17:20
Сообщение #9


Voltage Control Output
******

Группа: Свой
Сообщений: 4 598
Регистрация: 21-07-09
Из: Kursk
Пользователь №: 51 436



Цитата(esaulenka @ Dec 5 2016, 19:20) *
Вот интересно, кто-нибудь, кроме Plain, условия задачки читал?

Скорее всего Все читали. Я точно читал. Это троллинг?
Цитата(esaulenka @ Dec 5 2016, 19:20) *
Хотя мы всех условий не знаем, если обновлять показания можно раз в минуту, то прокатит.

При желании можно хоть раз в период обновлять. Кто-нибудь ограничивает в обвесе 8-битника?
Использование внутреннего/внешнего EEPROM/FLash не допускается? Использование CPLD - грех?

"Киса, скажите мне как художник - художнику: Вы рисовать умеете?" © biggrin.gif


--------------------
Слово - не воробей, вылетит - не пощадит
Go to the top of the page
 
+Quote Post
ViKo
сообщение Dec 5 2016, 17:56
Сообщение #10


Универсальный солдатик
******

Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362



Я не ответ предложил, а путь решения.
Go to the top of the page
 
+Quote Post
esaulenka
сообщение Dec 5 2016, 18:58
Сообщение #11


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

Группа: Свой
Сообщений: 1 032
Регистрация: 13-03-08
Из: Маськва
Пользователь №: 35 877



Цитата(VCO @ Dec 5 2016, 20:20) *
При желании можно хоть раз в период обновлять. Кто-нибудь ограничивает в обвесе 8-битника?
Использование внутреннего/внешнего EEPROM/FLash не допускается? Использование CPLD - грех?

Как по мне, куда больший троллинг - предложения си-шарпа, явы, каких-то EEPROM/Flash/CPLD.
Тут нужен любой контроллер. Лю-бой. Если автора этой темы учили PIC18Fxxxx - пусть на нём и делает. Умеет Core-i7 - пусть делает на i7.

Цитата(VCO @ Dec 5 2016, 20:20) *
"Киса, скажите мне как художник - художнику: Вы рисовать умеете?" © biggrin.gif

Да уж куда мне.
Когда мне год назад понадобилось измерять частоту (десяток-другой Гц), я взял и сделал. Без электроникса, увы - тут последние годы флуда ну совсем много стало...


--------------------
Тут обсуждается творческий порыв, а не соответствие каким-либо стандартам ©
Go to the top of the page
 
+Quote Post
Guest_TSerg_*
сообщение Dec 5 2016, 19:17
Сообщение #12





Guests






Цитата(esaulenka @ Dec 5 2016, 21:58) *
я взял и сделал. Без электроникса,

И, как профи- по другому решают?
Эл-ха - это последняя истина?
Go to the top of the page
 
+Quote Post
ViKo
сообщение Dec 5 2016, 19:26
Сообщение #13


Универсальный солдатик
******

Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362



Топикстартер вместо "взял и сделал" пошел другим путем, более затратным, но менее интересным. sm.gif
https://electronix.ru/forum/index.php?showtopic=139082
Go to the top of the page
 
+Quote Post
ar__systems
сообщение Dec 6 2016, 14:43
Сообщение #14


self made
****

Группа: Свой
Сообщений: 855
Регистрация: 7-03-09
Из: Toronto, Canada
Пользователь №: 45 795



Как вообще людям не стыдно такие простейшие задачи спрашивать как решать? Меряешь время между positive edges и делишь чтобы получить частоту. Для нужной точности нужно разрешение всего в 20 uS. Достигается тривиально.

Где такие олухи учатся, мне интересно?
Go to the top of the page
 
+Quote Post
VCO
сообщение Dec 6 2016, 16:39
Сообщение #15


Voltage Control Output
******

Группа: Свой
Сообщений: 4 598
Регистрация: 21-07-09
Из: Kursk
Пользователь №: 51 436



Цитата(esaulenka @ Dec 5 2016, 21:58) *
Как по мне, куда больший троллинг - предложения си-шарпа, явы, каких-то EEPROM/Flash/CPLD.

Дык во внутреннюю EEPROM или FLASH PIC18 можно зашить дешифратор двоичного кода в код семисегментного индикатора, равно как и в CPLD. В последнем случае разгружаем МК от рутины и перегрузке по току.
Цитата
Тут нужен любой контроллер. Лю-бой. Если автора этой темы учили PIC18Fxxxx - пусть на нём и делает. Умеет Core-i7 - пусть делает на i7.

Дык вообще ничего не умеет и не понимает, надо начинать с основ основ.
Частотомер - это одно, отображение - другое. Надо было выяснять постепенно.
Но теперь уже ничего не надо...
Цитата
Да уж куда мне.
Когда мне год назад понадобилось измерять частоту (десяток-другой Гц), я взял и сделал. Без электроникса, увы - тут последние годы флуда ну совсем много стало...

Что есть флуд, а что не флуд - не так уж легко понять.
В данном случае ТС оказался в роли флудера, а флудеры - в роли модеров wink.gif


--------------------
Слово - не воробей, вылетит - не пощадит
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 19th July 2025 - 20:05
Рейтинг@Mail.ru


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