|
|
  |
Измерение частоты, алгоритм |
|
|
|
Mar 7 2006, 15:51
|
Группа: Новичок
Сообщений: 13
Регистрация: 2-07-05
Из: Киев
Пользователь №: 6 471

|
Не совсем разобрался с приоритетом рываний, от сюда вопросы: -если во время обработки прерывания от Т0, произойдет прерывание от Т1, как поведёт себя программа, и куда вернётся после подпрограммы обработки прерывания Т1 ?? -и тот же вопрос, но если во время обработки прерывания от Т1, произойдет прерывание от Т0 ??
Сообщение отредактировал Kotjara - Mar 7 2006, 15:53
|
|
|
|
|
Mar 22 2006, 07:26
|
Участник

Группа: Участник
Сообщений: 64
Регистрация: 3-03-05
Пользователь №: 3 055

|
В журнале "Схемотехника"' №5 за 2004 год есть статься в которой описывается устройство измерения частоты (автор вроде Николай Заец, ой в имени могу ошибиться). Построено по принципу уже изложенному в данном топике - аналоговый компаратор и таймер. Однако в данном способе есть несколько НО. Главное из них задержка срабатывания компаратора которая для mega составляет 500-750нс. То бишь определять с точостью до 1Гц на частотах в единицы МГц ИМХО не получится. Сам использую данную схему, но рассчитываю частоты до 1-10кГц - мне точнее просто не надо.
Сообщение отредактировал Z0Rk - Mar 22 2006, 07:28
--------------------
Victoria Concordia Crescit
|
|
|
|
|
Mar 22 2006, 13:48
|
Группа: Участник
Сообщений: 14
Регистрация: 18-01-06
Пользователь №: 13 317

|
Вообще-то из официальной документации ATMELа ясно видно, что при входе в подпрограмму прерывания запрещается обработка любых других прерываний, если не указано обратно. НО контроллер запоминает какие были прерывания в момент запрещения.
|
|
|
|
|
May 6 2006, 07:07
|
Участник

Группа: Новичок
Сообщений: 42
Регистрация: 12-03-06
Пользователь №: 15 158

|
Расскажите попопулярно о методе досчета предварительного делителя (алгоритм досчета).
|
|
|
|
|
May 6 2006, 19:01
|
Участник

Группа: Свой
Сообщений: 52
Регистрация: 30-11-05
Из: С-Пб
Пользователь №: 11 619

|
я конечно не супер спец как некоторые может так реализовать: -таймер 0 запустить на отсчет времени скажем 1 секунда -- прерывания от таймера0 защелкивают данные в регистре = значение таймера1+переполнение -прерывания таймер1 переполнения добовляют к long регистру 0х1000 частота равна long регистр + значение таймера1 при таком измерении(если все реализовано максимально быстро(код маленький) получится погрешность около 320гц, толи при 50МГц толи при 20МГц, покрайне мере такой способ позволял измерить до 2 МГц с погрешностью около 16герц, кому интересно может посчитать сам. Максимальная частота измерения = максимальной частоте работы таймера1. Для измерения частоты скажем 100(150)МГц нужен тригер вроде 1554ТВ1 (если интересно уточню) другая не катит. Суммарная погрешность будет равна погрешности кварца+ длинна проги до считывания данных, а если использовать внешнии опорный импульс нужно по его фронту блокировать счетный вход перед контроллером(реакция на прерывание 2+2такта минимум да на код погрешность выростет) и чтоб контроллер после окончания защелкивания данных сам разрешил повторный отсчет...
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|