Lihouzov

Реализация Графического Языка Программирования Для Avr Контроллеров.

267 сообщений в этой теме

optima    224
9 минут назад, Lihouzov сказал:

Критиковать- не создавать, знаний не надо.

В данной ситуации думаю знания получает только один человек это вы. Так как только вы разбираясь в  работе периферии МК получите какой то опыт!  Но ни как не пользователь вашей программы,  у которого мозгов не прибавится собирая программы из готовых кубиков.

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

В 20.06.2018 в 22:41, Lihouzov сказал:

а потом и перенести на 32 битные

Пока вы разберетесь с АVR,  то за ARM вряд ли угонитесь. Все не так просто как обычно нам хочется. Советую не терять драгоценного времени, хотя это ваш крест вам и решать.  Это чисто мое мнение,  удачи.

52 минуты назад, Lihouzov сказал:

Сейчас десяток блоков влазит в килобайт.

Вопрос экономии драгоценных байтов сейчас практический уже не актуален.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
ARV    498
10 часов назад, optima сказал:

Пока вы разберетесь с АVR,  то за ARM вряд ли угонитесь.

Поэтому стоит генерировать код не на ассемблере, а на Си, т.е. максимально абстрагированно от архитектуры и аппаратуры. И, кажется, на "радиокоте" я это автору советовал...

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
ruhi    34
14 часа назад, Lihouzov сказал:

Сейчас десяток блоков влазит в килобайт. приемлемая производительность.

У вас в постановке задачи заметна некоторая деградация с 13-года (я специально в начало темы посмотрел),

в начале были какие то грандиозные схемы управления (двигателями кажется), и здесь мы вдруг видим примитивную логику с тригерами и булевыми операциями.

Я не думаю что реализация такой примитивной логики требует визуальной среды разработки!

Потом, задержки прохождения сигналов (фронтов) ваша система позволяет оценить? Мне кажется нет, по крайней мере не вижу как! А это один из наиважнейших аспектов в проектировании-реализации логики, если этого нет - система проектирования не жизнеспособна (мягко говоря).

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
COKPOWEHEU    264
5 часов назад, ARV сказал:

Поэтому стоит генерировать код не на ассемблере, а на Си, т.е. максимально абстрагированно от архитектуры и аппаратуры.

А можно воспользоваться наработками gcc или LLVM

2 часа назад, ruhi сказал:

Я не думаю что реализация такой примитивной логики требует визуальной среды разработки!

Никакая логика не требует визуальной среды.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
ARV    498
9 часов назад, ruhi сказал:

в начале были какие то грандиозные схемы управления (двигателями кажется), и здесь мы вдруг видим примитивную логику с тригерами и булевыми операциями.

 

7 часов назад, COKPOWEHEU сказал:

Никакая логика не требует визуальной среды.

Думаю, что дело не в деградации разработчика, а в деградации "зрителей". С каждой "итерацией" в развитии средств программирования уровень понимания у начинающих все ниже и ниже, и объяснить принцип FBD сразу на примере какой-то реально полезной задачи становится все сложнее и сложнее. А задача визуальной среды именно облегчить использование сложного... Но, увы, сложное оказывается слишком сложным, и приходится его упрощать.

FBD - весьма перспективное направление в проектировании систем управления "домохозяйками", а точнее, инженерами-инсталляторами (т.е. людьми, способными по формальному словесному описанию заказчика нарисовать соответствующую картинку в графическом редакторе, но при этом они могут иметь весьма смутное представление о том, как "устроены" эти квадратики-стрелочки).

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
ruhi    34
15 часов назад, ARV сказал:

С каждой "итерацией" в развитии средств программирования ...

... перспективное направление в проектировании систем управления "домохозяйками"

А я думаю что "развитие средств программирования " в сторону "проектировании систем управления "домохозяйками"" 

есть не развитие, а деградация! И перспектив в этом не вижу!

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
COKPOWEHEU    264
В 28.06.2018 в 20:19, ARV сказал:

FBD - весьма перспективное направление в проектировании систем управления "домохозяйками", а точнее, инженерами-инсталляторами

Для примитивной автоматизации готовых устройств может и пригодно - вроде уже в этой теме обсуждалось. Но только там, где можно проигнорировать дикий расход скорости и памяти как на саму визуальную среду, так и на говнокод (я не верю в хороший код от домохозяек). Программирование МК - немного другая область.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Lihouzov    11

Всем добрый день, комментариев много- отвечу коротко.

 

Программа не поможет в понимании микроконтроллеров, если только не влезать в код и не добавлять блоки.
Программа поможет реализовать алгоритмы автоматизации используя язык FBD (стандартный язык автоматизации).

 

На предприятиях вы не столкнетесь с привычным Си, Pascal или ассемблером, там будет ST, FBD, .. итд, а специалисты со знанием этих языков будут востребованы. 

 

Для примера. Пару лет назад ко мне обратился знакомый радиолюбитель (мог писать код для микроконтроллера) с задачей автоматизации мелкого предприятия. Ему предложили хорошую подработку за автоматизацию, он разобрался в тех. процессе и перед ним встала задача реализации. Он решил сделать на микроконтроллере, но после разговора со мной выбрал промышленный контроллер. Первые несколько дней он ругался и плевался на эти языки, но спустя неделю освоил и с легкостью решил задачу и был доволен результатом.

 

Сделал оптимизацию кода:

 

Изменено пользователем Lihouzov

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
COKPOWEHEU    264
16 часов назад, Lihouzov сказал:

На предприятиях вы не столкнетесь с привычным Си, Pascal или ассемблером, там будет ST, FBD, .. итд, а специалисты со знанием этих языков будут востребованы. 

Не путайте: Си, Паскаль и прочие тоже будут - при создании законченных приборов или программ.

А при автоматизации, создании из законченных приборов автоматизированной системы, настраиваемой не-программистами как раз используются графические "языки". Их преимущество именно в том, что не надо учить синтаксис, достаточно абы как соединить готовые кирпичики изолентой. Так вот, при _создании_ приборов на МК такой подход неэффективен.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
optima    224

Я так думаю, если бы ваш знакомый действительно 

19 часов назад, Lihouzov сказал:

(мог писать код для микроконтроллера)

и на самом деле

19 часов назад, Lihouzov сказал:

Он решил сделать на микроконтроллере

То он бы сделал это без применения промышленного контроллера.  Скорее всего уровень его знаний в области МК был недостаточен. Да и цены на такие контроллеры не особо то привлекательны.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
COKPOWEHEU    264

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Lihouzov    11

Ядро обновил, тест производительности предыдущего и текущего ядра:

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Lihouzov    11

Добрый день, 

можно ли получить доступ к портам ввода-вывода не используя asm команды IN? OUT?

Например я храню в регистре адрес порта, как используя значение регистра получить доступ к порту? 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Геннадий    1 030

Попробуйте через LD, адрес регистра ввода должен находиться в индексном регистре Z.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
COKPOWEHEU    264

команды ld / st. Адрес в любой из регистровых пар X, Y, Z. Результат записывается в r0-r31.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Lihouzov    11

