реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> Счет импульсов с помощью LPC2294, только внешним прерыванием или как
asen
сообщение Nov 8 2006, 08:12
Сообщение #1


Знающий
****

Группа: Свой
Сообщений: 513
Регистрация: 5-09-05
Из: Барнаул
Пользователь №: 8 220



Вот читал доку на LPC2294 и обнаружил что оказывается этот камень может считать импульсы только внешним прерыванием так как таймер у него не может производить счет внешних импульсов может кто подскажет как еще можно ?

PS: Необходимо считать импульсы с датчика частоты вращения дизеля
Go to the top of the page
 
+Quote Post
ARIM
сообщение Nov 8 2006, 09:00
Сообщение #2


Частый гость
**

Группа: Свой
Сообщений: 94
Регистрация: 14-04-05
Из: Россия
Пользователь №: 4 130



Цитата(asen @ Nov 8 2006, 11:12) *
Вот читал доку на LPC2294 и обнаружил что оказывается этот камень может считать импульсы только внешним прерыванием так как таймер у него не может производить счет внешних импульсов может кто подскажет как еще можно ?

PS: Необходимо считать импульсы с датчика частоты вращения дизеля

наверно можно попробовать использовать модуль захвата (capture) т.е. получать длительность интервала между фронтом и спадом.
Go to the top of the page
 
+Quote Post
Alex03
сообщение Nov 8 2006, 09:01
Сообщение #3


Местный
***

Группа: Свой
Сообщений: 359
Регистрация: 9-12-05
Пользователь №: 12 034



Цитата(asen @ Nov 8 2006, 13:12) *
Вот читал доку на LPC2294 и обнаружил что оказывается этот камень может считать импульсы только внешним прерыванием так как таймер у него не может производить счет внешних импульсов может кто подскажет как еще можно ?

PS: Необходимо считать импульсы с датчика частоты вращения дизеля


Зависит от того что за импульсы.
Если 1 на оборот - это одно, если десятки/сотни (а то и тысячи, но это врядли) на оборот - другое.

В первом случае:
Типовые двигатели имеют предел по оборотам 5..10 тыс.об/мин или 83..166 об/сек., что есть небольшая частота прерываний для указанного камня.
Для холостого хода (например 600 Об/мин) частота вообще будет около 10Гц. И чтобы её более/менее правильно "посчитать" надо считать долго, например секунд 10.
А это не всегда приемлимо. С другой стороны можно считать период следования импульсов, и на каждой итерации будете получать текущие обороты.
А вот период следования импульсов хорошо умеют вычислять/получать таймеры с использованием CAP входов.
Ну и програмно можно счидать период нескольких импульсов а уж потом вычислять частоту.
Go to the top of the page
 
+Quote Post
Serg_el
сообщение May 19 2011, 14:21
Сообщение #4


Местный
***

Группа: Свой
Сообщений: 302
Регистрация: 13-12-06
Из: Togliatti
Пользователь №: 23 473



Столкнулся с такой проблемой: при подсчете периода меандра и скважности с помощью входа захвата CAP0.1 (P0.27), не могу отпределить уровень на порте с помощью регистра IO0PIN. В документации написано, что данный регистр показывает состояния порта независимо от его функции за исключением аналоговой. Но регистр не реагирует пока не переключишь порт в режим input. Это errata у NXP или у меня? sm.gif
Go to the top of the page
 
+Quote Post
Alechek
сообщение May 20 2011, 08:52
Сообщение #5


Профессионал
*****

Группа: Свой
Сообщений: 1 241
Регистрация: 15-11-05
Из: Челябинск
Пользователь №: 10 882



Уровень смотрите после возникновения прерывания по CAP0.1?
Полагаю, что проблема не в функции, а в задержках. Попробуйте прочитать IO0PIN через тактов 10 процессора.
Вообще ведь не проблема разрешать прерывания только по одному фронту.... wink.gif
Go to the top of the page
 
+Quote Post
zksystem
сообщение May 22 2011, 08:54
Сообщение #6


embedder
***

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



где-то подобную реализацию на PIC контроллере видел, там импульсы заводились на вход тактирования таймера, таким образом сам таймер считал импульсы. Может что-то подобное есть и у LPC?


--------------------
Мечты стареют куда быстрее мечтателей… Стивен Кинг. "Ловец снов"
Go to the top of the page
 
+Quote Post
Serg_el
сообщение May 22 2011, 23:19
Сообщение #7


Местный
***

Группа: Свой
Сообщений: 302
Регистрация: 13-12-06
Из: Togliatti
Пользователь №: 23 473



Цитата(Alechek @ May 20 2011, 12:52) *
Уровень смотрите после возникновения прерывания по CAP0.1?
Полагаю, что проблема не в функции, а в задержках. Попробуйте прочитать IO0PIN через тактов 10 процессора.
Вообще ведь не проблема разрешать прерывания только по одному фронту.... wink.gif


Именно после прерывания. Задержку попробую. Если разрешать только по одному фронту, то в прерывании придется каждый раз менять фронт (это для скважности). Интересно стандартной возможностью воспользоваться, ведь очень удобно.

Цитата(zksystem @ May 22 2011, 12:54) *
где-то подобную реализацию на PIC контроллере видел, там импульсы заводились на вход тактирования таймера, таким образом сам таймер считал импульсы. Может что-то подобное есть и у LPC?


Так задача ведь не только считать, но и скважность определять.
Go to the top of the page
 
+Quote Post
Alechek
сообщение May 23 2011, 06:24
Сообщение #8


Профессионал
*****

Группа: Свой
Сообщений: 1 241
Регистрация: 15-11-05
Из: Челябинск
Пользователь №: 10 882



Цитата(Serg_el @ May 23 2011, 05:19) *
Именно после прерывания. Задержку попробую. Если разрешать только по одному фронту, то в прерывании придется каждый раз менять фронт (это для скважности). Интересно стандартной возможностью воспользоваться, ведь очень удобно.

в том то и дело, что стандартной возможности нет. из прерывания не определить источник sad.gif
смотреть GPIO считаю неразумным. ведь это получается два абсолютно несвязных события. вдруг длительность импульса маленькая будет (помеха) - поймали один фронт, а посчитали за другой....
сам меняю фронт в прерывании. надежней.
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 18th June 2025 - 08:40
Рейтинг@Mail.ru


Страница сгенерированна за 0.01422 секунд с 7
ELECTRONIX ©2004-2016