#26 2017-08-05 11:06:56

Green
Участник
Зарегистрирован: 2015-11-08
Сообщений: 310

Re: построение программы в Arduino

us not ms). Кстати это всё работа билдера. При этом думать (знать!) не обязательно.)

#27 2017-08-05 11:23:35

NoName
Customer
Из Київ
Зарегистрирован: 2014-07-08
Сообщений: 1,269

Re: построение программы в Arduino

Green пишет:

us not ms). Кстати это всё работа билдера. При этом думать (знать!) не обязательно.)

точно  us )  дето очки посеял
но мне это "При этом думать (знать!) не обязательно."  как то не нравится

#28 2017-08-05 11:35:07

Green
Участник
Зарегистрирован: 2015-11-08
Сообщений: 310

Re: построение программы в Arduino

Толи дело delayMicroseconds() ).
А знать/не знать уже от человека зависит. Всё знать невозможно. А когда будет затык - вот тогда и будем разбираться. Или звать на помощь.) Есть и такой подход.

#29 2017-08-05 20:19:24

Вячеслав Азаров
Участник
Из Запорожье
Зарегистрирован: 2017-05-25
Сообщений: 570

Re: построение программы в Arduino

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

ADPS0 содержит  биты ADPS1, ADPS2, ADIE, ADIF, ADATE, ADSC, ADEN, они ведь все сбрасываются наглядным написанием. Что вы на это скажете? А в общем, ивините меня и не обижайтесь. Это, похоже, больше никому, кроме нас, не нужно.

А не использую я другие биты, в нуле они! А играюсь только двумя. Либо сбросил  0<<BIT1 | 0<<BIT2, либо установил 1<<BIT1 | 1<<BIT2. И считаю что так нагляднее.
Разговор ни о чём! Так не я же начал? И какие там обиды. Каждый имеет своё мнение и делает как считает нужным. Не в коллективе ж ведь, требований то никто не ставит.)
А то что Вам такие "конструкции" кажутся необычными, так не привыкли просто.)

Привык. Я всякое видал, еще и не такое. Нужно было бы насобирать такие "конструкции" и отрыть блог, да нет желания.  wink

А вообще-то умножение нулей на различные значимые числа это по нашему. Мы давно уже привыкли. Это наши конструкции.

#30 2017-08-07 10:09:45

Green
Участник
Зарегистрирован: 2015-11-08
Сообщений: 310

Re: построение программы в Arduino

И не только числа. Например, "я Вас помножу на 0").
Вижу, в данном случае подходит другое. "На этот счёт есть несколько мнений. Одно моё, остальные неправильные".)

#31 2017-08-07 11:06:38

Вячеслав Азаров
Участник
Из Запорожье
Зарегистрирован: 2017-05-25
Сообщений: 570

Re: построение программы в Arduino

Green пишет:

И не только числа. Например, "я Вас помножу на 0").
Вижу, в данном случае подходит другое. "На этот счёт есть несколько мнений. Одно моё, остальные неправильные".)

Вы просто не поняли мою иронию, или я неудачно пошутил. Я не о вас, конкретно. Я про ВСЁ.

Редактировался Вячеслав Азаров (2017-08-07 11:08:08)

#32 2017-09-29 20:34:11

Валерий Канинский
Гость

Re: построение программы в Arduino