ld / st работают, только необходимо адрес указанный в файле описания контроллера смещать на 0x20

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас


  • Похожие публикации

    • Автор: parovoZZ
      Поставил LUFA, следом абсолютно не нужный мне ASF. Но в упор не понимаю - как создать проект на базе этой библиотеки из студии? Приходится вручную копировать папку с заголовочниками LUFA, прописывать пути в makefile, лишние телодвижения по добавлению папки в свойства проекта. Если я это делаю всё вручную, то тогда для чего это расширение? Примеры я могу и так покрутить. ЗЫ - не слишком высокий скилл в юзании Atmel Studio/
    • Автор: Trisector
      Привет всем.
      Помогите с кодом, нужно озвучить нажатие кнопки, подключенной к порту PB0, то есть просто издать короткий "бип" одной частоты (примерно 1000 Гц) и длительностью примерно 0.2 секунды.
      Везде, где искал, сразу создают кучу нот, разные тона, используют прерывания, мне же надо только один короткий бип.
      Выполняться оно должно в теле цикла:
      while (1) 
          {
              while(PINB&0b00000001); // ждем нажатия на кнопку на порте PB0
      <вот здесь должен быть бип>
       
      п.с. забыл добавить - выполняться код будет на Attiny13a
    • Автор: Zver2011
      Всем привет! 
      Дано: Контроллер подсветки рабочей зоны кухни, реализованный на Tiny 13A.  Светодиодная лента длиной 2,3 метра, led 5050, 120 светодиодов/метр. Принципиальная схема устройства ниже:

      Код прошивки:
      #include <tiny13.h> #include <delay.h> int triggered = 0; int ontimer = 0; void main(void) { // Input/Output Ports initialization // Port B initialization // Function: Bit5=In Bit4=In Bit3=In Bit2=In Bit1=In Bit0=Out DDRB=(0<<DDB5) | (0<<DDB4) | (0<<DDB3) | (0<<DDB2) | (0<<DDB1) | (1<<DDB0); // State: Bit5=T Bit4=T Bit3=T Bit2=T Bit1=T Bit0=0 PORTB=(0<<PORTB5) | (0<<PORTB4) | (0<<PORTB3) | (0<<PORTB2) | (0<<PORTB1) | (0<<PORTB0); // Timer/Counter 0 initialization // Clock source: System Clock // Clock value: 37,500 kHz // Mode: Fast PWM top=0xFF // OC0A output: Non-Inverted PWM // OC0B output: Disconnected // Timer Period: 6,8267 ms // Output Pulse(s): // OC0A Period: 6,8267 ms Width: 0 us TCCR0A=(1<<COM0A1) | (0<<COM0A0) | (0<<COM0B1) | (0<<COM0B0) | (1<<WGM01) | (1<<WGM00); TCCR0B=(0<<WGM02) | (1<<CS02) | (0<<CS01) | (0<<CS00); TCNT0=0x00; OCR0A=0x00; OCR0B=0x00; while (1) { if (PINB.1==1) { triggered = 1; ontimer = 60; }; if (ontimer > 0) { ontimer--; } else { triggered = 0; }; if (triggered) { if (OCR0A<255) { OCR0A++; }; } else { if (OCR0A>0) { OCR0A--; }; }; delay_ms(10); } } Возникшая проблема:
      Греется полевой транзистор при работе. 
      Изначально поискав информацию на данную проблему, начал прикидывать. 
      Смотрим график зависимости пропускаемого тока стока (ID )от приложенного напряжения  затвор-сток (VGS),  при температуре окруж. среды 25 градусов: ID = 14 А (2,3 метра светодиодной ленты не могут столько кушать, по крайней мере я такую не видел).

      Было предположение что частота переключения ШИМ высокая - отсюда транзистор в не определенном состоянии = нагрев. Рассчитал макс. частоту так:
      Rg = 100 Ом, Vgs = 5V
      Заряд затвора:
      Qiss = Ciss * Vgs = 1800pF * 5v = 9nC
      Скрость нарастания:
      S = Rgate * Qiss = 100Ohm * 9nC = 0.009mV*sec
      Время на открытие или закрытие транзистора:
      t=S / Vgs = 0.002mV*sec * 3.2v = 4.5uSec
      Период  - это открытие + закрытие:
      T = t + t = 4.5uSec + 4.5uSec = 9uSec
      Максимальная частота переключения:
      F < 1 / T = 1 / 9uSec = 111KHz
      Ток через затвор (G) и цифровой выход Tiny 13A:
      I = Qiss / t = 2mA
      Максимальный выходной ток GPIO у Tiny 13A 40.0mA
      2mA < 40.0mA
      Выставил частоту ШИМ на 37,5 кHz. Вуаля - при подключении 1м светодиодной ленты (тестировал на обрезке), нагрева нет. Но как только подключил все 2,3 метра - транзистор стал снова спустя время греться, аж дотронуться не возможно.  Захотел померить ток, который потребляет 1 метр ленты, проверить продавца. Потребление 1 метра ленты оказалось вместо заявленных 600 мА, все 1,85 А, причем заметил странную вещь - ток начал возрастать спустя время на сотые доли  и дошел до 1,9 А. Дальше ждать не стал. Режим амперметра в мультиметре сломался?
      Далее подумал что слишком большая мощность рассеивается на транзисторе. Если учесть то, что при открытом транзисторе, его переход можно представить в виде линейного резистора с маленькой величиной сопротивления,  можно рассчитать рассеиваемую мощность на транзисторе:
      Смотрим сопротивление транзистора в открытом состоянии при VGS = 5В : RDS(on) = 0.18 Ом
      P1 = 1,9*1,9*0,18 = 0,65 Вт. (1 метр св.ленты).
      Раз мы взяли потребление 1 метра ленты  1, 9 А, тогда 2,3 метра потребляют  = 4,4 А. (Теперь не уверен в своем мультиметре).
      P2=4.4*4.4*0.18 = 3.5 Ватт - довольно таки многовато я думаю.
      В общем: Правильно ли я делаю расчеты? Что упустил?  Как снизить нагрев транзистора, без применения вентиляторов и здоровенных радиаторов? Есть вариант замены светодиодной ленты на что нибудь поменьше жрущее (60 светодиодов/ метр например), но в будущем еще много раз придется сталкиваться с полевиками, хотелось бы разобраться .
    • Автор: Денис Оробей
       Помогите написать простую задачку (для вас - простую, а я не шарю), на плате контроллера-конструнтора KIT-8515 нужно  сделать вот это: "Пусть движковыми переключателями задаются два четырехзначных операнда.  Напишите и протестируйте программу, при работе которой после нажатия кнопки 1 операнды складывались, а при нажатии кнопки 2 операнды вычитались, а результат операции выводился на светодиоды"
      Прикреплённый файл - начало задачки.
      Заранее благодарствую:)
      123.rar
    • Автор: AnKoMa
      Нужна помощь МАСТЕРА!
      Есть объем (утепленный, застекленный балкон).
      Нужно сделать систему управления периферийными устройствами  для подстраивания имеющихся климатических изменений к заданным годовым и суточным циклам растений другого климатического пояса.
      Периферия:
      Источники обогрева – вентилятор, подающий тёплый воздух из квартиры;  насос, прогоняющий горячую воду из системы отопления дома по водяному тёплому полу балкона; ИК потолок; электрообогреватель с вентилятором.
      Вентиляция (устраняет застой воздуха) - два сервопривода (открытия/закрытия форточек); два вентилятора, способные изменять угол наклона (подачи воздуха).
      Освещение  - три типа ламп разного спектра (УФ, холодный белый, фито лампы красно-синие).
      Охлаждение - упомянутые ранее форточки и вентиляторы; шторки притенение; туманообразующая установка.
      Увлажнение - тот же туманообразователь и он же, но через клапан гонит воду в поддоны.
      Принцип:
      Перед началом работы в память вносится почасовой диапазон допустимых температур.
      Работа - Производятся замеры внешних (уличных) условий (температура, влажность, изменение давления).  Производятся замеры внутренних  условий (температура, влажность воздуха и грунта, освещённость).  Календарь-часы (реального времени) выбирают из памяти соответствующий адрес, и выбранная  информация попадает на схему сравнения с показаниями, замеренными в управляемом объёме. В зависимости от полученной разности, система управления выбирает наименее энергозатратный периферийный орган для достижения заданных условий. Величина воздействия энерготратящих устройств должна равняться интегралу во времени от разницы заданного и замеренного параметра. При достижении полной мощности и не уменьшающейся разницы (невозможность компенсировать) подаётся сигнал тревоги.
      Температура в нутрии объёма прямо пропорциональна внешней освещенности в пределах указанных при внесении в память. Количество воды для полива или опрыскивания прямо пропорционально температуре предыдущего дня. Полив не должен проводиться при падении атмосферного давления и низкой внешней температуре. После полива температура не должна опускаться к нижнему пределу.  В сильные морозы шторы можно не поднимать (экономия тепла). Летом полив или проводить вечером, а весной и осенью - утром. Зимой полива НЕТ!!! Может быть опрыскивание ранней весной (утром  солнечного дня). С весны до осени на рассвете включать УФ подсветку, в период вегетации включать свет в пасмурную погоду, поддерживать световой день не менее 12 часов (в тёмное время суток при включении освещения закрывать шторки). При падении уровня воды, в баке опрыскивателя, ниже допустимого подаётся соответствующий сигнал.
      Предусмотреть ручную подачу той или иной команды.
      В случае невозможности выполнить поставленную задачу оповещать.
      Подскажите, если есть опыт, наиболее простой путь к решению.