0 / 0 / 0
Регистрация: 02.03.2013
Сообщений: 163
1

Как посчитать кол-во импульсов в минуту.

07.03.2013, 01:26. Показов 12657. Ответов 13
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте. Я глубоко начинающий в МК, просьба сильно не пинать.

История такая, надо определить кол-во импульсов в минуту, после чего запустить генерацию такой же частоты.

Если со 2ым мне все более и менее понятно, то с 1ым шагом затор.

Что приходит на ум, повесить на таймер часовой кварц, брать кол-во тактов от импульса до импульса, делить на 32768(получим доли секунды) 60 делить на получившееся число.

Но вот тут у меня и начались проблемы. Начиная с того что на моем ATTiny25 нет операции умножения, деления. В добавок оперировать придется числами с запятой, да и больше 255. Собственно коллапс. Помогите.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
07.03.2013, 01:26
Ответы с готовыми решениями:

как посчитать количество импульсов в saleae?
может, кто сталкивался с подобной задачей? импульсы с меняющимся периодом/частотой - нужно...

Составить код расчет кол-во бактерий в минуту
Каждая бактерия делится на две в течение одной минуты. В начальный момент времени имеется одна...

Посчитать кол-во отрицательных и кол-во положительных элементов массива. Вывести массив на экран
Дан массив 5x5, заполнен случайными числами от -10 до 10. Посчитать кол-во отрицательных и кол-во...

Посчитать кол-во чисел со всевозможными кол-вами делителей
Вводится диапазон, например, от 0 до 1 000 000 Вывод Количество чисел с 1 делителем: 1...

13
Juk_1976
07.03.2013, 01:37 2
Никого не нужно вешать (за это садят). ничего не нужно делить (ни с кем). Операции умножения/деления есть всегда а именно "*" и "/" (реализованы до Вас). Почитайте книжки например ""Микроконтроллеры AVR" - Евстифеев А.В. (2008)". Потом возвращайтесь. :)
Juk_1976
07.03.2013, 01:41 3
А если серьёзно, то настраиваете таймер на прерывание например на 1раз/сек и отсчитываете 60 сек (или считаете импульсы за сек и умножаете на 60 :)) Подсчёт импульсов - через прерывание или если не горит то тупо в maine (но нужна логика на фронты).
0 / 0 / 0
Регистрация: 02.03.2013
Сообщений: 163
07.03.2013, 01:53 4
Цитата Сообщение от Juk_1976
А если серьёзно, то настраиваете таймер на прерывание например на 1раз/сек и отсчитываете 60 сек (или считаете импульсы за сек и умножаете на 60 :)) Подсчёт импульсов - через прерывание или если не горит то тупо в maine (но нужна логика на фронты).
Импульсы чаще чем раз в секунду. Нужно не кол-во импульсов подсчитать, а скорость =)

Те получив 2 импульса нужно уже знать сколько их придет за минуту.

Насчет * и \, пишу в ассемблере.
0
1 / 1 / 0
Регистрация: 28.01.2010
Сообщений: 537
07.03.2013, 02:14 5
Цитата Сообщение от RiosomX
Цитата Сообщение от Juk_1976
А если серьёзно, то настраиваете таймер на прерывание например на 1раз/сек и отсчитываете 60 сек (или считаете импульсы за сек и умножаете на 60 :)) Подсчёт импульсов - через прерывание или если не горит то тупо в maine (но нужна логика на фронты).
Импульсы чаще чем раз в секунду. Нужно не кол-во импульсов подсчитать, а скорость =)

Те получив 2 импульса нужно уже знать сколько их придет за минуту.

Насчет * и \, пишу в ассемблере.

А если их всего 2 и было.
Насчет * и \ вспомни школу и операции столбиком, почитай литературу.
0
0 / 0 / 0
Регистрация: 02.03.2013
Сообщений: 163
07.03.2013, 02:20 6
Цитата Сообщение от S_Otyx
Цитата Сообщение от RiosomX
Цитата Сообщение от Juk_1976
А если серьёзно, то настраиваете таймер на прерывание например на 1раз/сек и отсчитываете 60 сек (или считаете импульсы за сек и умножаете на 60 :)) Подсчёт импульсов - через прерывание или если не горит то тупо в maine (но нужна логика на фронты).
Импульсы чаще чем раз в секунду. Нужно не кол-во импульсов подсчитать, а скорость =)

Те получив 2 импульса нужно уже знать сколько их придет за минуту.

Насчет * и \, пишу в ассемблере.
А если их всего 2 и было.
Насчет * и \ вспомни школу и операции столбиком, почитай литературу.

Их будет более 1 в секунду.
0
1 / 1 / 0
Регистрация: 28.01.2010
Сообщений: 537
07.03.2013, 02:25 7
Юрий Ревич
Практическое программирование микроконтроллеров Atmel AVR на языке ассемблера 2-е издание
Санкт-Петербург «БХВ-Петербург» 2011

стр. 127
0
0 / 0 / 0
Регистрация: 02.03.2013
Сообщений: 163
07.03.2013, 04:04 8
Цитата Сообщение от S_Otyx
Юрий Ревич
Практическое программирование микроконтроллеров Atmel AVR на языке ассемблера 2-е издание
Санкт-Петербург «БХВ-Петербург» 2011

стр. 127
Почитал, не хватает у меня еле хватает точности даже в 32 разрядах =))) Видимо рукимозг кривой.

Вообщем, полностью раскрою тему. Нужно подсчитать кол-во ударов в минуту (музыки)
Значение будет порядка 160 и 180.

Как я планировал высчитать, по выше изложенной книге. 10922 такта (у часового кварца и будет соответствовать 180 ударам в минуту) Умножим на 1000, поделим на 32768, и потом поделим 60 000 000, на результат. Получим 180181. Что в принципе достаточно.

Эммм, зачем я все это вообще делаю, когда можно просто 10922 запихнуть в другой таймер.... эмммм.

Ладно тема закрыта, всем спасибо.
0
0 / 0 / 0
Регистрация: 23.01.2013
Сообщений: 23
07.03.2013, 14:22 9
ну во первых не обольщайтесь что посчитав 2 импульса в сек вы получите точное значение импульсов в минуту, и разброс достаточно велик (хотя вы не озвучили какая нужна точность и какой характер импульсов).
тогда нада мерять интервал между импульсами.
ну еще вариант - подайте на вход таймера и считывайте значения регистров таймера через нужный интервал времени.
0
0 / 0 / 0
Регистрация: 02.03.2013
Сообщений: 163
08.03.2013, 16:58 10
Цитата Сообщение от FokBRD
ну во первых не обольщайтесь что посчитав 2 импульса в сек вы получите точное значение импульсов в минуту, и разброс достаточно велик (хотя вы не озвучили какая нужна точность и какой характер импульсов).
тогда нада мерять интервал между импульсами.
ну еще вариант - подайте на вход таймера и считывайте значения регистров таймера через нужный интервал времени.
Сделал так:
На рассыпухе собран фильтр. Фильтр срезает все что не входит в диапазон ударных, потом вся эта дрянь идет на ОУ, откуда поступают квадратные импульсы на ногу.

При первом импульсе запускается таймер RTC работающего от 32.768 внешки.
При втором импульсе, относительное время первого и второго импульса заносится в регистры 2 таймера работающего от 16МГц\512 (TCNT1,OCR1A) соответственно, и он запускается.
При этом 1ый таймер продолжает работу, сбрасывает и перенастраивает 2ой таймер по приходу каждого импульса.
Если же импульсы из вне прекращают приходить, то 2ой таймер никто не сбрасывает и BPM тикает от него, про погрешность сказать нечего, надо тестить.

У меня тема в детских вопросах валяется, про стробоскоп на светодиодах.

И еще вопрос, можно ли сделать так что бы оба таймера работали от 32.768 ? который подрублю к XTAL1\2
0
0 / 0 / 0
Регистрация: 02.03.2013
Сообщений: 163
09.03.2013, 04:54 11
Цитата Сообщение от RiosomX
Цитата Сообщение от FokBRD
ну во первых не обольщайтесь что посчитав 2 импульса в сек вы получите точное значение импульсов в минуту, и разброс достаточно велик (хотя вы не озвучили какая нужна точность и какой характер импульсов).
тогда нада мерять интервал между импульсами.
ну еще вариант - подайте на вход таймера и считывайте значения регистров таймера через нужный интервал времени.
Сделал так:
На рассыпухе собран фильтр. Фильтр срезает все что не входит в диапазон ударных, потом вся эта дрянь идет на ОУ, откуда поступают квадратные импульсы на ногу.

При первом импульсе запускается таймер RTC работающего от 32.768 внешки.
При втором импульсе, относительное время первого и второго импульса заносится в регистры 2 таймера работающего от 16МГц\512 (TCNT1,OCR1A) соответственно, и он запускается.
При этом 1ый таймер продолжает работу, сбрасывает и перенастраивает 2ой таймер по приходу каждого импульса.
Если же импульсы из вне прекращают приходить, то 2ой таймер никто не сбрасывает и BPM тикает от него, про погрешность сказать нечего, надо тестить.

У меня тема в детских вопросах валяется, про стробоскоп на светодиодах.

И еще вопрос, можно ли сделать так что бы оба таймера работали от 32.768 ? который подрублю к XTAL1\2

Полностью переписал это дерьмо сделал на 1м таймере. =))))

Только все не пойму 1ой вещи,
Код
;==Очистим флаг регистра сравнения B==
IN R16,TIFR            ;Загружаем регистр TIFR в R16
ANDI R16,8                ;Накладываем маску И 0000 1000 на регистр TIFR
OUT TIFR,R16         ;Загружаем R16 в регистрн TIFR тем самым очищяя флаг регистра сравнения B
У меня TIFR 0001 1010
После маски 0000 1000
А после OUT TIFR становится 0001 0010

Я не понимаю он еще раз AND что ли делает ? Или глюк AVR ?
0
0 / 0 / 0
Регистрация: 26.04.2010
Сообщений: 1,445
09.03.2013, 11:45 12
Это не просто ячейка памяти. Это хитрый регистр флагов. А флаг сбрасывается записью единицы в нужный бит. В даташите описано
0
krystymo
20.11.2016, 14:07 13
А если надо определить частоту, с которой генератор будет вырабатывать импульсы, если количество ударов в минуту 70 ?
Otd_36
20.11.2016, 22:33 14
Посмотрите примеры кода ИК-декодеров пультов ДУ. Принцип такой-же, только там свет, а у Вас звук.
20.11.2016, 22:33
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
20.11.2016, 22:33
Помогаю со студенческими работами здесь

Посчитать кол-во слов в каждом абзаце и кол-во абзацев.
2. Посчитать количество слов в каждом абзаце и количество абзацев. Абзац начинается с S-ти...

TV-Пульт. На входе число (1-9) на выходе соотв. кол-во импульсов
Всем привет, помогите справиться с доп заданием. Нужно сделать примитивный tv пульт. На входе...

Как посчитать кол-во символов?
Считываю соурс код с сайта, который введет юзер и вывожу это всё дело в ДИВ. Также хочу посчитать...

Как посчитать кол-во повторения цикла?
Задание: Сколько операций сложения производится при выполнении следующего кода? Операцию...

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

Как посчитать кол-во контуров и ветвей?
Можно ли по узлам посчитать ветви? И вообще как посчитать кол-во контуров и ветвей?


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru