Перейти к содержанию

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


Lihouzov

Рекомендуемые сообщения

Блок ШИМ реализация:

#ifndef _FBD20_
#define _FBD20_ FBD20
#message define FBD20 (PWM) __FILE__
//Размер описания FDB блока
//1 байт- привязка к узлу вход больше
//1 байт- привязка к узлу вход меньше
//1 байт- привязка к узлу выход
//1 байт- ШИМ максимальное значение счетчика
//1 байт- максимальное значение ШИМ
//1 байт- минимальное значение ШИМ
//Необходимый размер оперативной памяти
//1 байт- текущее значение
//1 байт- значение ШИМ
FBD20_init:	
ADIW  Adr_EEPROM_L, 5						    ;пропускаем первые пять байт конфигурации
rcall EERead									 ;Минимальное значение
st    X+, Addr_Data							  ;Сохраняем текущее значение
st    X+, Zero								   ;Сохраняем значение ШИМ
ret											  ;Окончание инициализации блока
FBD20_run:
//======== Читаем данные блока из файла конфигураций =========
rcall EERead									 ;Вход больше
rcall Load_Uz1								   ;Вход больше
rcall EERead									 ;Вход меньше
rcall Load_Uz2								   ;Вход меньше
rcall EERead									 ;Выход ШИМ
mov   A, Addr_Data							   ;Выход ШИМ
rcall EERead									 ;ШИМ максимальное значение счетчика
mov   B, Addr_Data							   ;ШИМ максимальное значение счетчика
rcall EERead									 ;Максимальное значение
mov   C, Addr_Data							   ;Максимальное значение
rcall EERead									 ;Минимальное значение
mov   D, Addr_Data							   ;Минимальное значение
//========= Читаем данные блока из оперативной памяти =========
ld    E,  X+									 ;Текущее значене
ld    F,  X+									 ;Счетчик ШИМ
//================== Логика работы FBD блока ==================
inc   F							   ;Счетчик ШИМ		   ;
cp    B,  F						   ;Счетчик ШИМ
brsh  FBD20_						  ;Счетчик ШИМ  
clr   F							   ;Счетчик ШИМ
FBD20_:
ldi  G, 0b00000001
and  Uz1L, G						  ;Больше
cpse E, C							 ;Больше
add  E, Uz1L						  ;Больше
and  Uz2L, G						  ;Меньше
cpse E, D							 ;Меньше
sub  E, Uz2L						  ;Меньше
SBIW Adr_RAM_L, 2					 ;Сохраняем
st   X+, E						    ;Сохраняем счетчик ШИМ
st   X+, F						    ;Сохраняем счетчик ШИМ

clr  Uz3L							 ;Предварительный результат
clr  Uz3H							 ;Предварительный результат
cp   F, E							 ;ШИМ-значение
rol  Uz3L							 ;Результат
mov   Addr_Data, A				    ;Сохраняем узел
rcall Save_Uz3					    ;Сохраняем узел


ret								   ;Окончание исполнения логики блока
FBD20:
.db 6, 2						 //Размер FBD блока, необходимая оперативная память
.dw FBD20_run, FBD20_init
#else
#error redeclared FBD20 __FILE__
#endif

Тестовая конфигурация:

-dUEOEPKfHI.jpg

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

  • 2 недели спустя...

Сравнительное тестирование аккумуляторов EVE Energy и Samsung типоразмера 18650

Инженеры КОМПЭЛ провели сравнительное тестирование аккумуляторов EVE и Samsung популярного для бытовых и индустриальных применений типоразмера 18650. 

Для теста были выбраны аккумуляторы литий-никельмарганцевой системы: по два образца одного наименования каждого производителя – и протестированы на двух значениях тока разряда: 0,5 А и 2,5 А. Испытания проводились в нормальных условиях на электронной нагрузке EBD-USB от ZKEtech, а зарядка осуществлялась от лабораторного источника питания в режиме CC+CV в соответствии с рекомендациями в даташите на определенную модель. Подробнее>>

Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161

При тестировании проекта столкнулся с проблемой связанной с EEPROM. У меня три микроконтроллера AT90S2313, у всех появились проблемные ячейки EEPROM. У одной EEPROM изначально не писалась (прошивал PonyProg), у двух других отказала во время тестирования программы. Микроконтроллерам более 8 лет, остались еще с института.

Исполнительная программа непрерывно читает EEPROM (так как в нем находиться конфигурация). При запуске программы все отлично работает сколь угодно долго, стоит поиграть питанием или коснуться до кварца в какой то момент программа останавливается. Дальнейший перезапуск не помогает. Выдергиваю микроконтроллер, сравниваю flash совпадает, сравниваю EEPROM ерунда. Пробую писать PonyProg EEPROM не пишется, у всех дохлая 0 ячейка плюс еще другие ячейки.

Гарантия на перезапись EEPROM 10 000 циклов, на flash 1 000 циклов. EEPROM перезаписал пару раз, сдохла. Flash перезаписал сотни раз, работает как часы.

Кто сталкивался с проблемами EEPROM? Проблемы от старости? Нельзя работать работать с EEPROM при ненормальном напряжении питания?

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

Новый аккумулятор EVE серии PLM для GSM-трекеров, работающих в жёстких условиях (до -40°С)

Компания EVE выпустила новый аккумулятор серии PLM, сочетающий в себе высокую безопасность, длительный срок службы, широкий температурный диапазон и высокую токоотдачу даже при отрицательной температуре. 

Эти аккумуляторы поддерживают заряд при температуре от -40/-20°С (сниженным значением тока), безопасны (не воспламеняются и не взрываются) при механическом повреждении (протыкание и сдавливание), устойчивы к вибрации. Они могут применяться как для автотранспорта (трекеры, маячки, сигнализация), так и для промышленных устройств мониторинга, IoT-устройств. Подробнее параметры и результаты тестов новой серии PLM по ссылке.

Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161

А что именно с питанием делали? Слышал, что eeprom чувствительна к питанию, даже фьюзы bodlevel советуют включать, чтобы при слабом питании отключать МК. Ещё бывает, что по ошибке что- то пишут в eeprom, а если это делать в постоянном цикле, то при высокой тактовой частоте 10000 быстро натикает.

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

Литиевые батарейки и аккумуляторы от мирового лидера  EVE в Компэл

Компания Компэл, официальный дистрибьютор EVE Energy, бренда №1 по производству химических источников тока (ХИТ) в мире, предлагает продукцию EVE как со склада, так и под заказ. Компания EVE широко известна в странах Европы, Америки и Юго-Восточной Азии уже более 20 лет. Недавно EVE была объявлена поставщиком новых аккумуляторных элементов круглого формата для электрических моделей «нового класса» компании BMW.

Продукция EVE предназначена для самого широкого спектра применений – от бытового до промышленного. Подробнее>>

Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161

1. Доработал ядро исполнительной программы, теперь конфигурация

может находится как в EEPROM так и во Flash программ.

Это осуществляется дерективами компилятора.


//======== Место расположения файла конфигурации =========
//#define File_Config_EEPROM  //Файл конфигурации в EEPROM
#define File_Config_Flash   //Файл конфигурации во Flash
//========================================================

2. Добавил возможность компановки и компиляции программы в

программу Configurator. На выходе из Configuratora готовая прошивка

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

которые используются в проекте.

Плюсы:

-Теперь количество FBD блоков может быть достаточно большим

и не стоит беспокоится о размере flash памяти.

-Размер файла конфигурации ограничивается flash памятью

контроллера, можно строить достаточно большие проекты.

Получилось даже лучше чем я ожидал. (Видео добавлю в ближайшее время)

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

  • 2 недели спустя...

Добавил блок "Таймер".

#ifndef _FBD25_
#define _FBD25_ FBD25
#message define FBD25 (Timer) __FILE__
//Размер описания FDB блока
//1 байт- привязка к узлу управление
//1 байт- выход значение счетчика
//2 байта- начальное состояние счетчика
//Необходимый размер оперативной памяти
//1 байт- сигнал управления в предыдушем цикле
//2 байт- показания счетчика
//2 байт- показания счетчика выход
FBD25_init:	
ADIW Adr_EEPROM_L, 2						 ;пропускаем два байта конфигурации
rcall Read_cfg									 ;начальное состояние счетчика Lw
mov A, Addr_Data							 ;начальное состояние счетчика Lw
rcall Read_cfg									 ;начальное состояние счетчика Hg
mov B, Addr_Data							 ;начальное состояние счетчика Hg
st X+, Zero								 ;сигнал управления в предыдушем цикле
st X+, A									 ;показания счетчика
st X+, B									 ;показания счетчика
st X+, A									 ;показания счетчика выход
st X+, B									 ;показания счетчика выход
ret											 ;Окончание инициализации
FBD25_run:
//======== Читаем данные блока из файла конфигураций =========
rcall Read_cfg									 ;Вход управление
rcall Load_Uz1								 ;Вход управление
rcall Read_cfg									 ;Выход
mov A, Addr_Data							 ;Выход
ADIW Adr_EEPROM_L, 2						 ;пропускаем байта конфигурации
//========= Читаем данные блока из оперативной памяти =========
ld B, X+									 ;сигнал управления в предыдушем цикле
ld ZL, X+									 ;показания счетчика
ld ZH, X+									 ;показания счетчика
ld C, X+									 ;показания счетчика выход
ld D, X+									 ;показания счетчика выход
//================== Логика работы FBD блока ==================
ldi E, 0b00000001							 ;Маска
and Uz1L, E									 ;and
com B										 ;отслеживание фронта сигнала
and B, Uz1L									 ;отслеживание фронта сигнала
breq FBD25_no_sign
mov C, ZL									 ;копируем результат
mov D, ZH									 ;копируем результат
clr ZL										 ;новое измерение
clr ZH										 ;новое измерение
FBD25_no_sign:
adiw ZL, 1									 ;Считаем циклы
brcc FBD25_no_over
sbiw ZL, 1
mov C, ZL									 ;копируем результат
mov D, ZH									 ;копируем результат
FBD25_no_over:
SBIW Adr_RAM_L, 5							 ;Смещаем указатель на состояние
st X+, Uz1L								 ;сигнал управления в предыдушем цикле
st X+, ZL									 ;показания счетчика
st X+, ZH									 ;показания счетчика
st X+, C									 ;показания счетчика выход
st X+, D									 ;показания счетчика выход
//Результат
mov Addr_Data, A
mov Uz1L, C
mov Uz1H, D
rcall Save_Uz1								 ;Сохраняем значение узла по индексу A
ret								 ;Окончание исполнения логики блока
FBD25:
.db 4, 5						 //Размер FBD блока, необходимая оперативная память
.dw FBD25_run, FBD25_init
#else
#error redeclared FBD25 __FILE__
#endif

Видео работы блока:

Изменено пользователем Lihouzov
Ссылка на комментарий
Поделиться на другие сайты

Идея хорошая! Ставлю 5 баллов за тему. Только это не в пользу (реально) электронщику.

Что может быть лучше в радиоэлектронике, чем программирование микроконтроллеров ?

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

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

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

Чтобы упростить процесс разработки программ для микроконтроллеров я начал данный проект. Создание прошивки сводится к добавлению на лист необходимых блоков и соединения их в схему. На выходе получаем готовую прошивку для микроконтроллера.

На данный момент мой проект работает с микроконтроллерами AT90S2313, поддерживает около 10 FBD блоков. Я собрал несколько тестовых проектов, включая тот что представлен в начале статьи (управление ходовыми огнями).

В ближайшее время я добавлю поддержку ATtiny13 и соберу установочный пакет программы.

Кому интересен проект пишите, оставляйте оценки. Буду признателен.

Изменено пользователем Lihouzov
Ссылка на комментарий
Поделиться на другие сайты

Итог:

1. Написал ядро исполнительной программы.

2. Добавил описание FBD блоков

-Порты ввода-вывода;

-Логические блоки (и,или,не,исключающее и,больше);

-константа логическая, константа целочисленная, генератор логический;

-Таймер, фильтр;

-Несколько вариантов ШИМ.

3. Добавил возможность как создания собственных FBD блоков, так и добавление новых типов

контроллеров без перекомпиляции программы Configurator. Для этого необходим лишь текстовый

редактор.

4. В программе Configurator появилась возможность компиляции проекта. Configurator создает

файл конфигурации, копирует необходимые файлы, запускает компилятор. Результатом компиляции

является исполняемый двоичный файл.

5. Добавил несколько типов микроконтроллеров

