#26 Re: Програмування Arduino » Макроопределения для портов. » 2018-07-01 23:57:16

GCC open source, это даже в названии отражено, Столман главный ... маскот. Я не знаком с процессом разработки gcc, но очень сильно сомневаюсь что он не публичный.

В реестр национального интелектуального достояния? Круто! Но в эти реестры заносят по уровню значимости в истории и ровным счетом ничего не говорит.


А про бекэнд llvm для avr, это я так, к слову сказал, просто зашел на гитхаб, а там ни одного коммита за последний год, вот сейчас глянул точнее - его слили в главный llvm и потихоньку пилят. Преимущество в том что его можно особо и не пилить. Любая оптимизация добавляемая в llvm скажем для компиляции в MacOS, и любой язык, будет работать и на благо всего семейства, включая AVR, так что он улучшается даже ничего не делая в AVR части, готовность ее состояния не знаю, но там тоже потихоньку процесс идет.

IAR нет потому что есть open source решения, которые поддерживают большее количетво платформ. И... скажем между первыми 10 топовыми компиляторами, разница ... почти нулевая. Даже сравнивать не надо, все по закону кого-то там (достижение идеала по экспоненциальной сложности).

#27 Re: Програмування Arduino » Макроопределения для портов. » 2018-07-01 23:15:53

Вячеслав Азаров пише:
LynX пише:

Вячеслав Азаров, проверил Ваш пример, так получается с -O2, попробуйте -Os, получается опять дерево. Или в case значение более 255 тоже дерево. (Ну т.е. что не противоречит ничему вышесказанному, но просто сравнил) ...

Да это не двоичный поиск по дереву, просто несортированый список сравнений. Я даже незнаю, делает ли такое AVR GCC.

Не совсем понял. Что-то не хочется по каждому переходу разбирать, но в начале переходы идут на большие блоки, а с больших на блоки поменьше. В конце из одиночных все прыгает в точку возврата. По крайней мере так и должно выглядеть бинарное дерево. Что такое "несортированый список сравнений" не понял.

Ну и бинарное дерево это не что-то архисложное. Чего бы ему такого не уметь. GCC конечно не №1, AVR GCC может и отставать от родителя, но это более чем адекватный компилятор.

P.S. В clang llvm сделали разбиение на бекэенд и фронтенд компиляцию, т.е. это должно позволить компилировать много языков с максимально возможной оптимизацией и на много платформ. Несколько языков завезли, оптимизацию завозят фурами, а на платформах типа avr только провели эксперимент.

#28 Re: Проекти » Arduino WEB контроллер управления светом. » 2018-07-01 22:55:16

А зачем тут сервер? Для подключения более одной ардуины?

#29 Re: Програмування Arduino » Макроопределения для портов. » 2018-07-01 22:32:13

Вячеслав Азаров, проверил Ваш пример, так получается с -O2, попробуйте -Os, получается опять дерево. Или в case значение более 255 тоже дерево. (Ну т.е. что не противоречит ничему вышесказанному, но просто сравнил)

Batu пише:

А для примера было бы достаточно и 3-х Case.

Бинарное дерево для трех элементов? О да, это даст большой прирост в производительности. Но таки да, для трех проверок он их сделает последовательно, браво, таки есть и третий случай, когда как не делай разницы почти никакой! С четырех уже делает дерево.

Batu пише:

Такое решение все равно жопа для решения предложенной задачи.

И я что-то не заметил чтобы автор темы просил выиграть два такта процессора, или вообще что-то говорил о производительности. И если автор темы сделает switch в макросе или инлайн функции то он может стать быстрее другого решения в не инлайн функции.

Batu пише:

Меня не переубедил.

Это не я, это суровая реальность переубеждает, я лишь показываю ее Вам, и всем читающим.

#30 Re: Програмування Arduino » Макроопределения для портов. » 2018-07-01 21:02:23

Потому что это не для Вас, а для юных падаванов которых еще можно спасти.
Код.

#31 Різне » Скрипт для подсветки/блокиров комментариев хороших/плох пользователей » 2018-07-01 20:58:44

