Обсуждаем контроллеры компании Atmel.
Ответить

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

Вс ноя 30, 2014 13:53:38

Добрый всем день! Создаю на ассемблере "кирпичики" будущего конструктора.
Тестирование работы конструктора в Proteus:



На данный момент идей много, ищу заинтересованных людей для совместной работы.
Установочный пакет:
http://horizontautomatics.ru/Configurat ... ?id=setup1
Последний раз редактировалось Lihouzov Вс ноя 30, 2014 16:39:10, всего редактировалось 1 раз.

Re: Ассемблер (ASM) для AVR в вопросах и ответах

Вс ноя 30, 2014 14:46:00

Хорошая игрушка для тех, кто не хочет париться с программированием и нужно создать быстро и разово что-то простенькое.
Кстати, а почему модуль, подключенный к АЦП перед множителем, назвается IntToString ? Это же - перевод в строку, а не в вещественное число. И каким образом потом эта строка умножилась на коэффициент ?

Re: Ассемблер (ASM) для AVR в вопросах и ответах

Вс ноя 30, 2014 16:10:59

Что то не как не разберусь как этот конфигуратор зарегистрировать

Re: Ассемблер (ASM) для AVR в вопросах и ответах

Вс ноя 30, 2014 16:21:18

IntToSingl - преобразование целого числа в вещественное. Single - вещественное число одинарной точности (4 байта) Можно и не регистрироваться, просто обнови Configurator и HR_AVR.
Исходный ассемблерный код любого блока доступен через меню вызванным над блоком.
Последний раз редактировалось Lihouzov Вс ноя 30, 2014 16:25:18, всего редактировалось 1 раз.

Re: Ассемблер (ASM) для AVR в вопросах и ответах

Вс ноя 30, 2014 16:23:46

А, там Single. Прошу прощения, ошибся :oops:

Re: Ассемблер (ASM) для AVR в вопросах и ответах

Вс ноя 30, 2014 16:26:20

вроде разобрался с программой маленько. В принципе меня заинтересовала эта идея.
Сделал все по вашему проекту но не хочет компилировать фаил прошивки
СпойлерИзображение
Изображение

ну и при открытии проекта выдает
СпойлерИзображение

если использовать вывод на индикатор через LCD_word то все работает. Очевидно проблема в IntToSingl
Последний раз редактировалось xkp Вс ноя 30, 2014 20:47:43, всего редактировалось 1 раз.

Re: Реализация Графического Языка Программирования

Вс ноя 30, 2014 17:41:18

Прикольно. Просто, удобно... Критиковать не буду, т.к. сам такое не смогу сделать. ) Однозначно плюс.

Но! Не много ли для ассемблера 600 Байт, чтобы помигать одним светодиодом???? С учетом того, что у меня АТтини13 с 1 кБайтом флеша... А я хочу туда еще много чего напихать.... У меня в нее программка перехвата ИК пульта с NЕC-протоколом (урезанным) и управление Н-мостом мотора заняла в районе 300-400 Байт на ассемблере.

Re: Реализация Графического Языка Программирования

Пн дек 01, 2014 06:13:12

СКАЗОЧНИК писал(а):Не много ли для ассемблера 600 Байт, чтобы помигать одним светодиодом????

В эти 600 байт входит ядро программы.

Re: Ассемблер (ASM) для AVR в вопросах и ответах

Пн дек 01, 2014 06:18:52

xkp писал(а): Очевидно проблема в IntToSingl

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

Re: Реализация Графического Языка Программирования

Пн дек 01, 2014 06:23:27

Хочу добавить блоки:
1. для работы с 7-ми сегментными индикаторами.
2. таймеры реального времени.

Писать код надо на ассемблере.
У кого есть желание присоединиться к работе?
Последний раз редактировалось Lihouzov Пн дек 01, 2014 14:47:24, всего редактировалось 1 раз.

Re: Реализация Графического Языка Программирования

Пн дек 01, 2014 06:26:58

Для примера привожу исходный код RS триггера:
Код:
#ifndef _FBD15_
#define _FBD15_ FBD15
#message define FBD15 (RS trigger)__FILE__

//Размер описания FDB блока 4 байта
//1 байт- вход S
//1 байт- вход R
//1 байт- выход
//1 байт- начальное состояние
//Оперативная память 1 байт
//1 байт состояние триггера

FBD15_init:     
 ADIW  YL, 3                        //пропускаем первые три байта конфигурации
 rcall Read_cfg                     //Читаем начальное состояние
 st    X+, Addr_Data                //Сохраняем начальное состояние
 ret                                //Окончание инициализации блока

FBD15_run:
//======== Читаем данные блока =========
 rcall Read_cfg_Load_Uz1           //вход S
 rcall Read_cfg_Load_Uz2           //вход R
 ld    A,  X                       //текущее состояние триггера
