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

Быстрые входы и выходы

Добавлено: 20.01.2018{, 13:15}
Sancho
Блоки построены на основе библиотеке CyberLib.
Установить сразу!!!
Огромное Спасибо её разработчикам!!!
Версия V1 содержит
входы с D2 по D7,
выходы в разных форматах, с D10 по D13:
- выходы с записью по en, тоже самое как если в программе включить этот режим.
- выходы с защёлкой(триггером) - меняет выход один раз в момент изменения состояния, потом вообще почти "не отсвечивают". Первый цикл должен быть с false / 0.
- выходы как стандартные.
Отписываемся здесь или в этой теме.
Вопрос, резонный - почему не все пины?
Когда Вы посмотрите, как там всё устроенно, то без труда измените или добавите то, что необходимо именно в данный момент.

Над универсальностью/настраиваемостью работаю.
Попробовал настройку - медленнее начинает работать, на схеме не видно, что это за номер входа/выхода.

UPD.
Обновлено 25 января 2018.
Добавлены быстрые аналоговые входы.
Небольшие изменения в логике старых.
UPD.
05.07.2018 Обновлена библиотека, добавлены цифровые из аналоговых для Мега 2560

Данные блоки работают с мк: ATmega328, ATmega32U4.
с мк ATmega168 и 2560 аналоговые входы не работают...

Если понравилось и пригодилось - ЖМИ ТУТ!!!

Быстрые входы и выходы

Добавлено: 14.02.2018{, 11:15}
seri0shka
Спасибо за блоки, давно точил зуб на эту библиотеку. Но есть нюанс: вроде библиотека не работает с платами на ATMega168, выдаёт ошибку ещё на этапе компилирования. Пишу по памяти, прошло время с экспериментов, поэтому проверьте, если есть возможность, и добавьте примечание в первом сообщении.

Быстрые входы и выходы

Добавлено: 14.02.2018{, 11:32}
Sancho
seri0shka,
Простейший вход и выход "скушал".
Скетч использует 490 байт (3%) памяти устройства. Всего доступно 14336 байт.
Глобальные переменные используют 11 байт (1%) динамической памяти, оставляя 1013 байт для локальных переменных. Максимум: 1024 байт.
Отправлено спустя 3 минуты 55 секунд:
С аналоговыми - засада, спасибо, отмечу.

Быстрые входы и выходы

Добавлено: 13.03.2018{, 15:50}
seri0shka
Sancho, в блоках ошибки. Простейший пример: блок Out_13_High. В коде if ( en ) { D13_High;}. А кто D13 назад вернёт?
Кроме того, в блоке не декларируется библиотека, соответственно компилятор выдаст ошибку.
Кстати, кто подскажет, ка сделать, чтоб при добавлении нескольких блоков, в каждом из которых декларируется библиотека, в скетче она появлялась только один раз?

Быстрые входы и выходы

Добавлено: 13.03.2018{, 15:52}
Sancho
seri0shka писал(а):
13.03.2018{, 15:50}
в блоках ошибки. Простейший пример: блок Out_13_High. В коде if ( en ) { D13_High;}. А кто D13 назад вернёт?
Какие ошибки?
Посмотрите, пожалуйста, второй блок от 13 ноги? Он и вернёт. Это блоки "Запись по условию". Читайте названия.
Сори, не обновил проект, сделал один блок с указанием бибки, главный, одноразовый. Больше в нём ничего нет.
А чем Вам мешает несколько объявлений библиотеки? Жмёт код?

Быстрые входы и выходы

Добавлено: 13.03.2018{, 16:40}
rw6cm
seri0shka писал(а):
13.03.2018{, 15:50}
Кстати, кто подскажет, ка сделать, чтоб при добавлении нескольких блоков, в каждом из которых декларируется библиотека, в скетче она появлялась только один раз?
а зачем в каждом блоке декларировать библиотеку? создаете блок, с уставкой только для одного раза.
в него ложите все, что должно быть общее для всех (библиотеки, функции, константы итд), а в другой блок индивидуальный код.

Быстрые входы и выходы

Добавлено: 15.03.2018{, 00:07}
Labu559
seri0shka писал(а):
13.03.2018{, 15:50}
Кстати, кто подскажет, ка сделать, чтоб при добавлении нескольких блоков, в каждом из которых декларируется библиотека
Повторное декларирование библиотеки (если она правильно сделана см.ниже) никоим образом не увеличивает размер скомпилированного бинарника, как и комментарии, что имеет значение в отличии от размера скетча.
В частности в указанной библиотеке производится проверка и...
#ifndef CyberLib_H // если библиотека CyberLib_H не подключена
#define CyberLib_H // тогда подключаем CyberLib_H
Т.о. эти директивы исключают повторное подключение библиотеки и необходимо обращать внимание на их наличие в заголовочном файле xxx*.h.

Быстрые входы и выходы

Добавлено: 19.06.2018{, 21:39}
krom23
Sancho, а пример не выложите, а-то хоть и установил библиотеку всё ошибки при компиляции выдаёт.

Спасибо за пример.

Быстрые входы и выходы

Добавлено: 23.06.2018{, 13:04}
benic
вот без библиотек, как проверить на скорость ?
ЗЫ:править приходится pin13mask pin12mask

Быстрые входы и выходы

Добавлено: 23.06.2018{, 13:47}
Sancho
benic писал(а):
23.06.2018{, 13:04}
как проверить на скорость ?
Выставляешь пин в 1, потом в 0, меряешь время осциллографом.
Но зачем изобретать велосипед, если библиотека делает тоже самое? И уже всё упаковано в одну строку с названием библиотеки.

Отправлено спустя 26 минут 48 секунд:
benic, Наверно ты сам не пробовал - галку надо ставить в блоке - "использовать один раз" иначе дефайны/byte править приходится в коде.
Код меньше библиотечного по весу, не говоря о стандартных read и write , но не по объёму/количеству строк.
Не могу вкурить - как и где библиотека добавляет байты....??? User я, одним словом .

Отправлено спустя 7 минут :
Скорости такие же, как и в моих потугах: генератор в виде вход на выход с инверсией(out=!in) 454 864 Гц.

Быстрые входы и выходы

Добавлено: 23.06.2018{, 15:07}
benic
http://codius.ru/articles/Тюнинг_Arduin ... боту_платы
вот это имел в виду, еще не вкурил как прикрутить

Быстрые входы и выходы

Добавлено: 23.06.2018{, 16:30}
Sancho
benic писал(а):
23.06.2018{, 15:07}
еще не вкурил как прикрутить
Что именно?
На следующей неделе попробую библиотеку обрезать до минимума, убрав инверсию и ещё, чего найду, сравню.

Отправлено спустя 1 минуту 17 секунд:
Попробовал почистить биб-ку - сбросила веса, стало как у benic.

Быстрые входы и выходы

Добавлено: 23.06.2018{, 17:40}
benic
Блок смастерить на все порта, да и скорость померить. Пару дней назад нарыл.

Быстрые входы и выходы

Добавлено: 23.06.2018{, 18:52}
Sancho
benic писал(а):
23.06.2018{, 17:40}
Блок смастерить на все порта
Пробовал, получилось, но отказался от этой затеи.
Причина - непонятно, какой вход/выход перед тобой на схеме, "константа", т.е.номер пина, не прописывается в строке "Лэйбла (отображается на схеме)" в виде изменяемого текста. Посему оставил большое количество элементов в папках входов/выходов. Думаю, тоже в это упретесь...

Быстрые входы и выходы

Добавлено: 04.07.2018{, 11:44}
belyx
а как будет выглядеть быстрый цифровой вход из аналогового входа?

Быстрые входы и выходы

Добавлено: 04.07.2018{, 15:56}
Sancho
belyx писал(а):
04.07.2018{, 11:44}
а как будет выглядеть быстрый цифровой вход из аналогового входа?
D14 - D19

Быстрые входы и выходы

Добавлено: 04.07.2018{, 16:42}
belyx
Sancho писал(а):
04.07.2018{, 15:56}
D14 - D19
я так понял -это для UNO
для MEGA- будет D54-D69 (вместо A0-A15) правильно?

Быстрые входы и выходы

Добавлено: 04.07.2018{, 17:07}
Sancho
belyx писал(а):
04.07.2018{, 16:42}
для MEGA- будет D54-D69 (вместо A0-A15) правильно?
Нет, для Меги в библиотеке прописаны лишь D2-D13, D22-D53. Увы...
Если есть возможность использования - придётся дописывать в библиотеке, не вникал в Мегу.

Быстрые входы и выходы

Добавлено: 04.07.2018{, 18:02}
belyx
какой облом!дейсвительно только до 53
с 54 по 69 не прописаны,а они есть!
СпойлерПоказать
atmega2560.png
Отправлено спустя 31 минуту 43 секунды:
Sancho,я не спец, а достаточно ли (меня интересуют INPUT) дописать в CyberLib.h
в части *INPUT PINS* к этому:
#define D52_In DDRB &=B11111101 // PB 1 SPI_SCK
#define D53_In DDRB &=B11111110 // PB 0 SPI_SS
это
#define D54_In DDRF &=B11111110 // PF 0 D54
#define D55_In DDRF &=B11111101 // PF 1 D55
и т.д. до D69
или ещё надо писать и в файл keywords.txt по аналогии что там написано.
или не стоит в это лезть?

Быстрые входы и выходы

Добавлено: 04.07.2018{, 19:26}
Sancho
belyx писал(а):
04.07.2018{, 18:33}
какой облом!дейсвительно только до 53
с 54 по 69 не прописаны,а они есть!

или не стоит в это лезть?
При необходимости стоит, вооружившись даташитом и здравой логикой.
Но.
Дописать на "канал" строки в
для режима вход
*INPUT PINS*
*READ Status Pins*
*Status High Pins* для подтяжки к +
для выход
*Output Pins*
*Status High Pins*
*Status Low Pins*
С учётом имени регистра, в котором они расположены.