Создание пользовательского блоков на языке C

На этом форуме Вы можете задать вопросы знатокам программы и автору.
Ответить
Аватара пользователя
AVGN
Капитан
Сообщения: 727
Зарегистрирован: 03.02.2017{, 12:23}
Репутация: 56

Создание пользовательского блоков на языке C

#1

Сообщение AVGN » 21.03.2017{, 18:23}

Возник такой вопрос.
В примере для библиотеки используется тип данных "double" .
А в FLProg нет double.
Или такую библиотеку невозможно применить для создания пользовательского блока?
Код примера для библиотеки:
СпойлерПоказать

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

#include <AD9850.h>
//CLK - D12, FQUP - D11, BitData - D10, RESET - D13
const int W_CLK_PIN = 12;
const int FQ_UD_PIN = 11;
const int DATA_PIN = 10;
const int RESET_PIN = 13;

double freq = 1000000; // 1МГЦ
double trimFreq = 124999500;

int phase = 0;

void setup(){
DDS.begin(W_CLK_PIN, FQ_UD_PIN, DATA_PIN, RESET_PIN);
DDS.calibrate(trimFreq);
}

void loop(){
DDS.setfreq(freq, phase);
// delay(10000);
// DDS.down();
// delay(3000);
// DDS.up();
// delay(2000);
// DDS.setfreq(freq + 500, phase);
// delay(5000);
// DDS.down();
// while(1);
}
Последний раз редактировалось AVGN 21.03.2017{, 18:27}, всего редактировалось 1 раз.
Если вы не можете объяснить это просто – значит, вы сами не понимаете этого до конца.
☆Альберт Эйнштейн

Аватара пользователя
Nikan
Майор
Сообщения: 1129
Зарегистрирован: 29.12.2016{, 00:49}
Репутация: 87
Откуда: москва

Создание пользовательского блоков на языке C

#2

Сообщение Nikan » 21.03.2017{, 18:54}

AVGN писал(а):нет double
double - это удвоенный Float,
в создании блока double можете его смело объявлять IDE его понимает.

Аватара пользователя
AVGN
Капитан
Сообщения: 727
Зарегистрирован: 03.02.2017{, 12:23}
Репутация: 56

Создание пользовательского блоков на языке C

#3

Сообщение AVGN » 21.03.2017{, 19:40}

библиотеку надо переделывать и менять double на Float?
Если вы не можете объяснить это просто – значит, вы сами не понимаете этого до конца.
☆Альберт Эйнштейн

Аватара пользователя
Boroda
Капитан
Сообщения: 836
Зарегистрирован: 01.05.2016{, 01:04}
Репутация: 38
Откуда: Коломна
Имя: Станислав
Контактная информация:

Создание пользовательского блоков на языке C

#4

Сообщение Boroda » 21.03.2017{, 20:13}

Вот тут так и написано. Меняем на флоат и не паримся!

Аватара пользователя
AVGN
Капитан
Сообщения: 727
Зарегистрирован: 03.02.2017{, 12:23}
Репутация: 56

Создание пользовательского блоков на языке C

#5

Сообщение AVGN » 21.03.2017{, 20:41}

Boroda, спасибо.
Я как раз читал, только вот здесь http://arduino.ua/ru/prog/Double
Состряпал блок. Вроде компилируется. Проверить в железе не могу. Подготовка к субботе
Посмотрите профессиональным взором. Будет работать ?
Вложения
Test__AD9850-ma.flp
(421.52 КБ) 36 скачиваний
Последний раз редактировалось AVGN 22.03.2017{, 14:43}, всего редактировалось 1 раз.
Если вы не можете объяснить это просто – значит, вы сами не понимаете этого до конца.
☆Альберт Эйнштейн

Аватара пользователя
Nikan
Майор
Сообщения: 1129
Зарегистрирован: 29.12.2016{, 00:49}
Репутация: 87
Откуда: москва

Создание пользовательского блоков на языке C

#6

Сообщение Nikan » 21.03.2017{, 21:21}

AVGN писал(а):библиотеку надо переделывать и менять double на Float?
ничего переделывать не надо, должно работать так.

Аватара пользователя
Anydy
Администратор
Сообщения: 3285
Зарегистрирован: 30.12.2017{, 12:10}
Репутация: 279
Имя: Андрей

Создание пользовательского блоков на языке C

#7

Сообщение Anydy » 21.03.2017{, 22:55}

У меня с double в Flprog были проблемы, вроде потому что в Флпрог нет такой, просто заменил на флоат и все получилось!
Библиотеку не надо переделывать, БОРОДА верно сказал, меняем в блоке на флоат и не паримся!)))

Тип double поддерживается в Arduino для совместимости кода с другими платформами.
Последний раз редактировалось Anydy 21.03.2017{, 23:01}, всего редактировалось 1 раз.

Аватара пользователя
AVGN
Капитан
Сообщения: 727
Зарегистрирован: 03.02.2017{, 12:23}
Репутация: 56

Создание пользовательского блоков на языке C

#8

Сообщение AVGN » 22.03.2017{, 15:24}

Выявились интересные моменты при создании блока пользователя.
Сделанные входы в пользовательском блоке при компиляции в IDE появляются только в void loop().
А выходы блока появляются только в void setup()

Это правильно или что то делаю не так как надо?
Если вы не можете объяснить это просто – значит, вы сами не понимаете этого до конца.
☆Альберт Эйнштейн

Аватара пользователя
Anydy
Администратор
Сообщения: 3285
Зарегистрирован: 30.12.2017{, 12:10}
Репутация: 279
Имя: Андрей

Создание пользовательского блоков на языке C

#9

Сообщение Anydy » 22.03.2017{, 15:46}

Видимо что то пошло не так)
Прикрепляйте скетч и проект...и блок...
Посмотрим....
И входы и выходы должны быть в секции declare скетча
В Loop их только используем!
Это если блок не один может быть в проекте...
Если один то и в Loop бывают обьявления...но зачем я не пойму...
Может очередной глюк)))

Аватара пользователя
AVGN
Капитан
Сообщения: 727
Зарегистрирован: 03.02.2017{, 12:23}
Репутация: 56

Создание пользовательского блоков на языке C

#10

Сообщение AVGN » 22.03.2017{, 17:17}

Блок делал используя пример для Ардуино:

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

#include <AD9850.h>
//CLK - D12, FQUP - D11, BitData - D10, RESET - D13
const int W_CLK_PIN = 12;
const int FQ_UD_PIN = 11;
const int DATA_PIN = 10;
const int RESET_PIN = 13;

double freq = 1000000; // 1МГЦ
double trimFreq = 124999500;

int phase = 0;

void setup(){
DDS.begin(W_CLK_PIN, FQ_UD_PIN, DATA_PIN, RESET_PIN);
DDS.calibrate(trimFreq);
}

void loop(){
DDS.setfreq(freq, phase);
// delay(10000);
// DDS.down();
// delay(3000);
// DDS.up();
// delay(2000);
// DDS.setfreq(freq + 500, phase);
// delay(5000);
// DDS.down();
// while(1);
}

Проект с блоком в FLProg прицепил

Добавлено (22.03.2017, 17:17)
---------------------------------------------
Не точно выразился.
Уточнение.
Установленные константы на входы в пользовательском блоке при компиляции в IDE появляются только в void loop().
А выходы блока (сделанные в параметрах пользователя) появляются в void setup()
Вложения
Test_AD9850-ma.flp
(421.66 КБ) 39 скачиваний
Если вы не можете объяснить это просто – значит, вы сами не понимаете этого до конца.
☆Альберт Эйнштейн

Аватара пользователя
Anydy
Администратор
Сообщения: 3285
Зарегистрирован: 30.12.2017{, 12:10}
Репутация: 279
Имя: Андрей

Создание пользовательского блоков на языке C

#11

Сообщение Anydy » 22.03.2017{, 18:32}

Как то раньше замечал...что если библиотеку выгружать с именем скачанным с гитхаба, то не работает....
то есть напрмер 123-master не работает а просто 123 работает

vovka1973
Капитан
Сообщения: 874
Зарегистрирован: 14.02.2016{, 14:16}
Репутация: 29
Откуда: kazahstan

Создание пользовательского блоков на языке C

#12

Сообщение vovka1973 » 05.04.2017{, 16:17}

Anydy писал(а):то не работает....то есть напрмер 123-master не работает а просто 123 работает
это потому что из за тире ,а если так сделать 123_master то нормально всегда
Изображение

Аватара пользователя
Dev1
Майор
Сообщения: 1018
Зарегистрирован: 12.07.2016{, 18:04}
Репутация: 58
Откуда: Гондурас

Создание пользовательского блоков на языке C

#13

Сообщение Dev1 » 05.04.2017{, 17:33}

vovka1973 писал(а):это потому что из за тире ,а если так сделать 123_master то нормально всегда
Я, наверное, что то не то делаю...
СпойлерПоказать
Вложения
4272615.jpg
3179708.jpg
Win10-64 FLProg v7.5.2 Portable :fie:

Ответить

Вернуться в «Спросить у знатоков»