LynX
відповідей: 2

Сделал для себя, если кому интересно - милости просим. Данный скрипт подсвечивает комментарии на этом форуме доверенных пользователей зеленым, нежелательные комментарии красным:
screens_2018.1530476718.png

Это js скрипт, чтобы его установить в свой браузер нужно расширение поддерживающие пользовательские скрипты - userjs, например greasemonkey для firefox или tampermonkey для chrome. Сам скрипт:

// ==UserScript==
// @name       user highlight for forum.arduino.ua
// @namespace   body
// @include     *forum.arduino.ua/*
// @version     1
// @grant       none
// ==/UserScript==

// Это список  хороших и плохих пользователей через их ID (наводим мышь на ник, ID будет в URL профиля)
var GoodUsers = [ 1550 ]
var BadUsers = [ 1735, 1913 ]

var Comment = document.getElementsByClassName('blockpost');
for(var i=0; i<Comment.length; i++)
{

for(var j=0; j<BadUsers.length; j++)
	{
  	var user = Comment[i].querySelectorAll("a[href='profile.php?id="+BadUsers[j]+"']");
		if(user.length>0)
      {
        // сюда пишем все что хотим делать с комментариями плохих пользователей
        Comment[i].style.backgroundColor='pink'
      }
  }

for(var j=0; j<GoodUsers.length; j++)
  {
  	var user = Comment[i].querySelectorAll("a[href='profile.php?id="+GoodUsers[j]+"']");
		if(user.length>0)
      {
        // сюда пишем все что хотим делать с комментариями хороших пользователей
        Comment[i].style.backgroundColor='lightgreen'
      }
  }

}

#32 Re: Проекти » Разработал событийную ОС и язык для контроллеров. Нужен совет и помощь » 2018-07-01 18:55:43

Так бы и написали что разработали свой компилятор, свою ОС, свой редактор с событиями и куртизанками. Это в принципе не плохо, но это "звоночек".

А с учетом того что Вы написали тут:

Batu пише:

Плохое решение. Оператор Switch будет выполнять все Case пока не найдет нужное.