Я работаю с Arduino IDE неделю, а до того работал с IAR и думаю, что смогу дать ответ на первый вопрос Вячеслава Азарова, с которого началась данная тема:
   1)
   В Arduino IDE совсем другой подход к проектированию встроенной программы, чем в тех системах, где он ранее работал. Ранее предполагалось, что ты имеешь "голый" контроллер. Ты разбирался с его внутренностями, изучал все форматы и творил проект, в котором ты определял все. При этом тебе были доступны все его ресурсы, и ты мог сотворить многозадачный проект, все задачи которого работают параллельно в "жестком" реальном масштабе времени.
   Теперь тебе предлагается работать с "железом" только через "драйверы" - встроенные функции IDE библиотеки. В каждой библиотеке описываются ограничения, что использовано, а что нет. Об многих вещах, о которых ранее приходилось думать, теперь никто не думает. Все "просто как борщ", но в то же время такой подход годится "только для игрушек".
   2)
   Не даром в Arduino IDE проект называется скэтч. Попробуйте в этом IDE создать проект, состоящий из нескольких файлов. Попробуйте там открыть Си-шный файл или библиотеку. У меня по крайней мере этого не получилось. Может быть, я еще мало изучал документацию, плату купил, рабочее место организовал, далее будет видно.
  3)
  Поработал с элементарным примером "web_server_hw_button_pg_button" - скетч с веб сервером, обслуживающим две кнопки и две лампочки с аппаратной стороны (HardWare) и две кнопки со стороны компа (ProGram). В этой программе параллельно работают:
         - связь с клиентом через Ethernet
         - технологическая связь с Arduino Monitor через USB
   Был немало удивлен, когда обнаружил, что одно другому мешает работать. Вывожу один массив в обе линии, и он выводится неправильно. Если массив берется из ПЗУ, то указатель на этот массив устанавливается неправильно. Когда работает Ethernet, в технологический порт шлется "мусор" вместо сообщений, которые запрограммированы. А вот, когда мы всю эту работу растягиваем во времени, т.е. вставляем в нужных местах задержки типа delay(1000) (задержка на 1 секунду!), то все начинает работать.

#33 2017-09-29 20:39:25

Валерий Канинский
Гость

Re: построение программы в Arduino

Извиняюсь, еще раз просмотрел тему, я перепутал имя - не Вячеслав Азаров, а Krian

#34 2017-09-29 21:28:56

Вячеслав Азаров
Участник
Из Запорожье
Зарегистрирован: 2017-05-25
Сообщений: 570

Re: построение программы в Arduino

Валерий Канинский пишет:

Извиняюсь, еще раз просмотрел тему, я перепутал имя - не Вячеслав Азаров, а Krian

Да, Ардуино это не Embedded Workbench и не CubeMX. Однако, популярность этой штуковины колосальна. Что это такое? Образовательный проект, рекламная компания или надувательство начинающих. Кажущаяся простота Ардуино обманчива. За аскетическим интерфейсом скрываются виртуозные методы сборки и оптимизации програм компилятора GCC. А коллективные библитотеки представляют собой неплохие примеры управления различным оборудованием. И хотя Ардуино не очень годится для серьезного профессионального проектирования это неплохой способ быстро показать свой продукт на рынке. Лично я, при всех недостатках этого шедевра, считаю его полезным не только для начинающих.

Редактировался Вячеслав Азаров (2017-09-29 21:30:10)

#35 2017-09-29 21:39:11

NoName
Customer
Из Київ
Зарегистрирован: 2014-07-08
Сообщений: 1,269

Re: построение программы в Arduino

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

....Лично я, при всех недостатках этого шедевра, считаю его полезным не только для начинающих.

+

#36 2017-09-30 14:10:55

Валерий Книнский
Гость

Re: построение программы в Arduino

Вячеслав!
Я абсолютно с Вами согласен. Продукт полезный.
Я только ответил на первый вопрос господина Krian, поскольку никто до этого не удосужился этого сделать.
Кроме того, я попытался вкратце оценить "недостатки" такого подхода, чтобы тот, кто берется за Arduino, сразу же представил "ограничения", которые его ждут.
Кроме того, и для "профессионалов старой закалки" он тоже очень наглядно демонстрирует современные подходы к разработке встроенных проектов.
Ну уж очень неудобно. Наверное, я еще не все инструменты освоил, которые доступны. Но у меня при работе с Arduino IDE все время создается впечатление, как будто по темной глубокой пещере лазишь с фонариком.

#37 2017-09-30 14:21:48

