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

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

Добавлено: 21 мар 2017, 18:23
AVGN
Возник такой вопрос.
В примере для библиотеки используется тип данных "double" .
А в FLProg нет double.
Или такую библиотеку невозможно применить для создания пользовательского блока?
Код примера для библиотеки:

[spoiler=Спойлер]

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

#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);
}
[/spoiler]

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

Добавлено: 21 мар 2017, 18:54
Nikan
.

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

Добавлено: 21 мар 2017, 19:40
AVGN
библиотеку надо переделывать и менять double на Float?

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

Добавлено: 21 мар 2017, 20:13
Boroda
Вот тут так и написано. Меняем на флоат и не паримся!

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

Добавлено: 21 мар 2017, 20:41
AVGN
Boroda, спасибо.
Я как раз читал, только вот здесь http://arduino.ua/ru/prog/Double
Состряпал блок. Вроде компилируется. Проверить в железе не могу. Подготовка к субботе
Посмотрите профессиональным взором. Будет работать ?

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

Добавлено: 21 мар 2017, 21:21
Nikan
.

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

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

Тип double поддерживается в Arduino для совместимости кода с другими платформами.

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

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

Это правильно или что то делаю не так как надо?

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

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

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

Добавлено: 22 мар 2017, 17:17
AVGN
Блок делал используя пример для Ардуино:

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

#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()

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

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

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

Добавлено: 05 апр 2017, 16:17
vovka1973
Anydy писал(а):то не работает....то есть напрмер 123-master не работает а просто 123 работает
это потому что из за тире ,а если так сделать 123_master то нормально всегда

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

Добавлено: 05 апр 2017, 17:33
Dev1
vovka1973 писал(а):это потому что из за тире ,а если так сделать 123_master то нормально всегда
Я, наверное, что то не то делаю...
[spoiler=Спойлер][/spoiler]