Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей... |
26.04.2011, 23:13
|
|
Почётный гражданин KAZUS.RU
Регистрация: 20.06.2006
Адрес: Украина, Запорожье
Сообщений: 7,982
Сказал спасибо: 0
Сказали Спасибо 4,941 раз(а) в 2,370 сообщении(ях)
|
Re: Скоректируйте программу частотомера
begun,
если уж руки чешутся программировать, то может взять альтеру на 32-64триггера и нарисовать там схему, запрограммировать и получить измерительный канал до 100мгц, а на контроллер возложить функцию выбора пределов, индикации, вида измерения, связи с пк...?
|
|
|
|
26.04.2011, 23:23
|
|
Гражданин KAZUS.RU
Регистрация: 18.07.2006
Сообщений: 866
Сказал спасибо: 230
Сказали Спасибо 29 раз(а) в 27 сообщении(ях)
|
Re: Скоректируйте программу частотомера
на счет PIC ов Я знаю, что легко получается результат, но если взять другую структуру частотомера,который тоже используют разработчики -это с предваритедьным наружный делителем ,выходы которого подключаются к пинам контроллера.
Тут точность не теряется и за одно уменьшается частота на счетный вход контроллера.
При меньшей частоте наверно лучше можно обработать сигнал.
Я прав?
|
|
|
|
27.04.2011, 01:45
|
|
Прописка
Регистрация: 21.09.2009
Сообщений: 218
Сказал спасибо: 1
Сказали Спасибо 29 раз(а) в 27 сообщении(ях)
|
Re: Скоректируйте программу частотомера
Последний раз редактировалось =GM=; 27.04.2011 в 01:51.
|
|
|
|
27.04.2011, 09:39
|
|
Гражданин KAZUS.RU
Регистрация: 18.07.2006
Сообщений: 866
Сказал спасибо: 230
Сказали Спасибо 29 раз(а) в 27 сообщении(ях)
|
Re: Скоректируйте программу частотомера
GM,
Ваши посты знаю хорошо и неоднократно их рассмотривал, но чтобы в них капитально разобраться нужно уяснить некоторые ньюансы,
и если кто разъяснит ,буду очень признателен и смогу двинутся вперед
по очень ценным для меня советам cо стороны участников поста.
Например:
Почему нельзя использовать вместо флага такую конструкцию:
if(TCNT0==0xFE)
a++;
Разве тут не все тоже самое ,ну только лишь теряется единица при каждом переполнении таймера ,что в общем то наверно можно учесть.
Так такая замена всетаки вожможно . Прелесть флагов только в том что они работают без вызова прерывания?
Спасибо.
|
|
|
|
27.04.2011, 19:12
|
|
Прописка
Регистрация: 21.09.2009
Сообщений: 218
Сказал спасибо: 1
Сказали Спасибо 29 раз(а) в 27 сообщении(ях)
|
Re: Скоректируйте программу частотомера
Сообщение от begun
|
Почему нельзя использовать вместо флага такую конструкцию: if(TCNT0==0xFE) a++;
|
Раскройте вопрос по-полнее, а то я не совсем вас понимаю, что за конструкция, где её нельзя использовать, кто сказал, что нельзя.
Последний раз редактировалось =GM=; 27.04.2011 в 19:15.
|
|
|
|
27.04.2011, 22:43
|
|
Вид на жительство
Регистрация: 21.10.2009
Сообщений: 343
Сказал спасибо: 180
Сказали Спасибо 64 раз(а) в 56 сообщении(ях)
|
Re: Скоректируйте программу частотомера
Сообщение от st_1
|
Угу...![Рот до ушей](images/smilies/icon_doushei.gif)
При входной частоте 100Гц и полной шкале в восемь разрядов... включи - и езжай в отпуск...
|
Для этой частоты берем например 10 импульсов, время измерения 0.1 сек
Какой отпуск? Вы о чем?
Да здесь просто измерение длительности импульса.
(после деления на количество импульсов, получаем повышение точности)
|
|
|
|
27.04.2011, 22:56
|
|
Гражданин KAZUS.RU
Регистрация: 18.07.2006
Сообщений: 866
Сказал спасибо: 230
Сказали Спасибо 29 раз(а) в 27 сообщении(ях)
|
Re: Скоректируйте программу частотомера
omercury указывает, что некорректно провести расчеты в прерывании, что нужно использовать флаги и с их помощью считать количество переполнения таймера.
Как Я понимаю ,количество шагов процессора при проведении операции с флагами фиксировано и при формировании секундного интервала можно учесть.
я подумал что можно и без флагов получить тоже самое дождаться в бесконечном цикле переполнения таймера и вести счет,т.е.
while(1)
{
--
if(TCNT0==0xFE)
а++;
--
можно же таким образом посчитать количество переполнеия таймера?
(извините,если Я не то говорю)
Спасибо.
|
|
|
|
28.04.2011, 00:18
|
|
Почётный гражданин KAZUS.RU
Регистрация: 25.05.2010
Адрес: г. Королёв
Сообщений: 8,497
Сказал спасибо: 30
Сказали Спасибо 3,072 раз(а) в 2,013 сообщении(ях)
|
Re: Скоректируйте программу частотомера
Цитата:
|
подумал что можно и без флагов получить тоже самое......можно же таким образом посчитать количество переполнеия таймера?
|
Можно-то можно, но...нельзя... Потому, что сработать может несколько раз. Флаг прерывания устанавливается при переполнении счетчика таймера(переходе из 0хFF в 0х00), поэтому им пользоваться удобнее. После использования флаг надо сбросить (автоматом он сбрасывается при выходе из прерывания).
А прерывания нельзя использовать(для точности) потому, что вход в прерывание может попасть на команду (Асм), выполняющуюся за несколько тактов. Счёт в этом случае собьётся. А может и несколько раз такое случиться. Поэтому и делается без прерываний, но по флагам прерываний.
|
|
|
|
28.04.2011, 00:25
|
|
Заблокирован
Регистрация: 26.12.2009
Сообщений: 3,124
Сказал спасибо: 116
Сказали Спасибо 867 раз(а) в 614 сообщении(ях)
|
Re: Скоректируйте программу частотомера
Сообщение от CodeNameHawk
|
Какой отпуск? Вы о чем?
|
"При входной частоте 100Гц и полной шкале в восемь разрядов... включи - и езжай в отпуск..."
|
|
|
|
28.04.2011, 00:28
|
|
Заблокирован
Регистрация: 26.12.2009
Сообщений: 3,124
Сказал спасибо: 116
Сказали Спасибо 867 раз(а) в 614 сообщении(ях)
|
Re: Скоректируйте программу частотомера
Сообщение от omercury
|
Можно-то можно, но...нельзя...
|
Можно! ![Рот до ушей](images/smilies/icon_doushei.gif)
На PIC24 можно... у них детерминированный вход в прерывание...
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 01:14.
|
|