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

 
 
 
Reply to this topicStart new topic
> Помогите с подсчетом импульсов
Neytrino
сообщение Apr 21 2009, 08:15
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 53
Регистрация: 26-02-09
Пользователь №: 45 406



В общем начал изучать микроконтроллеры AVR, остановился на ATMega16 + IAR как среда разработки. Ну естественно, зародилась идея построить для своей ВАЗ2105 приборную доску, но не могу победить никак счетчик импульсов (зажигание, скорость). Точнее я даже не представляю как подступиться к выполнению этой задачи. Смотрел в соседних ветках, там все на ассемблере, а я в нем, как в нотной грамоте - полный ноль. Люди, помогите пожалуйста кодом для С, хотябы для примера
Go to the top of the page
 
+Quote Post
Herz
сообщение Apr 21 2009, 10:30
Сообщение #2


Гуру
******

Группа: Модераторы
Сообщений: 10 983
Регистрация: 23-11-05
Пользователь №: 11 287



Начните с тщательного изучения документации на контроллер. Когда принцип работы таймеров станет понятным, решение возникнет само собой. Может быть, пригодится это.
Причина редактирования: Ненужное цитирование.
Go to the top of the page
 
+Quote Post
Neytrino
сообщение Apr 21 2009, 10:44
Сообщение #3


Участник
*

Группа: Участник
Сообщений: 53
Регистрация: 26-02-09
Пользователь №: 45 406



Да таймер запустить получается, не получается его тактировать извне
Go to the top of the page
 
+Quote Post
Палыч
сообщение Apr 21 2009, 11:37
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 2 399
Регистрация: 10-05-06
Из: г. Новочеркасск
Пользователь №: 16 954



Цитата(Neytrino @ Apr 21 2009, 13:44) *
не получается его тактировать извне
Вы код приведите в котором это не получается. Кто-то, может, подскажет - где ошибка.
Go to the top of the page
 
+Quote Post
Herz
сообщение Apr 21 2009, 21:56
Сообщение #5


Гуру
******

Группа: Модераторы
Сообщений: 10 983
Регистрация: 23-11-05
Пользователь №: 11 287



Цитата(Neytrino @ Apr 21 2009, 12:44) *
Да таймер запустить получается, не получается его тактировать извне

Ну, причина может быть только одна - не разобрались с настройками. Если тактируете изнутри - всё работает?
Go to the top of the page
 
+Quote Post
Neytrino
сообщение Apr 22 2009, 08:07
Сообщение #6


Участник
*

Группа: Участник
Сообщений: 53
Регистрация: 26-02-09
Пользователь №: 45 406



так пока что-то наклевывается, да бы не спугнуть - молчу smile.gif Вопрос - а если мне нужно несколько , скаже 2 таких входа? что делать? Вход на тактирование только один вроде sad.gif
Go to the top of the page
 
+Quote Post
Палыч
сообщение Apr 22 2009, 08:17
Сообщение #7


Гуру
******

Группа: Свой
Сообщений: 2 399
Регистрация: 10-05-06
Из: г. Новочеркасск
Пользователь №: 16 954



Цитата(Neytrino @ Apr 22 2009, 11:07) *
Вопрос - а если мне нужно несколько , скаже 2 таких входа? что делать?
В m16 таких входов как раз - два. Правда: один вход (Т0) - 8-миразрядного счетчика, другой (Т1) - 16-тиразрядного.
Go to the top of the page
 
+Quote Post
mdmitry
сообщение Apr 22 2009, 11:40
Сообщение #8


Начинающий профессионал
*****

Группа: Свой
Сообщений: 1 215
Регистрация: 25-10-06
Из: СПб
Пользователь №: 21 648



Цитата(Herz @ Apr 21 2009, 14:30) *
Начните с тщательного изучения документации на контроллер. Когда принцип работы таймеров станет понятным, решение возникнет само собой. Может быть, пригодится это.

Учтите, что это ресурсоёмко, так как ориентировано на максимально широкий круг применения часто с избыточной функциональностью. НО идеи заложены хорошие и познакомиться с исходными кодами очень полезно.


--------------------
Наука изощряет ум; ученье вострит память. Козьма Прутков
Go to the top of the page
 
+Quote Post
Neytrino
сообщение Apr 22 2009, 15:28
Сообщение #9


Участник
*

Группа: Участник
Сообщений: 53
Регистрация: 26-02-09
Пользователь №: 45 406



А для чего тогда вход ICP?

А если источников импульсов больше чем 2?
Можно это решить каким-то другим способом? не через счетчики аппаратные
Go to the top of the page
 
+Quote Post
Iptash
сообщение Apr 22 2009, 16:41
Сообщение #10


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

Группа: Свой
Сообщений: 1 613
Регистрация: 2-09-08
Из: г.Набережные Челны
Пользователь №: 39 936



Цитата(Neytrino @ Apr 22 2009, 19:28) *
А для чего тогда вход ICP?

А если источников импульсов больше чем 2?
Можно это решить каким-то другим способом? не через счетчики аппаратные


Можно програмно опрашивать задействованные тобой входа на предмет смены уровня сигнала и соответсвенно суммировать или вычитать какую то переменную, но есть 100%
вероятность потери импульсов, можно задействовать входа внешнего прерывания и по прерыванию также что нибуть делать, но здесь большие ограничения по максимальной входной частоте. А вообще по AVR очень много описания и примеров на Русском.
Go to the top of the page
 
+Quote Post
Neytrino
сообщение Apr 23 2009, 19:05
Сообщение #11


Участник
*

Группа: Участник
Сообщений: 53
Регистрация: 26-02-09
Пользователь №: 45 406



Цитата(Iptash @ Apr 22 2009, 20:41) *
Можно програмно опрашивать задействованные тобой входа на предмет смены уровня сигнала и соответсвенно суммировать или вычитать какую то переменную, но есть 100%
вероятность потери импульсов, можно задействовать входа внешнего прерывания и по прерыванию также что нибуть делать, но здесь большие ограничения по максимальной входной частоте. А вообще по AVR очень много описания и примеров на Русском.

А можно поподробнее, как это? Хотя бы алгоритм, пожалуйста
Go to the top of the page
 
+Quote Post
AndreyKeil
сообщение Apr 23 2009, 20:03
Сообщение #12


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

Группа: Свой
Сообщений: 96
Регистрация: 16-11-05
Из: г.Екатеринбург
Пользователь №: 10 930



Вот пример программного опроса двух портов процессора:
Код
//Cnt0,Cnt1 - счётчики изменений портов,
//PINB - порт B процессора,

void main() {
unsigned char tmp;

    PortXXX = PINB & 0x3;   //считываем только два бита порта
    tmp = PortXXX ^ Chang;
    if (tmp & 01) {
        Cnt0++;    //... здесь произошло изменение порта PB.0
    }

    if (tmp & 02) {
        Cnt1++;    //... здесь произошло изменение порта PB.1
    }

    Chang = PortXXX;
}
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 22nd July 2025 - 06:20
Рейтинг@Mail.ru


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