ГЕНЕРАТОР В FLProg
ГЕНЕРАТОР В FLProg
Работаю с моделью Nano 168. Модель работает на частоте 87,974 гц.
Прилагаю скрин, программа написана для проверки модели в Proteuse не на FLProg. Сейчас я приложу еще один скрин, генератора с частотой 87кгц (11.494мкс ) выведу эту длительность.
Но уже в программе FLProg.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Последний раз редактировалось Alex54 18 сен 2015, 12:38, всего редактировалось 1 раз.
С Уважением Alex
ГЕНЕРАТОР В FLProg
Сергей Добрый День ! ! !
У меня сообщение было предыдущее. В нем ответов 0. Оно естественно отскочило что я его еле нашел.
Как стоит 50мкс, все мертво. Думал в последней версии исправлено. НЕТ.
У меня сообщение было предыдущее. В нем ответов 0. Оно естественно отскочило что я его еле нашел.
Как стоит 50мкс, все мертво. Думал в последней версии исправлено. НЕТ.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
С Уважением Alex
ГЕНЕРАТОР В FLProg
Вопрос важный и интересный! Ждем ответа, или решения.
P.S. Может подправить размер изображений, уважаемый Alex54? А то, при входе в Вашу тему крышу сносит...
P.S. Может подправить размер изображений, уважаемый Alex54? А то, при входе в Вашу тему крышу сносит...
ГЕНЕРАТОР В FLProg
Не понял, как два генератора ? Да тут еще указывается не период, а пол периода. Даже если ставитьDerAlex писал(а):А если одновременно использовать два генератора? Изменится период?
несимметричный мульт. То при любой полож. длительности меньше 50мкс, он все равно выдает 50мкс.
Тут видимо в самих моделях надо просто убирать внутренние задержки. Или принцип построения
делать другой.
Max
В диташитах ( виртуальный ардуино) я дал ссылку на интересную прогу. Вы смотрели ее. Там есть в ней для вас модули.
Посмотрите. Я сам эту прогу установил. Устанавливается также как портативная FLProg. Только в ней
еще и легко печать сделать для периферии к нашим ардуинкам.
Последний раз редактировалось Alex54 29 окт 2015, 12:16, всего редактировалось 1 раз.
С Уважением Alex
ГЕНЕРАТОР В FLProg
Использовать два генератора и выход каждого подать на свой пин ардуино.Какое влияние это окажет на увеличение периода .
аврора
ГЕНЕРАТОР В FLProg
Попробую что вы предлагаете. Можно еще исключающим или сделать умножение на 2. Тут надоDerAlex писал(а):Использовать два генератора и выход каждого подать на свой пин ардуино.Какое влияние это окажет на увеличение периода .
смотреть а сколько сама логика пропустит.
Тут мне прислали ардуинку в Протэусе. Программа генератора. Программисту конечно не в FLProg
удалось получить 80кгц с хвостиком на ней. Пишет при желании можно и больше выжить.
С Уважением Alex
ГЕНЕРАТОР В FLProg
здравствуте Alex
"Попробую что вы предлагаете. Можно еще исключающим или сделать умножение на 2"
но существует ли способ умножения частоты генератора, в FLProg есть только аналоговые умножители
"Попробую что вы предлагаете. Можно еще исключающим или сделать умножение на 2"
но существует ли способ умножения частоты генератора, в FLProg есть только аналоговые умножители
ГЕНЕРАТОР В FLProg
oren
Cсуществуют конечно умножители частоты. В FLProg, не знаю. Ну даже если сделать удвоитель на
исключающим ИЛИ в программе, это не выход. Будет 50кгц. Полож. полупериоды будут короткие. Схемы ФАПЧ нет здесь. Типа CD4046. Так что пока думаю между делами как это реализовать в программе.
В задумке нужно сделать с 200кгц. Получить нужную линейку частот. Внутри ардуинки. Пока на дискретных элементах работает.
Cсуществуют конечно умножители частоты. В FLProg, не знаю. Ну даже если сделать удвоитель на
исключающим ИЛИ в программе, это не выход. Будет 50кгц. Полож. полупериоды будут короткие. Схемы ФАПЧ нет здесь. Типа CD4046. Так что пока думаю между делами как это реализовать в программе.
В задумке нужно сделать с 200кгц. Получить нужную линейку частот. Внутри ардуинки. Пока на дискретных элементах работает.
С Уважением Alex
ГЕНЕРАТОР В FLProg
Alex54
Накидай в FLProg умножение частоты на 2, спасибо.
Накидай в FLProg умножение частоты на 2, спасибо.
ГЕНЕРАТОР В FLProg
qore-40
ЗДЕСЬ все прописано :
http://nauchebe.net/2010/06/obrabotka-d ... elementov/
Проверял вчера. Этот удвоитель в FLProg. Не получается. Логика тоже как и генератор не работает
с сигналами ниже 50мкс. Ставил искл. или. Просто по двум входам через цифровые входы подавал
от внешних генераторов различные частоты. Различные и по частотам и длительности. С вых. через
цифровой выход. Наблюдал все это. Как только сигнал был меньше 50мкс (например 50кгц 20мкс) Вых
работал на 24кгц с хвостом. И все. На низких рабочих частотах не смотрел. Работать думаю будет.
Ну мне надобности в этом не было. А вообще так и должно быть. У нас в котроллере цифровые
входа это не перемычки просто также как и выходы. Они делают обработку сигнала. По аналоговым
входам еще сложнее.
ЗДЕСЬ все прописано :
http://nauchebe.net/2010/06/obrabotka-d ... elementov/
Проверял вчера. Этот удвоитель в FLProg. Не получается. Логика тоже как и генератор не работает
с сигналами ниже 50мкс. Ставил искл. или. Просто по двум входам через цифровые входы подавал
от внешних генераторов различные частоты. Различные и по частотам и длительности. С вых. через
цифровой выход. Наблюдал все это. Как только сигнал был меньше 50мкс (например 50кгц 20мкс) Вых
работал на 24кгц с хвостом. И все. На низких рабочих частотах не смотрел. Работать думаю будет.
Ну мне надобности в этом не было. А вообще так и должно быть. У нас в котроллере цифровые
входа это не перемычки просто также как и выходы. Они делают обработку сигнала. По аналоговым
входам еще сложнее.
Последний раз редактировалось Alex54 04 ноя 2015, 09:03, всего редактировалось 1 раз.
С Уважением Alex
ГЕНЕРАТОР В FLProg
а попробуй частоту мк поднять, по ссылке Конструктор Bootloader`а для Arduino
http://homes-smart.ru/index.php/oborudo ... zagruzchik
делал 20MHz нормально работает, и где то на форумах читал - что и на 24MHz работает
http://homes-smart.ru/index.php/oborudo ... zagruzchik
делал 20MHz нормально работает, и где то на форумах читал - что и на 24MHz работает
Последний раз редактировалось gore-40 04 ноя 2015, 20:40, всего редактировалось 1 раз.
ГЕНЕРАТОР В FLProg
Дело не в Аrduino,а в генерации кода зашитого в ГЕНЕРАТОРЕ FLProg.
при написании кода так:
void loop() {
digitalWrite(13, HIGH); // turn the LED on (HIGH is the voltage level)
delay(0.001); // wait for a second
digitalWrite(13, LOW); // turn the LED off by making the voltage LOW
delay(0.001);
можно получить 100KHz .зависит от переменной delay
при написании кода так:
void loop() {
digitalWrite(13, HIGH); // turn the LED on (HIGH is the voltage level)
delay(0.001); // wait for a second
digitalWrite(13, LOW); // turn the LED off by making the voltage LOW
delay(0.001);
можно получить 100KHz .зависит от переменной delay
ГЕНЕРАТОР В FLProg
oren
Cпасибо. Но откровенно сам нечего не понимаю в этих кодах. Подскажите что где изменять.
Тут советовался с программистом. Интересовался как вообще сделаны эти блоки. Общее понятие он
разъяснил.
Давайте вместе, может что выйдет.
Cпасибо. Но откровенно сам нечего не понимаю в этих кодах. Подскажите что где изменять.
Тут советовался с программистом. Интересовался как вообще сделаны эти блоки. Общее понятие он
разъяснил.
Давайте вместе, может что выйдет.
С Уважением Alex
ГЕНЕРАТОР В FLProg
К сожалению, я так же далёк от этих кодов,кто нам может помочь,так это тот ,кто их писал,надо еще раз попробовать обратиться к модератору ,возможно он найдет время исправить код или хотя бы указать способ решения проблемы.
С уважением Орен
С уважением Орен
ГЕНЕРАТОР В FLProg
Не надо никуда обращаться. Это расплата за универсальность кода.oren писал(а):надо еще раз попробовать обратиться к модератору ,возможно он найдет время исправить код
Другими словами:
digitalWrite(13, HIGH); // Включаем вывод 13
delay(0.001); // Пауза секунд
digitalWrite(13, LOW); // Выключаем вывод 13
delay(0.001); // Пауза секунд
Теперь попробуйте скомпелировать генератор и посмотрите какой код выдаст Ида. И не забывайте что программа ходит по кругу (если нет прерываний). Потому чем длинее программа (больше круг) тем меньшую частоту выдаст генератор. МК просто не успевает отработать эту частоту.
Если очень нужно. Ищите в дополнительных блоках Бузер. Там генератор получше, и меандр почище. Думаю это максимум что можно выжать из Ардуино.
ГЕНЕРАТОР В FLProg
Kocтик, вы про это :
Сам задал вопрос, сам отвечаю. Да 30кгц получаю и очень чистенькие. И выставление по частоте
очень точное. Не на пол периода как в генераторе ( таймере) а как положено.
Сам задал вопрос, сам отвечаю. Да 30кгц получаю и очень чистенькие. И выставление по частоте
очень точное. Не на пол периода как в генераторе ( таймере) а как положено.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Последний раз редактировалось Alex54 06 ноя 2015, 08:55, всего редактировалось 1 раз.
С Уважением Alex
ГЕНЕРАТОР В FLProg
Спасибо за помощь,но buzzer не имеет выхода для продолжения логической схемы,полезен лишь для использования платы в качестве генератора при нагрузке на один из внешних портов.
Сам же МК мне выдает любую(из нужных мне) частоту при написании кода :
digitalWrite(4, HIGH); // Включаем вывод4
delay(0.001); // Пауза секунд
digitalWrite(4, LOW); // Выключаем вывод 4
delay(0.001); // Пауза секунд
А вот "голый" ГЕНЕРАТОР FLProg дает такой код:
pinMode(4, OUTPUT);
}
void loop()
{
if (1) { if (! _gen1I) { _gen1I = 1; _gen1O = 1; _gen1P = micros(); } } else { _gen1I = 0 ; _gen1O= 0;}
if (_gen1I) { if ( _isTimerMicros ( _gen1P , 10 )) { _gen1P = micros(); _gen1O = ! _gen1O;}}
digitalWrite(4, _gen1O);
}
bool _isTimerMicros(unsigned long startTime, unsigned long period )
{
unsigned long currentTime;
currentTime = micros();
if (currentTime>= startTime) {return (currentTime>=(startTime + period));} else {return (currentTime >=(4294967295-startTime+period));}
}
А результат разный- вот в этом я и пытаюсь разобраться,если Вам не затруднительно,помогите разобраться.
Сам же МК мне выдает любую(из нужных мне) частоту при написании кода :
digitalWrite(4, HIGH); // Включаем вывод4
delay(0.001); // Пауза секунд
digitalWrite(4, LOW); // Выключаем вывод 4
delay(0.001); // Пауза секунд
А вот "голый" ГЕНЕРАТОР FLProg дает такой код:
pinMode(4, OUTPUT);
}
void loop()
{
if (1) { if (! _gen1I) { _gen1I = 1; _gen1O = 1; _gen1P = micros(); } } else { _gen1I = 0 ; _gen1O= 0;}
if (_gen1I) { if ( _isTimerMicros ( _gen1P , 10 )) { _gen1P = micros(); _gen1O = ! _gen1O;}}
digitalWrite(4, _gen1O);
}
bool _isTimerMicros(unsigned long startTime, unsigned long period )
{
unsigned long currentTime;
currentTime = micros();
if (currentTime>= startTime) {return (currentTime>=(startTime + period));} else {return (currentTime >=(4294967295-startTime+period));}
}
А результат разный- вот в этом я и пытаюсь разобраться,если Вам не затруднительно,помогите разобраться.
- support
- Супермодератор
- Сообщения: 1905
- Зарегистрирован: 03 янв 2018, 11:45
- Откуда: Астрахань
- Имя: Сергей
- Контактная информация:
ГЕНЕРАТОР В FLProg
Давайте я объясню. Разберём по строкам.
if (1) { if (! _gen1I) { _gen1I = 1; _gen1O = 1; _gen1P = micros(); } } else { _gen1I = 0 ; _gen1O= 0;}
Определение состояния входа EN (if (1) - у Вас константа). Запоминание текущего момента (_gen1P = micros()). перевод генератора в рабочее состояние (_gen1I = 1) Установка выхода в 1 (_gen1O = 1)
if (_gen1I) { if ( _isTimerMicros ( _gen1P , 10 )) { _gen1P = micros(); _gen1O = ! _gen1O;}}
Если генератор в рабочем состоянии (if (_gen1I)) проверяем с помощью функции не настало ли время переключения (if ( _isTimerMicros ( _gen1P , 10 ) - у Вас период переключения 10 мс). Если время наступило, то запоминаем текущее время ( _gen1P = micros(); - необходима для минимализации влияния временицикла прграммы, но такое влияние всё равно есть), и инвертируем выход (; _gen1O = ! _gen1O;)
bool _isTimerMicros(unsigned long startTime, unsigned long period )
{
unsigned long currentTime;
currentTime = micros();
if (currentTime>= startTime) {return (currentTime>=(startTime + period));} else {return (currentTime >=(4294967295-startTime+period));}
}
Функция определения конца периода времени с учётом переполнения аппаратного счётчика (аппаратный счётчик микросекунд считает до 4294967295 а потом сбрасывается в 0).
if (1) { if (! _gen1I) { _gen1I = 1; _gen1O = 1; _gen1P = micros(); } } else { _gen1I = 0 ; _gen1O= 0;}
Определение состояния входа EN (if (1) - у Вас константа). Запоминание текущего момента (_gen1P = micros()). перевод генератора в рабочее состояние (_gen1I = 1) Установка выхода в 1 (_gen1O = 1)
if (_gen1I) { if ( _isTimerMicros ( _gen1P , 10 )) { _gen1P = micros(); _gen1O = ! _gen1O;}}
Если генератор в рабочем состоянии (if (_gen1I)) проверяем с помощью функции не настало ли время переключения (if ( _isTimerMicros ( _gen1P , 10 ) - у Вас период переключения 10 мс). Если время наступило, то запоминаем текущее время ( _gen1P = micros(); - необходима для минимализации влияния временицикла прграммы, но такое влияние всё равно есть), и инвертируем выход (; _gen1O = ! _gen1O;)
bool _isTimerMicros(unsigned long startTime, unsigned long period )
{
unsigned long currentTime;
currentTime = micros();
if (currentTime>= startTime) {return (currentTime>=(startTime + period));} else {return (currentTime >=(4294967295-startTime+period));}
}
Функция определения конца периода времени с учётом переполнения аппаратного счётчика (аппаратный счётчик микросекунд считает до 4294967295 а потом сбрасывается в 0).
Автор программы FLProg.
ГЕНЕРАТОР В FLProg
oren
Так все правильно, пьезо динамик выдает частоту на внешний пин. Даже если сделать просто перемычкой
внешней,(с цифровым входом на вашу схему) если хотите работать от него. То вся логика не потянет свыше 24кгц. А так можно применять
его или несколько в зависимости от вашей программы. Делать допустим линейку частот кратную 10
здесь имеет смысл.
Сергей спасибо большое. Объяснили.
Гоню частоту в протэусе. 35кгц работает. Даже по нулям уход. Посмотрю где предел.
Этот пьезо динамик на 40кгц работает. Но уже частотка немного меньше. Далее гнать по частоте нет смысла. Но все равно это уже не 24кгц.
Я еще вот что хочу сказать. В Протэусе все модели контроллеров сделаны идеальными по всем параметрам. Это относиться только для котроллеров чисто итальянского производства.
Китайское железо имеет отличие.
Так все правильно, пьезо динамик выдает частоту на внешний пин. Даже если сделать просто перемычкой
внешней,(с цифровым входом на вашу схему) если хотите работать от него. То вся логика не потянет свыше 24кгц. А так можно применять
его или несколько в зависимости от вашей программы. Делать допустим линейку частот кратную 10
здесь имеет смысл.
Сергей спасибо большое. Объяснили.
Гоню частоту в протэусе. 35кгц работает. Даже по нулям уход. Посмотрю где предел.
Этот пьезо динамик на 40кгц работает. Но уже частотка немного меньше. Далее гнать по частоте нет смысла. Но все равно это уже не 24кгц.
Я еще вот что хочу сказать. В Протэусе все модели контроллеров сделаны идеальными по всем параметрам. Это относиться только для котроллеров чисто итальянского производства.
Китайское железо имеет отличие.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Последний раз редактировалось Alex54 06 ноя 2015, 11:59, всего редактировалось 1 раз.
С Уважением Alex
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 0 гостей