Страница 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
Сегодня тестировал на железе управление серводрайвером в условиях реальных помех - резюме без оптопар ловить нечего ,а точнее все помехи ваши ,а с ними все гуд.