| Вопрос по прерыванию. | 
|  | 
| 
 
 
 
 | xxxmonejall | Дата: Пт, 28.08.2009, 00:51  |                                                                                                                Сообщение # 1 |  
 |   
 
 
 
 
  Группа:
  Проверенные
 
  Ранг: 
 
 Продвинутый
 
  
 Сообщений: 
 
 
 139
 
 
 Замечания: ± На сайте с 17.05.2008
 
 
 Статус: 
 Offline
 
 | Возможно ли считать время между прерываниями и записывать его в переименую. И если это возможно как это сделать???? |  
 |  |  |  | 
| 
 
 
 
 | ADMIN | Дата: Пт, 28.08.2009, 11:53  |                                                                                                                Сообщение # 2 |  
 |   
 
 Администратор
 
 
  Группа:
  Администраторы
 
  Ранг: 
 
 Специалист
 
  
 Сообщений: 
 
 
 1082
 
 
 Замечания: ± На сайте с 20.08.2007
 
 
 Статус: 
 Offline
 
 | Конечно можно. Между какими прерываниями, во-первых? Давайте подробней формулировать вопросы.
 |  
 |  |  |  | 
| 
 
 
 
 | brown | Дата: Пт, 28.08.2009, 11:57  |                                                                                                                Сообщение # 3 |  
 |   
 
 
 
 
  Группа:
  Пользователи
 
  Ранг: 
 
 Помогаю всем
 
  
 Сообщений: 
 
 
 331
 
 
 Замечания: ± На сайте с 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 |  
 |   
 
 
 
 
  Группа:
  Пользователи
 
  Ранг: 
 
 Помогаю всем
 
  
 Сообщений: 
 
 
 331
 
 
 Замечания: ± На сайте с 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 |  
 | ![Dmitry]()  
 
 
 
 
  Группа:
  Пользователи
 
  Ранг: 
 
 Могу и подсказать
 
  
 Сообщений: 
 
 
 157
 
 
 Замечания: ± На сайте с 12.05.2009
 
 
 Статус: 
 Offline
 
 | Чет вы замудрили. Прерывания, таймеры, прескалеры   Все гораздо проще.
 Цикл, в цикле опрашиваем ногу, наращиваем переменную-счетчик.
 Нога сработала (зуб пришел) - значение счетчика переписываем в доп. переменную, счетчик сбрасываем.
 Опять крутим этот же цикл, ждем следующий зуб, снова наращиваем счетчик. И в этом же цикле условие - если счетчик превышает доп. переменную (т.е. предыдущее значение счетчика) более чем в 1,5 раза,то все - это дырка в зубьях. Ну не упадут обороты более чем в 1,5 раза за время интервала между зубьями
   xxxmonejall, скажи, в чем я неправ.
 |  
 |  |  |  | 
| 
 
 
 
 | brown | Дата: Сб, 29.08.2009, 10:25  |                                                                                                                Сообщение # 7 |  
 |   
 
 
 
 
  Группа:
  Пользователи
 
  Ранг: 
 
 Помогаю всем
 
  
 Сообщений: 
 
 
 331
 
 
 Замечания: ± На сайте с 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 |  
 |   
 
 
 
 
  Группа:
  Пользователи
 
  Ранг: 
 
 Помогаю всем
 
  
 Сообщений: 
 
 
 331
 
 
 Замечания: ± На сайте с 18.09.2007
 
 
 Статус: 
 Offline
 
 | Трижды описан алгоритм. Поподробней, чего не понял. 
 Век живи - век учись! К концу жизни поймешь, что ничего не знаешь...
 |  
 |  |  |  |