Это второй, и уже "колокол". Потому что Вы не просто не знаете как работают современные компиляторы, а при этом говорите как он работает, плюс пишите свой, еще и вероятно САМИ (нормальный современный компилятор даже С невозможно в одиночку осилить, вот пример https://bellard.org/tcc/ не осиленного, но почти, компилятора С под AVR, который продавался и успешно, но автор таки не осилил сделать и половину возможных оптимизаций, хотя там были и авторские, хорошие, он даже С не полностью покрыл, а на С99 свалился)

Извините, считаю Вашу работу не бесполезной, а опасной для других (если они не горят желанием убить свое время).

#33 Re: Програмування Arduino » Макроопределения для портов. » 2018-07-01 18:43:03

Batu пише:

Плохое решение. Оператор Switch будет выполнять все Case пока не найдет нужное.

НЕТ, только не это

Оператор switch так не делает. Он делает двумя способами:
1. Если параметры идут числами подряд (0,1,2,3,4....) то строит матрицу переходов - массив с указателем для jump в нужное место. И это самый быстрый вариант.
2. Если параметры идут в разброс (0, 7, 128...) то строит бинарное дерево переходов. И это тоже очень быстро.

Ну так по крайней мере работают современные компиляторы типа gcc. И я это проверял лично смотря ассемблерный сгенерированый листинг, потому что такие утверждения сыпятся с регулярной завидностью и пахнут откровенным бредом.

Вот кто вам это говорит, покажите мне этого врага адекватного человечества? Погуглил. Похоже ноги у этого мифа растут из-за оператора break. И не понимания ассемблера/машинных инструкций. Break даже мешает просто сравнивать все подряд, из-за него бы наоборот пришлось бы дополнительные (несложные) ухищрения добавлять.

#34 Re: Проекти » Разработал событийную ОС и язык для контроллеров. Нужен совет и помощь » 2018-06-27 21:13:04

В тег code Вы код обернули? Нет (поэтому и не подсвечивает). Язык программирования выбрали? Какие еще цвета, подстрочные и надстрочные значения? В известных мне ЯП такого нет.

И события это конечно хорошо, но это полностью не отменяет булевые переменные. Они могут использоваться в любом произвольном алгоритме без необходимости какой либо подписки, просто как временная переменная.

#35 Re: Програмування Arduino » MP3 Shield от компании ELECHOUSE версии 1.3 » 2018-06-26 19:03:35

Ну, в приведенной ссылке с instructables написано что нужно загрузить скетч в ардуину чтобы ОНА управляла плеером, отправляются туда бинарные данные, с клавиатуры Вы их не введете.
Вот например конкретно эти "команды":

    /** select SD card first music and play */
    cmd_buf[0] = 0x7E;          // START
    cmd_buf[1] = 0x04;          // Length
    cmd_buf[2] = 0xA0;          //  For U Disk change this line to 0xA2 
    cmd_buf[3] = 0x00;          // file number high byte
    cmd_buf[4] = 0x01;          // file number low byte
    cmd_buf[5] = 0x7E;          // END

#36 Re: Апаратні питання » ESP 8266-12F + ИК дальномер Sharp GP2Y0A21YK0F » 2018-06-26 18:51:35

Аналоговый сигнал делителем делится лучше цифрового. (За исключением очень слабого выхода, и очень АЦП с низким входящим сопротивлением, но так почти не бывает)

А с учетом что вам не нужна сверхточность - то вообще думать нечего.

#37 Re: Апаратні питання » Замена RFID на защищенные не клонируемые NFC » 2018-06-26 18:47:23

Не столько само симметричное шифрование, а в комплексе - примененный шифр и метод использования.
Там используется алгоритм 3DES который само по себе уже не фонтан (но на очень коротких передачах почти любой шифр не взломать), плюс к тому же если вычислить секретный ключ который для всех nfc применяемых в одной конторе может быть один то компрометируются все nfc чипы.

#38 Re: Програмування Arduino » Как по условию открыть приложение ехе, или хотя бы ссылку в браузере? » 2018-06-26 18:38:30

HTTP сервер ни с того ни с сего не может отправить клиенту данные. Клиент должен их запросить.

Ну... в принципе можете не закрывая </body></html> и соединение отдавать медленно по пробелу (который в html ничего не значит), а по событию таймера отправить <script>setTimeout("location.href = 'index.php';",2000);</script></doby></html> ,где 2000 - задержка от перехода на страницу index.php в миллисекундах. Открыть новую вкладку нельзя, потому что сработает защита от всплывающих окон.

Ваш вопрос больше по веб фронтенду, тут мало кто таким занимается.

#39 Апаратні питання » Замена RFID на защищенные не клонируемые NFC » 2018-06-24 07:15:57

LynX
відповідей: 2

В общем пока писал вопрос и собирал ссылки, ответил на него сам, но пост оставлю, вдруг кому понадобится.

Простоста использования RFID подкупает
medium_RC522_RFID_Module-3.jpg
Я их взял в проект и все было прекрасно, для простоты использовал ID номера карт. Т.е. на карте вообще ничего записано, скопировать их [номера] просто так нельзя, нужно только эмулировать. Эмулятором за $5 или вот только сейчас догадался телефоном (можно поискать у кого с nfc и попробовать). Но в любом случае это проблема - $5 и какой-нибудь пропуск безопасности клонировали, поэтому я решил заменить их на nfc.

NFC могут быть по сути точно такими же безалаберными в плане защиты, но есть две возможности, хорошая защита с помощью симметричного 3DES шифрования и очень хорошая с помощью асимметричного.
Вот например nfc ридер: ali, adafruit, все как с nfc, включая цену, он еще и RFID читает, что не плохо.
Для защиты от копирования нужны метки минимум MIFARE DESFire (classic взломаны). Цена уже выше - $1-4, но вполне приемлемо. Еще полностью не разобрался, но алгоритм шифрования 3DES, с возможностью использования AES. Пока буду рекомендовать заказчику думать о переходе на эти карты.

Замена ПО и протоколов, это уже мелочи и дело рутинное, просто эту информацию не так легко найти хотя бы потому что 1 все используют RFID и не парятся, 2 поиск загажен результатами о nfc в телефонах.

Кстати о телефонах, по идее можно использовать nfc в телефонах, и это было бы прогрессивненько, но по данному вопросу еще не искал. В любом случае, прежде чем внедрять nfc в телефонах, нужно с каратами внедрить.

#40 Re: Апаратні питання » Обратное напряжение на выводах RAMPS 1.4 » 2018-06-24 06:01:38

Без схемы шилда вряд ли кто что скажет. Но мне было интересно, я поискал, что-то с лазерами часто встречается выражение "обратное напряжение" и что оно опасно.

Вот тут ставят диод: https://books.google.com.ua/books?id=Lh … J&pg=PA127 но не последовательно. В общем на вашем месте я бы диод поставил. Последовательно, или встречно параллельно, или оба... шучу. Ставьте. Предохранитель это тоже костыль, лучше бы чтобы все работало и без него, но раз реальность сурова, приходиться иногда использовать костыли.

#41 Re: Програмування Arduino » Как по условию открыть приложение ехе, или хотя бы ссылку в браузере? » 2018-06-24 05:45:21

Для начала надо сделать веб страницу на Вашей arduino с 5100, первое в гугле: http://webstm32.sytes.net/web_1.htm

Потом сделать хитрую веб страничку которая бы заставляла браузер проверять пора ли открывать ссылку, на js например, по таймеру. https://learn.javascript.ru/settimeout-setinterval

Создать на сервере еще одну страничку которая будет проверяться по этому таймеру и в зависимости данных на второй странице - открывать ссылку лучше запускать скрипт со второй страницы, а там он будет или пустым, или "открыть ссылку".

#42 Re: Проекти » Разработал событийную ОС и язык для контроллеров. Нужен совет и помощь » 2018-06-24 05:29:35

Batu пише:

Вот вопрос на засыпку. Чем отличаются методы и свойства?

Пока не сказано в рамках какой парадигмы идет речь - все вилами по воде писано.

Вы знаете что даже "массив" в разных языках программирования обозначает разные вещи?

Если речь идет в рамках определений ООП С++ то это уже старая давно известная тема. В java публичных свойств нет, есть методы.

Получается 

Batu пише:

Зачем эти два понятия нужны, если методами можно заменить свойства? А ответ на этот вопрос позволяет сделать адресацию интеллектуальней..

что Вы изобрели то что уже давно изобретено в С++ и эволюционировало в ту же джаву еще лучшим.

#43 Re: Програмування Arduino » Как по условию открыть приложение ехе, или хотя бы ссылку в браузере? » 2018-06-22 09:03:40

Без программы на компе запустить exe никак. С программой - не понятно зачем нужна Ардуина (таймер можно в программе задать).

Ссылку в браузере можно... без программы на компе, но с открытой вкладкой в браузере.

Предлагаю третий вариант: делай эмулятор usb клавиатуры на Arduino, запустить программу просто: нажимаем Windows+R mspaint.exe Enter

#44 Re: Апаратні питання » Вопрос по подключению реле к ардуино » 2018-06-21 01:39:10

Ну да, добавь резистор. 300-3к подойдет.
screens_2018.1529533834.png
На то устройство что "главнее" резистор не ставь. (Т.е. если кнопка "главнее" ардуины, то резистор на ардуину). Если кнопки никто нажимать не собирается, то jpg.

Возможно эти резисторы уже есть на плате, чего там только нет.

#45 Re: Апаратні питання » Обрезание » 2018-05-26 01:55:01

Оно же с картинками: https://geektimes.com/post/257580/
Тут пилят поперек, вдоль и горизонтально. На любой вкус в общем.
2502c693a02caf4ef90d605a72a49614.jpg
93376674075ed39b6c6bbbc29ef1b674.jpeg

#46 Re: Апаратні питання » [решено] Датчик тока с высоким макс.током и чувствительностью в низком » 2018-05-11 03:43:22

Коротко: подключаем к АЦП по классической схеме и все работает. Мне и всем кто все усложнял - двойка.

Полностью: Мучался я с АЦП, а оказалось что АЦП на ESP32 присутствует чисто формально. 5-8 рабочих бит остальное мусор 1 2.

Пришлось посадить на AVR, которая там была временно, теперь видимо будет штатной. Схема включения - токовый датчик + резистор на 47Ом + сдвиг напряжения.

Дальше просто считаю RMS. При 1000 измерениях значения немного прыгают, при 10к уже довольно надежно.
Показания простые: Все выключено RMS <=0.0011В, лампа накаливания 75Вт RMS=0.0165В, зарядник от мобильного 2Вт RMS=0.0017В (пробовал и другие, это самое маломощное что нашел).

	uint64_t sum=0,square_sum=0;
	const uint32_t MAX=10000;
	for(uint32_t i=0;i<MAX;i++)
	{	uint16_t value=analogRead(A0);
		sum+=value;
		square_sum+=((uint32_t)value)*value;
	}
	double average=sqrt(square_sum/(double)MAX);
	double RMS=sqrt((square_sum+average*(MAX*average-2*sum))/MAX);
	// пусть не смущает эта формула RMS, я просто задумался как посчитать RMS не сохраняя всех значений в памяти
	// взял листик, три строчки, получилось вот такая эквивалентная формула

screens_2018.1525998654.png
Тот редкий случай когда теоретически ничего не получается, а практически все как по маслу (благодаря оверсемплингу?). С учетом что расчетное и измеренное напряжение на лампе накаливания совпало, буду считать что ошибок нет и это неожиданно успешный результат.

Всем спасибо.

#47 Re: Апаратні питання » прерывание из прерывания? » 2018-05-10 13:57:25

Сделайте код прерывания более простым, максимально быстро выполняющимся. Если нужно в прерывании сделать много вычислений долго обслуживат экран - выставьте флаг, а в основном цикле его опрашивайте - как только флаг будет установлен - выполняйте свои вычисления обслуживайте экран.



не хочется нагружать лишней "работой" цикл опроса энкодера.

Эвона как Вы все наоборот сделали. Энкодер установите на прерывания и не опрашивайте. Нельзя не нагружать лишней "работой", процессор не многоядерный, если есть какая-то нагрузка она будет выполнена в ущерб основной работе, в прерывании она или нет. И в данном случае чтобы не пропускать отсчеты енкодера единственный выход - сам енкодер поставить на прерывания.

#49 Re: Апаратні питання » 2.4" 320х240 TFT подключение к Mega 2560 Pro Mini » 2018-05-09 15:12:51

1) AREF не нужно, 3.3В - возможно.