//============= Логика работы FBD блока ==================
 
 and  Uz1L, One                    //and
 sbrc UZ1L, 0                      //Проверка 1 на S
 mov  A, One                       //Устанавливаем тригер
 and  Uz2L, One                    //and
 sbrc UZ2L, 0                      //Проверка 1 на R
 mov  A, Zero                      //Сбрасываем тригер
 mov  Uz1L, A                      //Копируем текущее состояние
//============= Сохраняем результат  ==================
 st X+, A
 rcall Read_cfg_Save_Uz1           //Сохраняем результат
 ADIW  YL, 1                       //пропускаем байт конфигурации
ret;

FBD15:
 .db 4, 1                          //Размер FBD блока, необходимая оперативная память
 .dw FBD15_run, FBD15_init
#else
 #error redeclared FBD15 __FILE__
#endif

Re: Реализация Графического Языка Программирования

Пн дек 01, 2014 07:10:17

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

идею использовать ассемблер поддерживаю процентов на 40 - на остальные 60 я сторонник применения в подобной системе Си.

Re: Реализация Графического Языка Программирования

Пн дек 01, 2014 11:24:42

Lihouzov писал(а):ядро программы.

Убедили. :)
А ядро - это не РТОС?

И еще понравилось, что можно код любого блока посмотреть. )))

Re: Реализация Графического Языка Программирования

Пн дек 01, 2014 16:29:48

СКАЗОЧНИК писал(а):И еще понравилось, что можно код любого блока посмотреть. )))

Более того, если изменить код блока, то и измениться работа блока! :)
СКАЗОЧНИК писал(а):А ядро - это не РТОС?

Что такое РТОС?
Последний раз редактировалось Lihouzov Пн дек 01, 2014 16:38:55, всего редактировалось 1 раз.

Re: Реализация Графического Языка Программирования

Пн дек 01, 2014 16:35:54

Могу взяться за код написания подпрограммы для 7-ми сегментников.
1. Сколько сегментов?
2. Выходы: общий/сегменты GND/Vcc, GND/GND, Vcc/GND Vcc/Vcc делать с переключением в ПП или разные ПП писать под них?
3. Какой вид ввода информации? Отдельные для каждого сегмента числа или сразу несколько знаков?

Re: Реализация Графического Языка Программирования

Пн дек 01, 2014 16:44:48

Lihouzov писал(а):РТОС?

Правильнее сказать RTOS

Операционная система реального времени. Вот Википедия. :)
https://ru.wikipedia.org/wiki/%CE%EF%E5%F0%E0%F6%E8%EE%ED%ED%E0%FF_%F1%E8%F1%F2%E5%EC%E0_%F0%E5%E0%EB%FC%ED%EE%E3%EE_%E2%F0%E5%EC%E5%ED%E8

Re: Реализация Графического Языка Программирования

Пн дек 01, 2014 16:48:59

Отлично.
1. давай попробуем для 4 сегментов.
2. блок разные, количество блоков никто не ограничивает.
3. Сразу на несколько знаков. По принципу с LCD. Есть блок который выводит участок памяти на индикаторы
в нашем случае 4 байта, а есть блоки которые в этот участок пишут данные.

То есть будет блок который отображает данные и множество блоков которые пишут данные.

Re: Реализация Графического Языка Программирования

Пн дек 01, 2014 17:10:45

4 байта? Я правда маленько не понимаю в выражениях "целые", "целочисленные" и тд. То есть каждый байт данных соответствует своему индикатору? Ну это облегчает задачу, можно еще и буквенные символы туда запихать, ну разумеется те, что можно написать на 7 сегментах.
Будет выглядеть примерно так? 4 разряда * 7 сегментов + 1 точка
Изображение
И еще вопрос в блок что верхний на моем рисунке данные в каком виде поступают? В регистрах, в памяти? В каких регистрах? В какой ячейке или под каким именем памяти?

Re: Реализация Графического Языка Программирования

Пн дек 01, 2014 17:13:55

Сделал заготовку блока. Обнови "Параметры->Обновления->Блоки в разработке"

Re: Реализация Графического Языка Программирования

Пн дек 01, 2014 17:16:51

xkp писал(а):4 байта? Я правда маленько не понимаю в выражениях "целые", "целочисленные" и тд. То есть каждый байт данных соответствует своему индикатору? Ну это облегчает задачу, можно еще и буквенные символы туда запихать, ну разумеется те, что можно написать на 7 сегментах.

4 байта - да.
выражениях "целые", "целочисленные" и тд - тип соединительных выводов блока.
То есть каждый байт данных соответствует своему индикатору -да
Ответить