Регистрация | Вход

[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 2 из 5
  • «
  • 1
  • 2
  • 3
  • 4
  • 5
  • »
Форум Picbasic.ru » Скорая помощь начинающим » Помощь в вопросах программирования » алгоритм
алгоритм
ADMIN Дата: Чт, 07.06.2012, 17:23  |                                                                                                                Сообщение # 16
Администратор
Группа: Администраторы
Ранг:  Специалист
Сообщений: 1087
Репутация: 32   ±
Замечания:   ±
На сайте с 20.08.2007

Статус: Offline

а f=tmr1 не пробовали?
retas Дата: Чт, 07.06.2012, 18:09  |                                                                                                                Сообщение # 17
Группа: Проверенные
Ранг:  Помогаю всем
Сообщений: 447
Репутация: 11   ±
Замечания:   ±
На сайте с 10.09.2007

Статус: Offline

Моя мыслЯ алгоритметическая по мысли contra.

1. В прерыве пишем f=1/(TMRx+ВП) и ещё то что надо для показа. Определяем Протоном затрачиваемое на это время (обозвал ВП - Время Показа).
2. Внешним сигналом считываем и обнуляем TMRx, запускаем прерыв.

Грубо, так можно будет измерить с 3,9кГц (1/256мкс, с кварцем в 4МГц) до 1/ВП.
Предел измерения можно менять изменением кварца и вводом счетчика подсчета переполнений TMRx.
contra Дата: Чт, 07.06.2012, 19:16  |                                                                                                                Сообщение # 18
Группа: Проверенные
Ранг:  Продвинутый
Сообщений: 112
Репутация: 0   ±
Замечания:   ±
На сайте с 27.06.2009

Статус: Offline

Вот, что у меня получилось:
понимаю, что не подключен старший байт -TMR1H, (на относительно низких частотах счётчик работает нормально)
Но как его(старший байт) добавить НЕ ПОЙМУ!!! Объясните пожалуйста!
Прикрепления: 0425030.dsn (97.8 Kb) · MAKIvarSam.bas (3.5 Kb)

Сообщение отредактировал contra - Чт, 07.06.2012, 19:26
ivan_fd Дата: Чт, 07.06.2012, 23:02  |                                                                                                                Сообщение # 19
Группа: Модераторы
Ранг:  Специалист
Сообщений: 894
Репутация: 124   ±
Замечания:   ±
На сайте с 12.01.2009

Статус: Offline

У Вас он подключен, старший байт.

Dim TIMER1 As TMR1L.Word - так правильно.

Данный метод подсчета частоты не есть супер точный, но для понимания процесса пойдет.
При измерении 100мс, максимальная частота, которую можно измерить ~ 655 кГц, для высших частот нужно меньшее время счета.
contra Дата: Пт, 08.06.2012, 08:01  |                                                                                                                Сообщение # 20
Группа: Проверенные
Ранг:  Продвинутый
Сообщений: 112
Репутация: 0   ±
Замечания:   ±
На сайте с 27.06.2009

Статус: Offline

Quote (ivan_fd)
максимальная частота, которую можно измерить ~ 655 кГц,

до этой частоты считает нормально.
Quote (ivan_fd)
но для понимания процесса пойдет.
что и требовалось!

ivan_fd, и всем кто помогал, спасибо вам БОЛЬШОЕ!!!
доцент2 Дата: Пн, 02.07.2012, 22:47  |                                                                                                                Сообщение # 21
Группа: Проверенные
Ранг:  Помогаю всем
Сообщений: 287
Репутация: 10   ±
Замечания:   ±
На сайте с 13.09.2011

Статус: Offline

если кому не жалко представте работающую программу на прерываниях для подсчета частоты хоть до 1кГц.
нужен просто работающий пример, а не куча рассуждений одно протеворечащее другому.
довольно трудно разобраться в этом "лесу" советов.
или хотя бы нормально рассписанный алгаритм (что сначала, что потом и т.д.)
ЯНДЕКС Дата: 02.07.2012
ivan_fd Дата: Пн, 02.07.2012, 23:06  |                                                                                                                Сообщение # 22
Группа: Модераторы
Ранг:  Специалист
Сообщений: 894
Репутация: 124   ±
Замечания:   ±
На сайте с 12.01.2009

Статус: Offline

На предыдущей странице было.

Вот почти то же, но только немного подправлено.

Quote (доцент2)
представте работающую программу на прерываниях для подсчета частоты хоть до 1кГц.


А почему именно на прерываниях, зачем?
Прикрепления: Chastota.zip (57.6 Kb)

Сообщение отредактировал ivan_fd - Пн, 02.07.2012, 23:06
доцент2 Дата: Вт, 03.07.2012, 22:29  |                                                                                                                Сообщение # 23
Группа: Проверенные
Ранг:  Помогаю всем
Сообщений: 287
Репутация: 10   ±
Замечания:   ±
На сайте с 13.09.2011

Статус: Offline

перевел все на pic16f628a в протеусе.
считает до 655кГц при внутреннем генераторе 4 МГц.
поясните, а как вычисляется максимальная частота с учетом задержки, и как завязать результат с частотой кварца?
не совсем понятно как это все работает: 1-запускаем таймер, 2-с приходом первого испульса на вход таймер начинает считать,
(что он именно считает и для чего нужна задержка - для основной программы или еще для чего нибудь?).
хотелось бы понять досканально как это работает!
Прикрепления: _1.rar (44.7 Kb)
retas Дата: Вт, 03.07.2012, 23:42  |                                                                                                                Сообщение # 24
Группа: Проверенные
Ранг:  Помогаю всем
Сообщений: 447
Репутация: 11   ±
Замечания:   ±
На сайте с 10.09.2007

Статус: Offline

1. как вычисляется максимальная частота.
Чем меньше движений будеш совершать во время измерений и чем ВЧ кварц примениш, тем бОльшую частоту сможешь измерить - какую
точно, увидешь в Протеусе.
2. с учетом задержки.
Имея точный интервал времени, во время его нужно сосчитать счетчиком число пришедших импульсов измеряемой частоты и её определить -
если, скажем, в течение 100мс было 100 импульсов, значит длительность периода=1мс и частота=1кгц.
3. запускаем таймер с приходом первого испульса - точнее обнуляем его с приходом первого испульса
и теперь таймер будет считать каждый тик внутреннего осцилятора (генератора) начиная с нуля. Внутренний осцилятор тикает постоянно если запитан МК
а скорость тиканья зависит от частоты кварца.
С кварцем в 4Мгц один тик=1мкс.
Если следующим импульсом остановим таймер и посмотрим сколько тиков он сосчитал, то увидем длительность в микросекундах периода измеряемой частоты.
Удачи.
ivan_fd Дата: Ср, 04.07.2012, 10:12  |                                                                                                                Сообщение # 25
Группа: Модераторы
Ранг:  Специалист
Сообщений: 894
Репутация: 124   ±
Замечания:   ±
На сайте с 12.01.2009

Статус: Offline

Quote (доцент2)
считает до 655кГц при внутреннем генераторе 4 МГц.
поясните, а как вычисляется максимальная частота с учетом задержки, и как завязать результат с частотой кварца?


Данный метод измерения к частоте кварца, почти не имеет отношения. А 655 кГц, потому, что мы измеряем 100 мс,
65535/100 ~= 655. Будете измерять меньшее время, и измеряемая частота будет выше.

Quote (доцент2)
1-запускаем таймер, 2-с приходом первого испульса на вход таймер начинает считать,
(что он именно считает и для чего нужна задержка - для основной программы или еще для чего нибудь?).
хотелось бы понять досканально как это работает!


Ни каких приходов первых импульсов, запускаем таймер, за именно ту задержку считаем импульсы, после задержки останавливаем таймер и смотрим сколько натикало.

Сообщение отредактировал ivan_fd - Ср, 04.07.2012, 17:58
доцент2 Дата: Ср, 04.07.2012, 17:58  |                                                                                                                Сообщение # 26
Группа: Проверенные
Ранг:  Помогаю всем
Сообщений: 287
Репутация: 10   ±
Замечания:   ±
На сайте с 13.09.2011

Статус: Offline

спасибо за ответы. хотелось бы подъитожить:
1. с приходом первого импульса счетчик таймера обнуляется
2. начинает считать "тики" генератора МК за установленное время задержки
(например при задержке 100мс счетчик насчитал 1000 тиков - это соответствует периоду 0,1мс и частоте 10кГц)

но уменя возникает может и детский, но все-таки вопрос:
***как связаны между собой внутренние "тики" и частота от внешнего источника?***
если я правильно понял, то счетчик с приходом первого импульса начинает считать, а с приходом следующего перестает считать!
вот что он там насчитал мы и начинаем обрабатывать.

ivan_fd
65535 - это что за цифра, если максимальное значение для счетчика таймера, то что-то не сходиться:
в протеусе поставил задержку 100мс 65535/100=655 верно, а при задержке 10мс и 1мс максимальная частота получилась не больше 1МГц
получается определить максимально возможную частоту для измерения можно только методом тыка в протеусе?

в инете есть схемы частотомеров на pic16f628a частота идет без делителей на тот же вход (возможно алгоритм аналогичный), но авторы утверждают что возможны измерения до 60МГц и больше, у меня максимум 1МГц.

Сообщение отредактировал доцент2 - Ср, 04.07.2012, 18:13
ivan_fd Дата: Ср, 04.07.2012, 19:45  |                                                                                                                Сообщение # 27
Группа: Модераторы
Ранг:  Специалист
Сообщений: 894
Репутация: 124   ±
Замечания:   ±
На сайте с 12.01.2009

Статус: Offline

Quote (доцент2)
1. с приходом первого импульса счетчик таймера обнуляется
2. начинает считать "тики" генератора МК за установленное время задержки


Писал уже, ну ладно, еще раз напишу.

В данном методе нету такого понятия как, с приходом первого импульса.

1. Импульсы идут постоянно, таймер выключен. Импульсы подаются на вход внешней синхронизации, то есть таймер не тикает, как Вы написали от внутреннего тактового генератора, а от внешнего сигнала.
2. Далее мы обнуляем таймер и запускаем его. После чего ждем определенное время, в нашем случаи 100 мс. После этого времени отключаем таймер и смотрим, что он насчитал. И зная время измерения (100 мс) и количество импульсов, мы можем легко это все перевести в частоту.

Quote (доцент2)
65535 - это что за цифра, если максимальное значение для счетчика таймера, то что-то не сходиться:
в протеусе поставил задержку 100мс 65535/100=655 верно, а при задержке 10мс и 1мс максимальная частота получилась не больше 1МГц
получается определить максимально возможную частоту для измерения можно только методом тыка в протеусе?


65535 - это есть максимальное значение таймера, два байта. Ставите задержку в 10 мс и мы можем посчитать уже до ~ 6553 кГц.
И это так, но только нужно правильно посчитать ее (частоту) TIMER1 /1000 * 100



И никаких методов тыка, все считается.

Quote (доцент2)
в инете есть схемы частотомеров на pic16f628a частота идет без делителей на тот же вход (возможно алгоритм аналогичный), но авторы утверждают что возможны измерения до 60МГц и больше, у меня максимум 1МГц.


Там немного все по другому, но принцип похож.
доцент2 Дата: Ср, 04.07.2012, 20:21  |                                                                                                                Сообщение # 28
Группа: Проверенные
Ранг:  Помогаю всем
Сообщений: 287
Репутация: 10   ±
Замечания:   ±
На сайте с 13.09.2011

Статус: Offline

теперь все встало на всои места.
таймер считает "внешнюю" частоту за заданный период.
у меня в проекте максимальное значение частоты получается 1000кHz
(кварц 4МГц, расче тпри задержке 10мс - TIMER1/1000*100), почему не понятно?

а вдругих проектах (где до 60МГц) как там все происходит?
Прикрепления: 6560023.jpg (162.8 Kb)

Сообщение отредактировал доцент2 - Ср, 04.07.2012, 20:26
anatol Дата: Ср, 04.07.2012, 22:03  |                                                                                                                Сообщение # 29
Группа: Проверенные
Ранг:  Помогаю всем
Сообщений: 472
Репутация: 32   ±
Замечания:   ±
На сайте с 10.02.2010

Статус: Offline

Одна команда - один такт.1 такт = 4 периодам генератора. т.е. 4 мгц /4 = 1 мгц. Это теоретический предел.
Quote (доцент2)
а вдругих проектах (где до 60МГц) как там все происходит

60МГц Это максимум входных цепей ПИКа. Просто мерим меньшее время и умножам по формулам. Математика для маленьких.
Есть и другие методы - считаем количество переполнений таймера и методом досчета вычисляем. Бейсика здесь "0" - помогать не в чем - интернет полон решений.
доцент2 Дата: Ср, 04.07.2012, 23:12  |                                                                                                                Сообщение # 30
Группа: Проверенные
Ранг:  Помогаю всем
Сообщений: 287
Репутация: 10   ±
Замечания:   ±
На сайте с 13.09.2011

Статус: Offline

в инете к сожалению полно готовых прошивок, а решения если и попадаются, то настолько мудреные!!!!!!!
хочется разобраться с нуля.
чтобы что-то применить - надо это знать и понимать.

возможно просто туплю, но объясните как правильно составить формулу, что туда входит.
поставил кварц 20МГц, задержка 10мс - результат вычисляю по формуле TIMER1*100=5000000 Гц это максимальное значение которое получаю от МК.
но если максимальное значение у таймера 65535, то максимальное значение показаний должно быть 65535*100=6553500 Гц, но больше 5МГ померить не получается.
это из-за того, что при кварце 20МГ теоритическая возможная частота 20МГ/4=5МГ?

Сообщение отредактировал доцент2 - Ср, 04.07.2012, 23:15
Форум Picbasic.ru » Скорая помощь начинающим » Помощь в вопросах программирования » алгоритм
  • Страница 2 из 5
  • «
  • 1
  • 2
  • 3
  • 4
  • 5
  • »
Поиск: