0 / 0 / 0
Регистрация: 02.03.2013
Сообщений: 163
|
|
1 | |
Как посчитать кол-во импульсов в минуту.07.03.2013, 01:26. Показов 12657. Ответов 13
Метки нет (Все метки)
Здравствуйте. Я глубоко начинающий в МК, просьба сильно не пинать.
История такая, надо определить кол-во импульсов в минуту, после чего запустить генерацию такой же частоты. Если со 2ым мне все более и менее понятно, то с 1ым шагом затор. Что приходит на ум, повесить на таймер часовой кварц, брать кол-во тактов от импульса до импульса, делить на 32768(получим доли секунды) 60 делить на получившееся число. Но вот тут у меня и начались проблемы. Начиная с того что на моем ATTiny25 нет операции умножения, деления. В добавок оперировать придется числами с запятой, да и больше 255. Собственно коллапс. Помогите.
0
|
07.03.2013, 01:26 | |
Ответы с готовыми решениями:
13
как посчитать количество импульсов в saleae? Составить код расчет кол-во бактерий в минуту Посчитать кол-во отрицательных и кол-во положительных элементов массива. Вывести массив на экран Посчитать кол-во чисел со всевозможными кол-вами делителей |
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
Те получив 2 импульса нужно уже знать сколько их придет за минуту. Насчет * и \, пишу в ассемблере.
0
|
1 / 1 / 0
Регистрация: 28.01.2010
Сообщений: 537
|
|
07.03.2013, 02:14 | 5 |
Сообщение от RiosomX
Те получив 2 импульса нужно уже знать сколько их придет за минуту. Насчет * и \, пишу в ассемблере. А если их всего 2 и было. Насчет * и \ вспомни школу и операции столбиком, почитай литературу.
0
|
0 / 0 / 0
Регистрация: 02.03.2013
Сообщений: 163
|
|
07.03.2013, 02:20 | 6 |
Сообщение от S_Otyx
Насчет * и \ вспомни школу и операции столбиком, почитай литературу. Их будет более 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
Вообщем, полностью раскрою тему. Нужно подсчитать кол-во ударов в минуту (музыки) Значение будет порядка 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
На рассыпухе собран фильтр. Фильтр срезает все что не входит в диапазон ударных, потом вся эта дрянь идет на ОУ, откуда поступают квадратные импульсы на ногу. При первом импульсе запускается таймер 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
На рассыпухе собран фильтр. Фильтр срезает все что не входит в диапазон ударных, потом вся эта дрянь идет на ОУ, откуда поступают квадратные импульсы на ногу. При первом импульсе запускается таймер 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 После маски 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 | |
20.11.2016, 22:33 | |
Помогаю со студенческими работами здесь
14
Посчитать кол-во слов в каждом абзаце и кол-во абзацев. TV-Пульт. На входе число (1-9) на выходе соотв. кол-во импульсов Как посчитать кол-во символов? Как посчитать кол-во повторения цикла? как посчитать кол-во заголовков в парсере? Как посчитать кол-во контуров и ветвей? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |