Подсчет каждого нечетного импульса

Вопросы настройки, программирования, прошивки микроконтроллеров и микросхем программируемой логики
Закрыто
Аватара пользователя
Digital
Открыл глаза
Сообщения: 78
Зарегистрирован: Сб сен 13, 2008 16:23:09
Откуда: Kaluga
Контактная информация:

Подсчет каждого нечетного импульса

Сообщение Digital »

Подскажите пожалуйста!

Не пойму как реализовать (пользуюсь cvavr) подсчет каждого нечетного импульса. Может кто-нибудь посоветовать? Задача такая: в бесконечном цикле отсчитывать пачку из 58 импульсов, затем пауза на 2 импульса и т.д., а по каждой нечетной пачке генерировать 1 импульс. Но получается только на каждую пачку генерить :(
Реклама
Аватара пользователя
Aheir
Модератор
Сообщения: 4517
Зарегистрирован: Пн апр 03, 2006 11:43:25
Откуда: Санкт - Петербург
Контактная информация:

Сообщение Aheir »

Ну так заведите переменную, которая будет увеличиваться на 1 при приеме каждой новой пачки и по нечетному значению этой переменной генерируйте нужный импульс. :)
Оптимизм х (Опыт + Знания) = const
Реклама
TechMike
Прорезались зубы
Сообщения: 247
Зарегистрирован: Сб дек 15, 2007 23:00:54
Откуда: Moscow
Контактная информация:

Re: Подсчет каждого нечетного импульса

Сообщение TechMike »

Digital писал(а):Подскажите пожалуйста!

Не пойму как реализовать (пользуюсь cvavr) подсчет каждого нечетного импульса. Может кто-нибудь посоветовать? Задача такая: в бесконечном цикле отсчитывать пачку из 58 импульсов, затем пауза на 2 импульса и т.д., а по каждой нечетной пачке генерировать 1 импульс. Но получается только на каждую пачку генерить :(


Включаеш прерывание по фронту внешнего импульса, например на ноге INT0 и накапливаеш в переменной кол-во выходов в прерывание. На нужном значении переменной, дергаеш еще какой-либо ногой МК. далее возможны вариации.....
Аватара пользователя
Dr. Alex
Это не хвост, это антенна
Сообщения: 1438
Зарегистрирован: Вт окт 28, 2008 09:00:18
Откуда: Украина, Харьков
Контактная информация:

Сообщение Dr. Alex »

Или завести переменную, которая увеличивается на 1. Когда переменная будет равна 2, выдавать нужную тебе пачку и сбрасывать переменную в 0.
Так и получится каждый чётный импульс...
Порой мне кажется, что я делаю какое-то дерьмо, но когда я вижу, что делают другие, то я чувствую себя гением...
Реклама
Эиком - электронные компоненты и радиодетали
kostya740
Родился
Сообщения: 19
Зарегистрирован: Пн ноя 03, 2008 23:26:41

Сообщение kostya740 »

Я б не использовал увелечение переменной(инкремент). можно упереться в предел значения переменной. пробуй мой вариант.

Код: Выделить всё

bit chet = 0;
if(chet == 1)
{
      // сдесь твои операции четного кода

      chet = !chet;
}
else
{
     chet = !chet;
}
Реклама
Аватара пользователя
Digital
Открыл глаза
Сообщения: 78
Зарегистрирован: Сб сен 13, 2008 16:23:09
Откуда: Kaluga
Контактная информация:

Подсчет каждого нечетного импульса

Сообщение Digital »

Спасибо за советы, обдумаю еще раз, попробую на недельке. Сначала думал тоже о переменной, но не смог сформулировать условие нечетности числа (как запрограммировать условие, что число считать нечетным, если оно не делится без остатка на 2). Может есть у кого варианты реализации этого условия?
Реклама
kostya740
Родился
Сообщения: 19
Зарегистрирован: Пн ноя 03, 2008 23:26:41

Сообщение kostya740 »

Деление числа без остатка.

Код: Выделить всё

if(!(x%2))
{
}


Но я б использовал мой вариант выше. Тактов процессор должен тратить меньше.
Аватара пользователя
Digital
Открыл глаза
Сообщения: 78
Зарегистрирован: Сб сен 13, 2008 16:23:09
Откуда: Kaluga
Контактная информация:

Подсчет каждого нечетного импульса

Сообщение Digital »

Обязательно попробую все варианты.
Кашпо
Опытный кот
Сообщения: 764
Зарегистрирован: Пт фев 02, 2007 10:19:58
Откуда: Железногорск

Сообщение Кашпо »

микропроцессорное зажигание мутите ;) ?
smac
Мучитель микросхем
Сообщения: 459
Зарегистрирован: Вс июн 01, 2008 12:16:38

Re: Подсчет каждого нечетного импульса

Сообщение smac »

Digital писал(а):Спасибо за советы, обдумаю еще раз, попробую на недельке. Сначала думал тоже о переменной, но не смог сформулировать условие нечетности числа (как запрограммировать условие, что число считать нечетным, если оно не делится без остатка на 2). Может есть у кого варианты реализации этого условия?

Младший бит числа проверить, если 0 - четное.
например счетчик

Код: Выделить всё

unsigned char count=0
...
if (!(count&0b1)){
do something
}

инкрементировать естественно по приему каждой пачки импульсов, если упрестя в конечное значение - должен с нуля считать начать
Аватара пользователя
Digital
Открыл глаза
Сообщения: 78
Зарегистрирован: Сб сен 13, 2008 16:23:09
Откуда: Kaluga
Контактная информация:

Подсчет каждого нечетного импульса

Сообщение Digital »

Кашпо писал(а):микропроцессорное зажигание мутите ;) ?

Нет, девайс попроще. имитатор сигнала датчика положения КВ для проверки контроллера инжектора на "столе".
Аватара пользователя
Digital
Открыл глаза
Сообщения: 78
Зарегистрирован: Сб сен 13, 2008 16:23:09
Откуда: Kaluga
Контактная информация:

Подсчет каждого нечетного импульса

Сообщение Digital »

Выкладываю, так сказать, побочный продукт обсуждаемой темы. Может кому-нибудь пригодится. Это делитель частоты на 2, ну или аналог Т-триггера, без использования таймеров МК AVR. Нужная частота задается функцией delay_us(х) или delay_ms(х).

//Компилятор CodeVisionAVR
#include <mega16_h>
#include <delay_h>
unsigned char chet;
void initialization(void)
{
PORTA=0; DDRA=0;
PORTB=0x3F; DDRB=0xC0;
PORTC=0; DDRC=0;
PORTD=0; DDRD=0;
}
void main(void)
{
initialization();
while(1)
{
PORTB.6^=(1<<0);
delay_us(1250);
chet++;
if((chet%2)==1)
{
PORTB.7^=(1<<0);
}
}
}

P.S. с определением нечётности разобрался. Всем ответившим спасибо.
Последний раз редактировалось Digital Пт ноя 21, 2008 18:23:21, всего редактировалось 2 раза.
Аватара пользователя
Igor_67
Электрический кот
Сообщения: 1051
Зарегистрирован: Вт окт 21, 2008 11:46:23
Откуда: Барнаул

Сообщение Igor_67 »

Ну ты паришься!? Смотри пост выше у Kostya740! Там всё правильно! Чёт-нечёт. Какие проблемы?
Цапу крутить надо!!! Ку или не ку?
Аватара пользователя
Digital
Открыл глаза
Сообщения: 78
Зарегистрирован: Сб сен 13, 2008 16:23:09
Откуда: Kaluga
Контактная информация:

Подсчет каждого нечетного импульса

Сообщение Digital »

Igor_67 писал(а):Ну ты паришься!? Смотри пост выше у Kostya740! Там всё правильно! Чёт-нечёт. Какие проблемы?


No problem, sir :)
Аватара пользователя
Igor_67
Электрический кот
Сообщения: 1051
Зарегистрирован: Вт окт 21, 2008 11:46:23
Откуда: Барнаул

Сообщение Igor_67 »

Ну так и чё???
Цапу крутить надо!!! Ку или не ку?
Аватара пользователя
Digital
Открыл глаза
Сообщения: 78
Зарегистрирован: Сб сен 13, 2008 16:23:09
Откуда: Kaluga
Контактная информация:

Подсчет каждого нечетного импульса

Сообщение Digital »

Igor_67 писал(а):Ну так и чё???


хм. ??? По этой теме ничего.
Другие проблемы еще не сформулировал.
Закрыто

Вернуться в «Микроконтроллеры и ПЛИС»