2) Вячеслав Азаров прав. То что подсоединял на пины 11,12,13 UNO подсоедени на пины 51,50,52 Mega соответственно. Естественно измени это числа в скетче. (Но есть экраны для UNO которые так же работают на Mega, видимо через программный SPI)

3) А вы читали документацию на шилд по приведенной Вами ссылке?

Внимание! При использовании шилда с платой Arduino Mega, вызывать конструктор нужно вот так:
UTFT myGLCD(S6D1121_8 ,A5,A4,A3,A2);
так же, в папке библиотеки UTFT нужно открыть файл HW_AVR_defines.h и раскоментировать строку номер 7:
#define USE_UNO_SHIELD_ON_MEGA 1
после чего перезагрузить среду разработки Arduino IDE

4) Одновременно не делайте то что я написал в п2 и п3, одно из двух.

#50 Re: Апаратні питання » [решено] Датчик тока с высоким макс.током и чувствительностью в низком » 2018-05-09 02:50:26

Lic Control пише:

Трансформатор тока здесь не поможет. Устройство должно включать в себя как аналоговые так и цифровые цепи с опторазвязкой

Инструкция к трансформатору тока HWCT004 пише:

Трансформатор предназначен для согласования контролируемой величины переменного тока со входными цепями измерительных устройств, таких как амперметры, контроллеры тока, защитное оборудование и т.д. При этом достигается гальваническая развязка между высоким напряжением и слаботочной измерительной аппаратурой.

Підвал форуму