-AT90S2313

-ATtiny13A

6. Собрал демонстрационный проект "управление дневными ходовыми огнями".

Перспективы:

1. Добавление новых типов микроконтроллеров, описание новых FBD блоков.

2. Добавить поддержку режима отладки. В режиме отладки Configurator подключается к

исполнительной программе, проверяет соответствие конфигурации в исполнительной программе и

текущем проекте, отображает данные входных выходных значений FBD блоков в реальном времени.

3. Добавить описание FBD блоков для связи со SCADA системами.

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

Lihouzov браво. Я давно искал что то подобное (хотя другие графические языки знаю...). Просмотрел все материалы что Вы выложили. Проблемы с нехваткой памяти. О которых тут упоминали, надуманны. В основном это интересно тем, кто выпускает массовыми тиражами. Они каждую копейку считают. Для разовых разработок важна эффективность и скорость. В этом смысле. Важно выбрать перспективную серию. Причем такую. Что бы была с определенным запасом в будущее. Что бы можно было поставить младшую модель и работать с ней. Как только возникла проблема нехватки памяти. Просто берем другой процессор, с большей памятью. И ставим его на эту печатку, и все совпадет нога в ногу. Можно сразу выбрать процессор с запасом к примеру ATmega128 (это только к примеру). Либо что то подобное. Честно скажу. Задумка Ваша понравилась, очень. Буду следить за темой, и по возможности участвовать. Может что на Атмел и сделаю. Хотя сейчас я сторонник ПИК. Конечно, я понимаю, что это типа войны религий, но ПИК мне нравиться все больше...

Есть с предыдущих проектов штук 80 готовых универсальных плат на тини 2313. Вот на них то и буду обкатывать Вашу программу. Интересно, что же получится.

ПС. Я думаю нужно составить список перспективных и востребованных FBD блоков. С тем, что бы Ваша программа быстрее шагнула в массы. К примеру, с моей точки зрения была бы интересна функция генератора сложных последовательностей. А это можно выразить как на языке временных диаграмм, так и логический состояний типа 1000011000011100000001111111. А можно дать на выбор: или так, или так.

К вопросу входных\выходных данных. Хорошо бы как у людей. Маски по сигналам. Те же циклы, бесконечные, либо указывать количество циклов.

Изменено пользователем Trasserlong
Ссылка на комментарий
Поделиться на другие сайты

...Проблемы с нехваткой памяти...

...важна эффективность и скорость...

...Можно сразу выбрать процессор с запасом к примеру ATmega128...

Откуда возьмется эффективность и скорость, если на мелких функциях уже вылезают проблемы с нехваткой памяти?

Конечно, чтобы помигать светиком, переключить пару выходов и сгенерировать ШИМ надо сразу брать 128-ю. :) Это ПИКовский подход?

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

Есть с предыдущих проектов штук 80 готовых универсальных плат на тини 2313. Вот на них то и буду обкатывать Вашу программу. Интересно, что же получится.

На ATtiny2313 не получиться, пока только AT90S2313 и ATtiny13A. Ели интересно то я добавлю ATtiny2313, дел на 20 минут. Пока все мои FBD блоки чисто программные, я не задействовал ни какие аппаратные узлы микроконтроллера, поэтому все FBD блоки легко перенесутся на другие AVR контроллеры.

Меня интересует:

1. Получилось ли установить Configurator, если нет то какие трудности?

2. Собирается ли проект на Configuratore? Появляется ли файл прошивки Configurator\upload\*.hex?

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

Откуда возьмется эффективность и скорость, если на мелких функциях уже вылезают проблемы с нехваткой памяти?

Для данной конфигурации файл прошивки занимает 998 байт.

%D0%94%D0%A5%D0%9E.jpg

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

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

Пример если реализация FBD блока "И" занимает 30 байт, а описании копии 4 байта то:

- если конфигурация содержит 1 блок "И" тогда прошивка увеличится на 30+4*1=34 байта.

- если конфигурация содержит 5 блоков "И" тогда прошивка увеличится на 30+4*5=50 байт.

Изменено пользователем Lihouzov
Ссылка на комментарий
Поделиться на другие сайты

На ATtiny2313 не получиться, пока только AT90S2313 и ATtiny13A. Ели интересно то я добавлю ATtiny2313, дел на 20 минут.

