| Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей... |
Скоректируйте программу частотомера
26.04.2011, 23:13
|
#11
|
|
Почётный гражданин KAZUS.RUN
Регистрация: 20.06.2006
Адрес: Украина, Запорожье
Сообщений: 8,011
Сказал спасибо: 0
Сказали Спасибо 4,955 раз(а) в 2,379 сообщении(ях)
|
Re: Скоректируйте программу частотомера
begun,
если уж руки чешутся программировать, то может взять альтеру на 32-64триггера и нарисовать там схему, запрограммировать и получить измерительный канал до 100мгц, а на контроллер возложить функцию выбора пределов, индикации, вида измерения, связи с пк...?
|
|
|
|
26.04.2011, 23:23
|
#12
|
|
Гражданин KAZUS.RUN
Регистрация: 18.07.2006
Сообщений: 894
Сказал спасибо: 244
Сказали Спасибо 31 раз(а) в 28 сообщении(ях)
|
Re: Скоректируйте программу частотомера
на счет PIC ов Я знаю, что легко получается результат, но если взять другую структуру частотомера,который тоже используют разработчики -это с предваритедьным наружный делителем ,выходы которого подключаются к пинам контроллера.
Тут точность не теряется и за одно уменьшается частота на счетный вход контроллера.
При меньшей частоте наверно лучше можно обработать сигнал.
Я прав?
|
|
|
|
27.04.2011, 01:45
|
#13
|
|
Прописка
Регистрация: 21.09.2009
Сообщений: 218
Сказал спасибо: 1
Сказали Спасибо 29 раз(а) в 27 сообщении(ях)
|
Re: Скоректируйте программу частотомера
Последний раз редактировалось =GM=; 27.04.2011 в 01:51.
|
|
|
|
27.04.2011, 09:39
|
#14
|
|
Гражданин KAZUS.RUN
Регистрация: 18.07.2006
Сообщений: 894
Сказал спасибо: 244
Сказали Спасибо 31 раз(а) в 28 сообщении(ях)
|
Re: Скоректируйте программу частотомера
GM,
Ваши посты знаю хорошо и неоднократно их рассмотривал, но чтобы в них капитально разобраться нужно уяснить некоторые ньюансы,
и если кто разъяснит ,буду очень признателен и смогу двинутся вперед
по очень ценным для меня советам cо стороны участников поста.
Например:
Почему нельзя использовать вместо флага такую конструкцию:
if(TCNT0==0xFE)
a++;
Разве тут не все тоже самое ,ну только лишь теряется единица при каждом переполнении таймера ,что в общем то наверно можно учесть.
Так такая замена всетаки вожможно . Прелесть флагов только в том что они работают без вызова прерывания?
Спасибо.
|
|
|
|
27.04.2011, 19:12
|
#15
|
|
Прописка
Регистрация: 21.09.2009
Сообщений: 218
Сказал спасибо: 1
Сказали Спасибо 29 раз(а) в 27 сообщении(ях)
|
Re: Скоректируйте программу частотомера
Сообщение от begun
|
|
Почему нельзя использовать вместо флага такую конструкцию: if(TCNT0==0xFE) a++;
|
Раскройте вопрос по-полнее, а то я не совсем вас понимаю, что за конструкция, где её нельзя использовать, кто сказал, что нельзя.
Последний раз редактировалось =GM=; 27.04.2011 в 19:15.
|
|
|
|
27.04.2011, 22:43
|
#16
|
|
Вид на жительство
Регистрация: 21.10.2009
Сообщений: 349
Сказал спасибо: 181
Сказали Спасибо 65 раз(а) в 57 сообщении(ях)
|
Re: Скоректируйте программу частотомера
Сообщение от st_1
|
Угу...
При входной частоте 100Гц и полной шкале в восемь разрядов... включи - и езжай в отпуск...
|
Для этой частоты берем например 10 импульсов, время измерения 0.1 сек
Какой отпуск? Вы о чем?
Да здесь просто измерение длительности импульса.
(после деления на количество импульсов, получаем повышение точности)
|
|
|
|
27.04.2011, 22:56
|
#17
|
|
Гражданин KAZUS.RUN
Регистрация: 18.07.2006
Сообщений: 894
Сказал спасибо: 244
Сказали Спасибо 31 раз(а) в 28 сообщении(ях)
|
Re: Скоректируйте программу частотомера
omercury указывает, что некорректно провести расчеты в прерывании, что нужно использовать флаги и с их помощью считать количество переполнения таймера.
Как Я понимаю ,количество шагов процессора при проведении операции с флагами фиксировано и при формировании секундного интервала можно учесть.
я подумал что можно и без флагов получить тоже самое дождаться в бесконечном цикле переполнения таймера и вести счет,т.е.
while(1)
{
--
if(TCNT0==0xFE)
а++;
--
можно же таким образом посчитать количество переполнеия таймера?
(извините,если Я не то говорю)
Спасибо.
|
|
|
|
28.04.2011, 00:18
|
#18
|
|
Почётный гражданин KAZUS.RUN
Регистрация: 25.05.2010
Адрес: г. Королёв
Сообщений: 8,487
Сказал спасибо: 30
Сказали Спасибо 3,070 раз(а) в 2,011 сообщении(ях)
|
Re: Скоректируйте программу частотомера
|
Цитата:
|
|
подумал что можно и без флагов получить тоже самое......можно же таким образом посчитать количество переполнеия таймера?
|
Можно-то можно, но...нельзя... Потому, что сработать может несколько раз. Флаг прерывания устанавливается при переполнении счетчика таймера(переходе из 0хFF в 0х00), поэтому им пользоваться удобнее. После использования флаг надо сбросить (автоматом он сбрасывается при выходе из прерывания).
А прерывания нельзя использовать(для точности) потому, что вход в прерывание может попасть на команду (Асм), выполняющуюся за несколько тактов. Счёт в этом случае собьётся. А может и несколько раз такое случиться. Поэтому и делается без прерываний, но по флагам прерываний.
|
|
|
|
28.04.2011, 00:25
|
#19
|
|
Заблокирован
Регистрация: 26.12.2009
Сообщений: 3,102
Сказал спасибо: 113
Сказали Спасибо 860 раз(а) в 610 сообщении(ях)
|
Re: Скоректируйте программу частотомера
Сообщение от CodeNameHawk
|
|
Какой отпуск? Вы о чем?
|
"При входной частоте 100Гц и полной шкале в восемь разрядов... включи - и езжай в отпуск..."
|
|
|
|
28.04.2011, 00:28
|
#20
|
|
Заблокирован
Регистрация: 26.12.2009
Сообщений: 3,102
Сказал спасибо: 113
Сказали Спасибо 860 раз(а) в 610 сообщении(ях)
|
Re: Скоректируйте программу частотомера
Сообщение от omercury
|
|
Можно-то можно, но...нельзя...
|
Можно! 
На PIC24 можно... у них детерминированный вход в прерывание...
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 00:01.
|
|