NoName
Customer
Из Київ
Зарегистрирован: 2014-07-08
Сообщений: 1,269

Re: построение программы в Arduino

https://geektimes.ru/post/258766/
http://robotosha.ru/arduino/sublime-text-as-ide-arduino.html

стандартный IDE наверное хорош  при попытках разобратся с кучей разновлановых arduino devices 
я пишу в notepad++  ошибки исправляю в родной ардуиновской IDE ( родная среда - это писец полный %) )

#38 2017-09-30 16:24:23

Валерий Книнский
Гость

Re: построение программы в Arduino

Спасибо за быстрый ответ, буду разбираться. Но по ходу есть еще вопрос:
  Гоняю программу тестирования печатной платы, которая работает следующим образом: после включения она гоняет тест и при каждом прогоне выкидывает в технологический монитор сообщения "Запуск прохода" и "Конец прохода".
  Останавливаю тест, включаю Ethernet (плата стоит сервером на Ethernet). Контролирую в том же технологическом мониторе, что запрос с компа пришел правильный.
  Запускаю опять тест, теперь в строках сообщений в технологическом мониторе передаются какие-то строки из ОЗУ. Т.е. программа при исполнении модуля Serial.println("Запуск прохода") устанавливает указатель не туда.
  Я подозреваю, что мне просто не хватает какой-то библиотеки, например <avr/pgmspace.h>, которая позволит контроллеру отделить массивы, располагаемые в ОЗУ от массивов, располагаемых в ПЗУ.
  Где эту библиотеку взять?
  Или проблема не в этом?

#39 2017-09-30 17:41:52

Вячеслав Азаров
Участник
Из Запорожье
Зарегистрирован: 2017-05-25
Сообщений: 570

Re: построение программы в Arduino

На счет констант обьявленных как PROGMEM. Компилятор не может автоматически читать данные из этой секции, находящейся в области памяти кода программ, к сожалению. Для прочтения этих контант нужно использовать функции из /avr/pgmspace.h например pgm_read_byte_near(address_short), в соответствии в вашей моделью памяти.

#40 2017-09-30 18:10:41

Green
Участник
Зарегистрирован: 2015-11-08
Сообщений: 310

Re: построение программы в Arduino

Валерий Книнский, если всё так как Вы написали, то просто кодировка.)

#41 2017-10-01 00:13:50

Валерий Книнский
Гость

Re: построение программы в Arduino

Вячеслав!
Большое спасибо за подсказку, а также всем поучавствовашим. Формат подсмотрел по ссылке
https://www.arduino.cc/en/Reference/PROGMEM
Немножко странный формат, ну да ладно, в Си для встроенных контроллеров это всегда так. При отладке немного поплутал. Меня смутило, что библиотеки SPI.h, Ethernet.h светятся красным, а avr/pgmspace нет.
С кодировкой все в порядке, но указатели "убегали" по очень простой причине. Буфер был величиной 650 байт, а формат указателя byte. Это я с самого начала проглядел.

#42 2017-10-01 00:25:27

Валерий Книнский
Гость

Re: построение программы в Arduino

Это сразу в глаза не бросается, вариант 1 не работает
// option 1
                        static short address_short = *index_ROM;
                        static char c;
                        for (int i = 0; i < len_index; i++) {
                          c = pgm_read_byte_near(address_short++i);
                          Serial.write(c);
                        }
а вариант 2 работает, хотя с точки зрения СИшного кода оба варианты правильны
// option 2
                        static char c
                        for (int i = 0; i < len_index; i++) {
                          c = pgm_read_byte_near(index_ROM + i);
                          Serial.write(c);
                        }

#43 2017-10-01 22:25:26

Green
Участник
Зарегистрирован: 2015-11-08
Сообщений: 310

Re: построение программы в Arduino

Сначала одно, затем другое... Похоже второй Сима.(

Быстрое сообщение

Введите сообщение и нажмите Отправить

Подвал раздела