Меня интересует:

1. Получилось ли установить Configurator, если нет то какие трудности?

Если несложно. Сделайте обязательно. ATtiny2313 это ходовая микросхема. У многих есть в запасах, да и сделано на ней многое, а посему ее хорошо знают.

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

Откуда возьмется эффективность и скорость, если на мелких функциях уже вылезают проблемы с нехваткой памяти?

Конечно, чтобы помигать светиком, переключить пару выходов и сгенерировать ШИМ надо сразу брать 128-ю. :) Это ПИКовский подход?

Не думаю что будут проблемы с потерей эффективности и скорости. Это я полагаю будет зависеть от того, насколько правильно и грамотно будут написаны FBD блоки, от них все будет зависеть. Насчет подхода. Ну это мое мнение, есть конечно и другие. Но лично я считаю что с памятью проблемы надуманные на текущий момент. Цены на процессоры ниже грязи. Ну будет он стоит на 5-10 рублей дороже. Ну и что? И есть еще один момент. Не очевидный, но удобный. Гораздо легче накидать скелет программы, пусть он будет большой. Главное чтобы влез в процессор. А уже потом и оптимизировать проект и минимизировать объем кода. А сразу и на отлично писать сложно, нужен большой опыт. А так, это удобно. Написал программу, посмотрел что там так, а что не так. И уже потом ее шлифуешь. Очень удобно.

И еще. Цена на процессоры падает очень быстро, а вот изучение оных идет не так быстро как хотелось бы. Я обратил внимание. Что к тому моменту как я изучил тот или иной процессор, цена на него упала в разы... Так в моем понимании есть смыл сразу начинать работать с хорошим. Конечно, это только мое мнение, и только мой путь. Я с уважением отнесусь и к другой точке зрения. Но заниматься минимизацией ради минимизации из за нескольких рублей ну точно не буду.

Изменено пользователем Trasserlong
Ссылка на комментарий
Поделиться на другие сайты

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

Я бы обратил внимание на линейку ATMega48/88/168/V

Начинаем работать к примеру на ATMega48. Чего то там нам не хватило. На туже печатку, в те же ноги ставим 88 Мегу. Проект подрос? Нужно еще? Ставим 168 Мегу. И это все недорого. И стоит сразу начинать работать с TQFP корпусом. Да, он мелкий. Но это значит одно, и платка будет небольшая и удобная.

Между прочим на STM32 графического языка нет... Пока нет. А мелкосхема очень интересная. При сопоставимой - в минус конечно, цене. Всего навалом. Быстродействие большое, энергопотребление маленькое. Вот бы под нее такой язык Вы написали....

Изменено пользователем Trasserlong
Ссылка на комментарий
Поделиться на другие сайты

...все мои FBD блоки чисто программные, я не задействовал ни какие аппаратные узлы микроконтроллера, поэтому все FBD блоки легко перенесутся на другие AVR контроллеры.

Не это ли одна из потерь эффективности и скорости? Пока смахивает на универсальный тормоз.

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

Пока все мои FBD блоки чисто программные, я не задействовал ни какие аппаратные узлы микроконтроллера, поэтому все FBD блоки легко перенесутся на другие AVR контроллеры.

Ну будем надеяться что это только пока. Но даже в таком виде программа представляет интерес. Тем щепетильные нужно будет отнестись к перспективным моделям процессоров, под которые писать софт и задействовать аппаратные узлы. Сразу нужно закладывать фактор времени. Пока оно на пишется, пока массы об этом узнают, пока они это усвоят. А процессор уже устареет. Я через это прошел... И сразу в свои разработки закладываю передовые процессоры. Это удобно (немного дороже, совсем чуть чуть), всего хватает, и потом легче дорабатывать программу под изменившиеся требования заказчика. Не нужно с дрожью вспоминать. А хватит ли ресурсов, не придется ли по новой разводить и потом делать печатную плату. Что эквивалентно новому проекту, только не оплачивается.

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

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.
Примечание: Ваш пост будет проверен модератором, прежде чем станет видимым.

Гость
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Ответить в этой теме...

×   Вставлено с форматированием.   Восстановить форматирование

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Загрузка...
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу

×
×
  • Создать...