Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей... |
28.04.2011, 01:35
|
|
Почётный гражданин KAZUS.RU
Регистрация: 25.05.2010
Адрес: г. Королёв
Сообщений: 8,497
Сказал спасибо: 30
Сказали Спасибо 3,072 раз(а) в 2,013 сообщении(ях)
|
Re: Скоректируйте программу частотомера
Последний раз редактировалось omercury; 28.04.2011 в 01:50.
|
|
|
|
28.04.2011, 01:38
|
|
Прописка
Регистрация: 21.09.2009
Сообщений: 218
Сказал спасибо: 1
Сказали Спасибо 29 раз(а) в 27 сообщении(ях)
|
Re: Скоректируйте программу частотомера
Сообщение от st_1
|
"При входной частоте 100Гц и полной шкале в восемь разрядов... включи - и езжай в отпуск..."
|
Методом захвата уже за 1000 с погрешность будет меньше 5Е-9 Гц, т.е. восемь десятичных знаков будут точные. А это порядка 17 минут, не успеете в отпуск съездить.
|
|
|
|
28.04.2011, 01:47
|
|
Прописка
Регистрация: 21.09.2009
Сообщений: 218
Сказал спасибо: 1
Сказали Спасибо 29 раз(а) в 27 сообщении(ях)
|
Re: Скоректируйте программу частотомера
Сообщение от begun
|
я подумал что можно и без флагов получить тоже самое дождаться в бесконечном цикле переполнения таймера и вести счет,т.е. if(TCNT0==0xFE) а++;
можно же таким образом посчитать количество переполнеия таймера?
|
Ну, случайно вы попадёте на 0xFE, подсчитаете одно переполнение, а дальше что? Переполнений-то может быть разное количество, зависит от измеряемой частоты. Покажите весь кусок для подсчёта переполнений.
Кстати, почему надо сравнивать с 0xFE? Тогда уж сравнивайте по факту переполнения с 0x00, если совпало, то значит за один такт до этого было переполнение.
|
|
|
|
28.04.2011, 01:53
|
|
Почётный гражданин KAZUS.RU
Регистрация: 25.05.2010
Адрес: г. Королёв
Сообщений: 8,497
Сказал спасибо: 30
Сказали Спасибо 3,072 раз(а) в 2,013 сообщении(ях)
|
Re: Скоректируйте программу частотомера
Сообщение от =GM=
|
Тогда уж сравнивайте по факту переполнения с 0x00, если совпало, то значит за один такт до этого было переполнение.
|
Раз 500 ещё до первого тика... Флаг нужен(Булева переменная).
|
|
|
|
28.04.2011, 12:57
|
|
Прописка
Регистрация: 21.09.2009
Сообщений: 218
Сказал спасибо: 1
Сказали Спасибо 29 раз(а) в 27 сообщении(ях)
|
Re: Скоректируйте программу частотомера
Уточню, такты входной частоты. Откуда 500?
|
|
|
|
28.04.2011, 13:02
|
|
Почётный гражданин KAZUS.RU
Регистрация: 25.05.2010
Адрес: г. Королёв
Сообщений: 8,497
Сказал спасибо: 30
Сказали Спасибо 3,072 раз(а) в 2,013 сообщении(ях)
|
Re: Скоректируйте программу частотомера
Пока таймер один раз не тикнет, в TCNT будет "0"
может и больше, не 500
|
|
|
|
28.04.2011, 13:22
|
|
Прописка
Регистрация: 21.09.2009
Сообщений: 218
Сказал спасибо: 1
Сказали Спасибо 29 раз(а) в 27 сообщении(ях)
|
Re: Скоректируйте программу частотомера
Давайте уточнять, видимо, мы говорим о разных вещах. Принимаете цитату из первого поста топикстартера "С выхода схемы совпадения импульсы подаются на вход T0 таймера счетчика TCNT0, который работает в режиме внешнего счета"?
|
|
|
|
28.04.2011, 14:36
|
|
Почётный гражданин KAZUS.RU
Регистрация: 25.05.2010
Адрес: г. Королёв
Сообщений: 8,497
Сказал спасибо: 30
Сказали Спасибо 3,072 раз(а) в 2,013 сообщении(ях)
|
Re: Скоректируйте программу частотомера
Псевдо С
Сколько раз инкрименируется "а" пока делитель таймера отсчитает один такт в TCNT ?
Последний раз редактировалось omercury; 28.04.2011 в 15:36.
|
|
|
|
28.04.2011, 14:56
|
|
Прописка
Регистрация: 21.09.2009
Сообщений: 218
Сказал спасибо: 1
Сказали Спасибо 29 раз(а) в 27 сообщении(ях)
|
Re: Скоректируйте программу частотомера
При выполнении этого оператора переменная "а" увеличится на единицу в том случае, если содержимое TCNT0 равно 0.
Однако, мы о чём говорим? Вы бы развернули вашу мысль, а то ничего не понятно. Вы цитату топикстартера принимаете?
|
|
|
|
28.04.2011, 15:36
|
|
Почётный гражданин KAZUS.RU
Регистрация: 25.05.2010
Адрес: г. Королёв
Сообщений: 8,497
Сказал спасибо: 30
Сказали Спасибо 3,072 раз(а) в 2,013 сообщении(ях)
|
Re: Скоректируйте программу частотомера
Ок.
Код:
|
while 1{
if TCNT0==0 {a++}
} //Тогда так. Сколько раз "а" сплюсплюсится ? |
или лучше так?
PHP код:
|
while 1{ if TOV0 { a++; TOV0=0; } }
|
Импульсы считаются таймером0 через вход Т0.
Цитата:
|
С выхода схемы совпадения импульсы подаются на вход T0 таймера счетчика
TCNT0,который работает в режиме внешнего счета.
|
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 00:18.
|
|