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

 
 
3 страниц V  < 1 2 3 >  
Reply to this topicStart new topic
> Простой делитель на простом МК ATMEL?, нужно состряпать делитель макс 10Гц на 10, 4 канала.
The Fresh
сообщение Apr 14 2008, 19:06
Сообщение #16


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

Группа: Новичок
Сообщений: 146
Регистрация: 3-12-06
Пользователь №: 23 071



Цитата
Не совсем понятно: зачем формируется единица с задержкой Nмсек?

Это для того, чтобы прибор перед которым, будет ставиться делитель, смог стопроцентно захватить импульс.
Go to the top of the page
 
+Quote Post
domowoj
сообщение Apr 15 2008, 00:59
Сообщение #17


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

Группа: Участник
Сообщений: 1 548
Регистрация: 20-12-07
Из: г.Новосибирск
Пользователь №: 33 486



Цитата(The Fresh @ Apr 15 2008, 02:06) *
Это для того, чтобы прибор перед которым, будет ставиться делитель, смог стопроцентно захватить импульс.


Не вижу в ваших сишных виршах делителя на 10.
Если на вых. нужен меандр нужно фиксировать 5-й входной импульс,
если не меандр , то любой другой(девятый).
Т.е. с приходом 9-ого вх. имп. изменяете состояние вых., с приходом 10-ого - на противоположное.
Посмотрите диаграммы работы любого счетчика.


--------------------
И на камнях растут деревья!
Go to the top of the page
 
+Quote Post
Палыч
сообщение Apr 15 2008, 04:52
Сообщение #18


Гуру
******

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



Цитата(The Fresh @ Apr 14 2008, 22:06) *
Это для того, чтобы прибор перед которым, будет ставиться делитель, смог стопроцентно захватить импульс.
А, разве меандр сформировать не проще? Или обязательно нужен выходной импульс строго опредлеленной длительности после десяти импульсов на входе? Огласите условие поставленной задачи подробнее.
Go to the top of the page
 
+Quote Post
The Fresh
сообщение Apr 15 2008, 13:15
Сообщение #19


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

Группа: Новичок
Сообщений: 146
Регистрация: 3-12-06
Пользователь №: 23 071



Нужен простой декадный делитель на 4 канала, входная частота максимум 5 Гц, так как на выходе нужен импульс пошире, чем ширина входного импульса, то формировать его надо с приходом 10-го импульса и держать скажем 1 сек. Это маленько выбивается из понятий обычных счетчиков, но таковы условия задачи.
Go to the top of the page
 
+Quote Post
Палыч
сообщение Apr 15 2008, 13:34
Сообщение #20


Гуру
******

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



Ну, так оно и получается. Вам и никто не советовал выбрасывать девять импульсов из десяти. Если выходной сигнал менять на противоположный после каждых десяти изменений сигнала на входе - получите меандр. Так сделано в наброске программы в посте выше (№15). При 5 Гц на входе 5/10=0,5 Гц на выходе - импульс будет ровно 1 сек. При меньшей входной частоте - еще больше по времени.
Go to the top of the page
 
+Quote Post
domowoj
сообщение Apr 15 2008, 13:56
Сообщение #21


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

Группа: Участник
Сообщений: 1 548
Регистрация: 20-12-07
Из: г.Новосибирск
Пользователь №: 33 486



Цитата(Палыч @ Apr 15 2008, 20:34) *
Если выходной сигнал менять на противоположный после каждых десяти изменений сигнала на входе - получите меандр.

Это получится делитель на 20.
А вот если 5-того импульса менять, то на 10 и как раз 1сек.


--------------------
И на камнях растут деревья!
Go to the top of the page
 
+Quote Post
Палыч
сообщение Apr 15 2008, 15:12
Сообщение #22


Гуру
******

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



Цитата(domowoj @ Apr 15 2008, 16:56) *
Это получится делитель на 20.
Неправильно. Делитель на 20 получился бы, если бы мы считали не изменения на входе, а, например, нарастающие фронты, т.е. переходы из 0 в 1. Поскольку считаются любые изменения (из 0 в 1, из 1 в 0), то получается делитель на 10.
Go to the top of the page
 
+Quote Post
domowoj
сообщение Apr 15 2008, 15:37
Сообщение #23


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

Группа: Участник
Сообщений: 1 548
Регистрация: 20-12-07
Из: г.Новосибирск
Пользователь №: 33 486



Цитата(Палыч @ Apr 15 2008, 20:34) *
после каждых десяти изменений сигнала на входе


Извините, не рассмотрел.
Я говорил о фронтах(спадах), атак, впринципе, говорим об одном и том же.


--------------------
И на камнях растут деревья!
Go to the top of the page
 
+Quote Post
tazik
сообщение Apr 16 2008, 04:49
Сообщение #24


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

Группа: Свой
Сообщений: 195
Регистрация: 13-05-07
Из: Норильск
Пользователь №: 27 691



Цитата
Нужен простой декадный делитель на 4 канала, входная частота максимум 5 Гц, так как на выходе нужен импульс пошире, чем ширина входного импульса, то формировать его надо с приходом 10-го импульса и держать скажем 1 сек. Это маленько выбивается из понятий обычных счетчиков, но таковы условия задачи.


В смысле так что-ли?
Прикрепленное изображение


Исходники на асме
Прикрепленный файл  frq_div2.rar ( 21.36 килобайт ) Кол-во скачиваний: 101
Go to the top of the page
 
+Quote Post
The Fresh
сообщение Apr 17 2008, 11:27
Сообщение #25


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

Группа: Новичок
Сообщений: 146
Регистрация: 3-12-06
Пользователь №: 23 071



Я наверное изначально неправильно вопрос поставил, считать надо не количество изменений на входе а именно количество импульсов, т.е. физического как он есть и соответственно событие либо по переднему либо по заднему фронту. Если выбрать по переднему фронту то код надо менять так. Далее импульс на выходе будем формировать скажем после прихода 6, а скидывать с 10 т.е. ширина импульса на выходе будет всегда в диапазоне времени от 1-го до 10-го импульса вне зависимости от частоты и если вдруг питание пропадет то округление будет типа математичского (практически если брать 5 а не 6). Если неправ поправьте.
Код
void main(void)
{
  // Инициализация
  x1= IN1;  c1=0;  OUT1= 0;
  x2= IN2;  c2=0;  OUT2= 0;
  x3= IN3;  c3=0;  OUT3= 0;
  x4= IN4;  c4=0;  OUT4= 0;

  //...................
     // Делитель на 10
    if(x1 != IN1)&(IN1==1)
    {
      x1= IN1;
      ++c1;
      if(c1 == 6)  { OUT1=1; }
      if(c1 == 10)  { c1= 0; OUT1=0; }
    }
if(x2 != IN2)&(IN2==1)
    {
      x2= IN2;
      ++c2;
      if(c2 == 6)  { OUT2=1; }
      if(c2 == 10)  { c2= 0; OUT2=0; }
    }

if(x3 != IN3)&(IN3==1)
    {
      x3= IN3;
      ++c3;
      if(c3 == 6)  { OUT3=1; }
      if(c3 == 10)  { c3= 0; OUT3=0; }
    }
if(x4 != IN4)&(IN4==1)
    {
      x4= IN4;
      ++c4;
      if(c4 == 6)  { OUT4=1; }
      if(c4 == 10)  { c4= 0; OUT4=0; }
    }

    //................

}


Сообщение отредактировал The Fresh - Apr 17 2008, 11:30
Go to the top of the page
 
+Quote Post
Палыч
сообщение Apr 17 2008, 12:01
Сообщение #26


Гуру
******

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



После Ваших объяснений стало ещё более непонятно - "что же Вам нужно"? В чём отличие Вашего устройства от обычного делителя частоты?
Go to the top of the page
 
+Quote Post
The Fresh
сообщение Apr 18 2008, 11:40
Сообщение #27


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

Группа: Новичок
Сообщений: 146
Регистрация: 3-12-06
Пользователь №: 23 071



Вобщем вот
Прикрепленные файлы
Прикрепленный файл  ________________.bmp ( 19.64 килобайт ) Кол-во скачиваний: 26
 
Go to the top of the page
 
+Quote Post
domowoj
сообщение Apr 18 2008, 12:01
Сообщение #28


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

Группа: Участник
Сообщений: 1 548
Регистрация: 20-12-07
Из: г.Новосибирск
Пользователь №: 33 486



Цитата(domowoj @ Apr 15 2008, 07:59) *
Если на вых. нужен меандр нужно фиксировать 5-й входной импульс,
с приходом 10-ого - на противоположное.

Вам это и предлагали.

Цитата(Палыч @ Apr 15 2008, 20:34) *
Если выходной сигнал менять на противоположный после каждых десяти изменений сигнала на входе - получите меандр.

Или это.


--------------------
И на камнях растут деревья!
Go to the top of the page
 
+Quote Post
Палыч
сообщение Apr 18 2008, 12:11
Сообщение #29


Гуру
******

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



Цитата(The Fresh @ Apr 18 2008, 14:40) *
Вобщем вот
Простой делитель... Меандр... Что не устраивает в том, что Вам здесь предлагали?
Go to the top of the page
 
+Quote Post
The Fresh
сообщение Apr 18 2008, 15:12
Сообщение #30


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

Группа: Новичок
Сообщений: 146
Регистрация: 3-12-06
Пользователь №: 23 071



До конца не разобрал код. Меня смутило то что в счетчике учитывается изменение сигнала
т.е. счетчик покажет 10 уже после 5 импульсов, вот это и смутило. Теперь после Ваших недоумений, еще раз пересмотрел код и понял что вот это OUTi= ~OUTi; будет менять выход на 10 импульсе в обратное состояние. Разница в моем и вашем коде в том, что у Вас он сделан рациональнее, а я не усмотрел алгоритма. Вот и все.

Код
void main(void)
{
  // Инициализация
  xi= INi;  ci=0;  OUTi= 0;
  //...................
  for(;;)
  {
    // Делитель на 10
    if(xi != INi)
    {
      xi= INi;
      if((++ci) == 10)  { ci= 0; OUTi= ~OUTi; }
    }
    //................
  }
}
Go to the top of the page
 
+Quote Post

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

 


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


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