Генератор пачки импульсов
- Rovki
- Полковник
- Сообщения: 5732
- Зарегистрирован: 22 апр 2016, 17:25
- Откуда: Чехов
- Имя: Анатолий
- Благодарил (а): 68 раз
- Поблагодарили: 222 раза
- Контактная информация:
Генератор пачки импульсов
Уважаемые знатоки СИ ,нужен блок пользователя генератора пачки импульсов .ВХОДА - 1,Пуск(по прерыванию) 2- количество импульсов ,выход1- импульсы .Период импульсов 4мкс (можно сделать отдельный вход для задания периода ).
Сделал проект с использованием программного генератора и счетчика - не успевает .На малых частотах(сигнал пуск) работает ,на больших (свыше 3 гц) не успевает сформировать пачку .Сделайте пожалуйста ,отблагодарю чем могу .
Нужно срочно -линия стоит ...
Сделал проект с использованием программного генератора и счетчика - не успевает .На малых частотах(сигнал пуск) работает ,на больших (свыше 3 гц) не успевает сформировать пачку .Сделайте пожалуйста ,отблагодарю чем могу .
Нужно срочно -линия стоит ...
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Последний раз редактировалось Rovki 01 авг 2017, 15:38, всего редактировалось 1 раз.
Электронщик до мозга костей и не только
- Rovki
- Полковник
- Сообщения: 5732
- Зарегистрирован: 22 апр 2016, 17:25
- Откуда: Чехов
- Имя: Анатолий
- Благодарил (а): 68 раз
- Поблагодарили: 222 раза
- Контактная информация:
Генератор пачки импульсов
Вот сын накидал код ,а как его вставить в пользовательский ???
//Макрос прерывания
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
//Макрос прерывания
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
Электронщик до мозга костей и не только
- Rovki
- Полковник
- Сообщения: 5732
- Зарегистрирован: 22 апр 2016, 17:25
- Откуда: Чехов
- Имя: Анатолий
- Благодарил (а): 68 раз
- Поблагодарили: 222 раза
- Контактная информация:
Генератор пачки импульсов
Почитал как создавать пользовательский блок ,нашел куда вставлятькод ,но не понял как связать входа с переменными и про скобки ...что то кудато добавлять ,убирать ...
Электронщик до мозга костей и не только
Генератор пачки импульсов
вход это и есть переменная. добавляете вход , обзываете его переменной как в коде - она и будет подставляться. со входа. или имя входа вставляете вместо каких либо цифровых значений чтобы их можно было менятьRovki писал(а):как связать входа с переменными
- Rovki
- Полковник
- Сообщения: 5732
- Зарегистрирован: 22 апр 2016, 17:25
- Откуда: Чехов
- Имя: Анатолий
- Благодарил (а): 68 раз
- Поблагодарили: 222 раза
- Контактная информация:
Генератор пачки импульсов
А если в коде вход пин2 привязан уже к прерыванию ,то в схеме уже не нужно использовать , указывать как то пин2 ?
Электронщик до мозга костей и не только
Генератор пачки импульсов
если пин жестко привязан то не надо с ним ни чего делать. на входы и в параметры назначаются переменные которые нужно менять
- Rovki
- Полковник
- Сообщения: 5732
- Зарегистрирован: 22 апр 2016, 17:25
- Откуда: Чехов
- Имя: Анатолий
- Благодарил (а): 68 раз
- Поблагодарили: 222 раза
- Контактная информация:
Генератор пачки импульсов
Ясно ,спасибо ,завтра код подправим и попробую .
Не удержался ,подправил - ошибки в типах данных
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
Этот отчёт будет иметь больше информации с
включенной опцией Файл -> Настройки ->
"Показать подробный вывод во время компиляции"
Не удержался ,подправил - ошибки в типах данных
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
Этот отчёт будет иметь больше информации с
включенной опцией Файл -> Настройки ->
"Показать подробный вывод во время компиляции"
Электронщик до мозга костей и не только
Генератор пачки импульсов
может что то не туда вставили. судя по коду там нет ни чего для setupRovki писал(а):In function 'void setup()':
- Rovki
- Полковник
- Сообщения: 5732
- Зарегистрирован: 22 апр 2016, 17:25
- Откуда: Чехов
- Имя: Анатолий
- Благодарил (а): 68 раз
- Поблагодарили: 222 раза
- Контактная информация:
Генератор пачки импульсов
Я заменил лонг инт 32 на инт16 и еще исправил ошибку -было 1 в В0ВО ,стало 0 ВО.И заменил ВО (8 пин) на В5 (пин13)
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Последний раз редактировалось Rovki 01 авг 2017, 22:51, всего редактировалось 1 раз.
Электронщик до мозга костей и не только
Генератор пачки импульсов
я не знаток Си, но зачем вы запихали весь код в секцию setup .
и на объявление переменных ругается - volatile MX_UINT32 FCV_ZAD;
может я что то не понимаю, но вроде должно быть так- volatile uint32_t FCV_ZAD;
вот примерно раскидал код. не факт что правильно.
еще ругается на строчку ISR(INT0_vect). не до конца понял что к чему.
и на объявление переменных ругается - volatile MX_UINT32 FCV_ZAD;
может я что то не понимаю, но вроде должно быть так- volatile uint32_t FCV_ZAD;
вот примерно раскидал код. не факт что правильно.
еще ругается на строчку ISR(INT0_vect). не до конца понял что к чему.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
- Rovki
- Полковник
- Сообщения: 5732
- Зарегистрирован: 22 апр 2016, 17:25
- Откуда: Чехов
- Имя: Анатолий
- Благодарил (а): 68 раз
- Поблагодарили: 222 раза
- Контактная информация:
Генератор пачки импульсов
Так а я вообще не знаток .Есть код на СИ ,нужно впихнуть в блок пользовательский .Вопрос -что куда и сколько впихивать ,в описании пока не понял ...Будем ждать Автора или спеца по СИ и FL/
Электронщик до мозга костей и не только
Генератор пачки импульсов
он даже в чистом виде не компилируется в ide, поэтому и блоке работать не будет.Rovki писал(а):Есть код на СИ
в любом случае надо код править.
Последний раз редактировалось pan 02 авг 2017, 08:14, всего редактировалось 1 раз.
- Rovki
- Полковник
- Сообщения: 5732
- Зарегистрирован: 22 апр 2016, 17:25
- Откуда: Чехов
- Имя: Анатолий
- Благодарил (а): 68 раз
- Поблагодарили: 222 раза
- Контактная информация:
Генератор пачки импульсов
Добил схему ,на столе работает ,завтра буду серву крутить .
пин 2- вход с датчика -по нему отрабатывается прерывание и формируется пачка импульсов
вход блока - задание количества импульсов по модбасу устройство 1,регистр0
пин13 выход импульсов
4 -rx
5- tx
пин 2- вход с датчика -по нему отрабатывается прерывание и формируется пачка импульсов
вход блока - задание количества импульсов по модбасу устройство 1,регистр0
пин13 выход импульсов
4 -rx
5- tx
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Электронщик до мозга костей и не только
- Rovki
- Полковник
- Сообщения: 5732
- Зарегистрирован: 22 апр 2016, 17:25
- Откуда: Чехов
- Имя: Анатолий
- Благодарил (а): 68 раз
- Поблагодарили: 222 раза
- Контактная информация:
Генератор пачки импульсов
Сегодня тестировал на железе управление серводрайвером в условиях реальных помех - резюме без оптопар ловить нечего ,а точнее все помехи ваши ,а с ними все гуд.
Электронщик до мозга костей и не только
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 5 гостей