![]() |
Модераторы: PILOT, ManiaK, Mazzi |
![]() ![]() ![]() |
|
jimmi |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 122 Регистрация: 20.9.2004 Репутация: 5 Всего: 5 |
![]() Это сообщение отредактировал(а) jimmi - 7.9.2005, 16:26 |
|||
|
||||
PILOT |
|
|||
![]() производство ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 2724 Регистрация: 4.4.2002 Где: москва Репутация: 20 Всего: 54 |
Я рекомендую сделать это на ПЛИС.
У меня есть счетчик импульсов (отлов глитчей) но схему найти не смог ![]() Смысл там прост: на входе резистор через диод на землю, сигнал берем между резистором и диодом, на вход плис. Далее, в ПЛИС реализован счетчик (8 триггеров), и преобразователь числа в Семисегментный код. Итог, прикасаюсь к отлаживаемой схеме и жду набежит чтонить или нет. СУВ. -------------------- тут могла быть Ваша реклама... |
|||
|
||||
jimmi |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 122 Регистрация: 20.9.2004 Репутация: 5 Всего: 5 |
![]() Это сообщение отредактировал(а) jimmi - 7.9.2005, 16:26 |
|||
|
||||
PILOT |
|
|||
![]() производство ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 2724 Регистрация: 4.4.2002 Где: москва Репутация: 20 Всего: 54 |
Никак...
Просто программно в теле прерывания разрешать прерывания (вложенные прерывания получаются). СУВ. -------------------- тут могла быть Ваша реклама... |
|||
|
||||
jimmi |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 122 Регистрация: 20.9.2004 Репутация: 5 Всего: 5 |
![]() Это сообщение отредактировал(а) jimmi - 7.9.2005, 16:27 |
|||
|
||||
PILOT |
|
|||
![]() производство ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 2724 Регистрация: 4.4.2002 Где: москва Репутация: 20 Всего: 54 |
Если ты подцепил кварц, то считай на здоровье себе время там же (таймер сделай на 1 мс, а там увеличивай 5-ти байтную переменную, на всю жизнь хватит
![]() СУВ. -------------------- тут могла быть Ваша реклама... |
|||
|
||||
jimmi |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 122 Регистрация: 20.9.2004 Репутация: 5 Всего: 5 |
![]() Это сообщение отредактировал(а) jimmi - 7.9.2005, 16:28 |
|||
|
||||
PILOT |
|
|||
![]() производство ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 2724 Регистрация: 4.4.2002 Где: москва Репутация: 20 Всего: 54 |
inc не трогает перенос! Будь осторожен!
Во-вторых не стоит прыгать с таблицы прерываний куда-то! Время дорого. И еще в этом обработчике не стоит проверять переполняемость, лучше сделать так чтобы гарантированно int0 не смог вызваться более 255 раз без выполнения в основном цикле сложения накопленного в прерывании числа к общему числу импульсов. СУВ. -------------------- тут могла быть Ваша реклама... |
|||
|
||||
Guest |
|
|||
Unregistered |
Спасибо за подсказку с inc.
Да, время дорого. На вход счетчика при несущей радиоимпульса 15 мксек за 1мксек с выхода компаратора поступит 15 импульсов. Время паузы 1/30 мксек. На все про все в теле main_loop и обработке прерывания у меня иммеется 19 тактов при 20МГц тактовой частоты. Это с учетом сброса флага внешнего прерывания инт0. Вопрос первый, где найти таблицу времени выполнения комманд в тактах? Ну я так понял время входа в прерывание 4 такта и время выполнения reti также 4 такта. Однопроцессорная система никак не получается, т.к. в теле main_loop придется еще и переменной таймера заниматься. Ну в Атмега 16 есть возможность подключения 2 кварцев, но там только 16 МГц тактовая. Итак у меня есть 12 тактов на 32 разрядный счетчик из четырех регистров. Хотя нужно только с младшим регистром успеть. Второй разряд переполняется с в 256 раз меньшей частотой. Это заказчик не заметит. ![]() Думаю как это сделать. |
|||
|
||||
jimmi |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 122 Регистрация: 20.9.2004 Репутация: 5 Всего: 5 |
![]() Это сообщение отредактировал(а) jimmi - 7.9.2005, 16:28 |
|||
|
||||
jimmi |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 122 Регистрация: 20.9.2004 Репутация: 5 Всего: 5 |
![]() Это сообщение отредактировал(а) jimmi - 7.9.2005, 16:29 |
|||
|
||||
PILOT |
|
|||
![]() производство ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 2724 Регистрация: 4.4.2002 Где: москва Репутация: 20 Всего: 54 |
Еще раз:
1) Начинай обработку сразу в таблице прерываний, никуда не прыгай. Ты же не используешь других прерываний. 2) время выполнения каждой команды (в тактах) есть например в даташите на мегу128 (гарантированно), в самом конце документа (почти) есть таблица инструкций, последний столбик тебя заинтересует. 3) если за 1 мкс приходит 15 импульсов, то гарантированно ничего не получится хорошего и второй контроллер тебя тоже не спасет. Можно сделать так. Снаружи поставить быстрый счетчик двоичный (который поделит частоту входных сигналов в 256 раз например, или на меньше), его выход на вход int0 тогда ты гарантированно все подсчитаешь. По поводу рейтинга тебе нужно набрать 100 сообщений по моему ![]() ![]() СУВ. -------------------- тут могла быть Ваша реклама... |
|||
|
||||
jimmi |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 122 Регистрация: 20.9.2004 Репутация: 5 Всего: 5 |
![]() Это сообщение отредактировал(а) jimmi - 7.9.2005, 16:29 |
|||
|
||||
jimmi |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 122 Регистрация: 20.9.2004 Репутация: 5 Всего: 5 |
![]() Это сообщение отредактировал(а) jimmi - 7.9.2005, 16:30 |
|||
|
||||
PILOT |
|
|||
![]() производство ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 2724 Регистрация: 4.4.2002 Где: москва Репутация: 20 Всего: 54 |
Если тебе принципиален каждый импульс, то придется использовать счетчик с последовательным считыванием (я правда не пользовал их).
Если же точности в +-8 импульсов достаточно, то можно сделать так: Поставь быстрый счетчик, который считает до 16-ти и меняет на выходе состояние (отлавливаем фронт), как только фронт изменился: в контроллере к числу +16 импульсов. Причем погрешность у тебя не набегает, а все время работы остается неизменной, равной по сумме 16-ти. СУВ. -------------------- тут могла быть Ваша реклама... |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Микроконтроллеры (MCU) и микропроцессоры (MPU)" | |
|
На данный раздел помимо Правил форума распространяются текже следующие правила:
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, PILOT, ManiaK, UniBomb, Mazzi. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Микроконтроллеры (MCU) и микропроцессоры (MPU) | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |