Вопрос по прерыванию.
|
|
xxxmonejall |
Дата: Пт, 28.08.2009, 00:51 | Сообщение # 1 |
Группа:
Проверенные
Ранг:
Продвинутый
Сообщений:
139
Замечания:
±
На сайте с 17.05.2008
Статус:
Offline
|
Возможно ли считать время между прерываниями и записывать его в переименую. И если это возможно как это сделать????
|
|
|
|
ADMIN |
Дата: Пт, 28.08.2009, 11:53 | Сообщение # 2 |
Администратор
Группа:
Администраторы
Ранг:
Специалист
Сообщений:
1086
Замечания:
±
На сайте с 20.08.2007
Статус:
Offline
|
Конечно можно. Между какими прерываниями, во-первых? Давайте подробней формулировать вопросы.
|
|
|
|
brown |
Дата: Пт, 28.08.2009, 11:57 | Сообщение # 3 |
Группа:
Пользователи
Ранг:
Помогаю всем
Сообщений:
333
Замечания:
±
На сайте с 18.09.2007
Статус:
Offline
|
Сделать аппаратный таймер (Timer0 or Timer1), а в теле прерывания считывать-расчитывать и сбрасывать его.
Век живи - век учись! К концу жизни поймешь, что ничего не знаешь...
|
|
|
|
xxxmonejall |
Дата: Пт, 28.08.2009, 19:58 | Сообщение # 4 |
Группа:
Проверенные
Ранг:
Продвинутый
Сообщений:
139
Замечания:
±
На сайте с 17.05.2008
Статус:
Offline
|
Ну есть 58 импульсов, после них идет пауза длиной в два импульса, их нет там просто 0 но длиной в 2 импульса. Есть Pic16f84, к порту Б0 подключен вывод по которому идут вот эти импульсы, и программа которая (прерівание) тоисть когда на єтом порте есть 1 тогда чето там сварганить. Так вот мне нужно просто узнавать время между прерываниями, а вообще мне нужно отслеживать вот тот ноль длиной в 2 импульса. И начать от него отсчет. Импульсов и по приходе ну там 34-го что-то там сделать!
|
|
|
|
brown |
Дата: Пт, 28.08.2009, 22:36 | Сообщение # 5 |
Группа:
Пользователи
Ранг:
Помогаю всем
Сообщений:
333
Замечания:
±
На сайте с 18.09.2007
Статус:
Offline
|
Я думаю можно применить следующий алгоритм: 1. Предварительно оценить период следования импульсов т.е. Тмакс и Тмин, чтобы правильно выбрать Кдел прескалера: Чтобы переполнение таймера TMR0 происходило не раньше 3*Тмакс. 2. В подпрограмме прерывания первым делом считиваем таймер Timer1=TMR0 Сброс TMR0=0 Timer2=Timer1 Nimp=Nimp+1 IF Timer1>Timer2*2 Then Nimp=1 ; прерывание вызвано 1-м импульсом 3. Дальше ваше действие If Nimp=34 then .................... Есть одно но: подпрога прерывания должна выполниться быстрее Тмин
Век живи - век учись! К концу жизни поймешь, что ничего не знаешь...
|
|
|
|
Dmitry |
Дата: Сб, 29.08.2009, 01:01 | Сообщение # 6 |
Группа:
Пользователи
Ранг:
Могу и подсказать
Сообщений:
157
Замечания:
±
На сайте с 12.05.2009
Статус:
Offline
|
Чет вы замудрили. Прерывания, таймеры, прескалеры Все гораздо проще. Цикл, в цикле опрашиваем ногу, наращиваем переменную-счетчик. Нога сработала (зуб пришел) - значение счетчика переписываем в доп. переменную, счетчик сбрасываем. Опять крутим этот же цикл, ждем следующий зуб, снова наращиваем счетчик. И в этом же цикле условие - если счетчик превышает доп. переменную (т.е. предыдущее значение счетчика) более чем в 1,5 раза,то все - это дырка в зубьях. Ну не упадут обороты более чем в 1,5 раза за время интервала между зубьями xxxmonejall, скажи, в чем я неправ.
|
|
|
|
brown |
Дата: Сб, 29.08.2009, 10:25 | Сообщение # 7 |
Группа:
Пользователи
Ранг:
Помогаю всем
Сообщений:
333
Замечания:
±
На сайте с 18.09.2007
Статус:
Offline
|
Quote (Dmitry) Цикл, в цикле опрашиваем ногу Прерывание по переходу из 0 в 1 Quote (Dmitry) наращиваем переменную-счетчик Таймер-счетчик сам работает Quote (Dmitry) Нога сработала (зуб пришел) - значение счетчика переписываем в доп. переменную, счетчик сбрасываем. Quote (brown) Timer1=TMR0 Сброс TMR0=0 Timer2=Timer1 Quote (Dmitry) И в этом же цикле условие - если счетчик превышает доп. переменную (т.е. предыдущее значение счетчика) более чем в 1,5 раза,то все - это дырка в зубьях. Quote (brown) IF Timer1>Timer2*2 Then Nimp=1 ; прерывание вызвано 1-м импульсом Quote (Dmitry) Ну не упадут обороты более чем в 1,5 раза за время интервала между зубьями Я тоже так подумал Итог: теже яйца не много с другого бока! Ну и просили с прерываниями.
Век живи - век учись! К концу жизни поймешь, что ничего не знаешь...
|
|
|
|
xxxmonejall |
Дата: Сб, 29.08.2009, 12:00 | Сообщение # 8 |
Группа:
Проверенные
Ранг:
Продвинутый
Сообщений:
139
Замечания:
±
На сайте с 17.05.2008
Статус:
Offline
|
Ребята не грузити. Поподробней если можно. А то я что-то ниче не понял. Я только начинающий!
|
|
|
|
brown |
Дата: Сб, 29.08.2009, 13:02 | Сообщение # 9 |
Группа:
Пользователи
Ранг:
Помогаю всем
Сообщений:
333
Замечания:
±
На сайте с 18.09.2007
Статус:
Offline
|
Трижды описан алгоритм. Поподробней, чего не понял.
Век живи - век учись! К концу жизни поймешь, что ничего не знаешь...
|
|
|
|