Страница 1 из 1

Генератор пачки импульсов

Добавлено: 01.08.2017{, 15:26}
Rovki
Уважаемые знатоки СИ ,нужен блок пользователя генератора пачки импульсов .ВХОДА - 1,Пуск(по прерыванию) 2- количество импульсов ,выход1- импульсы .Период импульсов 4мкс (можно сделать отдельный вход для задания периода ).
Сделал проект с использованием программного генератора и счетчика - не успевает .На малых частотах(сигнал пуск)  работает ,на больших  (свыше 3 гц)  не успевает сформировать пачку .Сделайте пожалуйста ,отблагодарю чем могу   .
Нужно срочно -линия стоит ...

Генератор пачки импульсов

Добавлено: 01.08.2017{, 19:18}
Rovki
Вот сын накидал код ,а как его вставить в пользовательский ???

//Макрос прерывания
void FCM_gen();

//Деклорация переменных
#define FCV_FALSE (0)
#define FCV_TRUE (1)
volatile MX_UINT32 FCV_ZAD;
volatile MX_UINT32 FCV_SHAG;
volatile MX_BOOL FCV_START;

void FCM_gen()
{

//Проверяем пин D2 на низкий фронт по срабатыванию прерывания (Защита от помех)
DDRD = DDRD & 0xFB;
FCV_START = ((PIND & 0x04) == 0x04);

//Если фронт низкий - обрабатываем прерывание
if (FCV_START == 0)
{

//Цикл
while (1)
{

//Если кол-во генерируемых импульсов(помещается в переменную "imp" меньше заданного кол-ва в переменной "zad"
if (FCV_SHAG interrupt has previously been enabled, so the macro may never get called.
#endif

Генератор пачки импульсов

Добавлено: 01.08.2017{, 19:55}
Rovki
Почитал как создавать пользовательский блок ,нашел куда вставлятькод ,но не понял как связать входа с переменными и про скобки ...что то кудато добавлять ,убирать ...

Генератор пачки импульсов

Добавлено: 01.08.2017{, 20:53}
pan
Rovki писал(а):как связать входа с переменными
вход это и есть переменная. добавляете вход , обзываете его переменной как в коде - она и будет подставляться. со входа. или имя входа вставляете вместо каких либо цифровых значений чтобы их можно было менять

Генератор пачки импульсов

Добавлено: 01.08.2017{, 21:09}
Rovki
А если в коде вход пин2 привязан уже к прерыванию ,то в схеме уже не нужно использовать , указывать как то пин2 ?

Генератор пачки импульсов

Добавлено: 01.08.2017{, 21:35}
pan
если пин жестко привязан то не надо с ним ни чего делать. на входы и в параметры назначаются переменные которые нужно менять

Генератор пачки импульсов

Добавлено: 01.08.2017{, 22:11}
Rovki
Ясно ,спасибо ,завтра код подправим и попробую .
Не удержался ,подправил - ошибки в типах данных 
Arduino: 1.8.1 (Windows 10), Плата:"Arduino Nano, ATmega328"

C:\Users\User\AppData\Local\Temp\flprog\pr8\pr8.ino: In function 'void setup()':

pr8:24: error: 'MX_UINT16' does not name a type

 volatile MX_UINT16 FCV_ZAD;

          ^

pr8:25: error: 'MX_UINT32' does not name a type

 volatile MX_UINT32 FCV_SHAG;

          ^

pr8:26: error: 'MX_BOOL' does not name a type

 volatile MX_BOOL FCV_START;

          ^

pr8:34: error: a function-definition is not allowed here before '{' token

 {

 ^

pr8:353: error: expected '}' at end of input

 }

 ^

exit status 1
'MX_UINT16' does not name a type

Этот отчёт будет иметь больше информации с
включенной опцией Файл -> Настройки ->
"Показать подробный вывод во время компиляции"

Генератор пачки импульсов

Добавлено: 01.08.2017{, 22:15}
pan
Rovki писал(а):In function 'void setup()':
может что то не туда вставили. судя по коду там нет ни чего для setup

Генератор пачки импульсов

Добавлено: 01.08.2017{, 22:36}
Rovki
Я заменил лонг инт 32 на инт16 и еще исправил ошибку -было 1 в В0ВО ,стало 0 ВО.И заменил ВО (8 пин) на В5 (пин13)

Генератор пачки импульсов

Добавлено: 02.08.2017{, 00:26}
pan
я не знаток Си, но зачем вы запихали весь код в секцию setup .
 и на объявление переменных ругается -  volatile MX_UINT32 FCV_ZAD;
может я что то не понимаю, но вроде должно быть так- volatile uint32_t FCV_ZAD;
вот примерно раскидал код. не факт что правильно.
еще ругается на строчку   ISR(INT0_vect). не до конца понял что к чему.

Генератор пачки импульсов

Добавлено: 02.08.2017{, 00:48}
Rovki
Так а я вообще не знаток .Есть код на СИ ,нужно впихнуть в блок пользовательский .Вопрос -что куда и сколько впихивать ,в описании пока не понял ...Будем ждать Автора или спеца по СИ и FL/

Генератор пачки импульсов

Добавлено: 02.08.2017{, 08:12}
pan
Rovki писал(а):Есть код на СИ
он даже в чистом виде не компилируется в ide, поэтому и блоке работать не будет.
в любом случае надо код править.

Генератор пачки импульсов

Добавлено: 02.08.2017{, 20:58}
Rovki
Добил схему ,на столе работает ,завтра буду серву крутить .
пин 2- вход с датчика -по нему отрабатывается прерывание и формируется пачка импульсов 
вход блока - задание количества импульсов по модбасу  устройство 1,регистр0 
пин13 выход импульсов
4 -rx
5- tx

Генератор пачки импульсов

Добавлено: 03.08.2017{, 16:20}
Rovki
Сегодня тестировал на железе управление серводрайвером в условиях реальных помех - резюме без оптопар ловить нечего ,а точнее все помехи ваши ,а с ними все гуд.