www.horizontautomatics.ru

Программирование, автоматизация.

Перспективы развития проекта

Обсуждение графической оболочки Configurator,а также всех вопросов касающихся её работы, установки и обновления.

Модератор: Евгений


Re: Перспективы развития проекта

Сообщение Евгений » 23 июн 2018, 08:35

Начинаю работу
https://youtu.be/rRsnzZ4l_9w
Аватара пользователя
Евгений
Администратор
 
Сообщения: 325
Зарегистрирован: 08 окт 2014, 11:36

Re: Перспективы развития проекта

Сообщение Прохожий » 23 июн 2018, 09:18

Андрей RADIOSOFT https://www.youtube.com/watch?v=fGmFW9dSIW4 в конце ролика прорекламировал Горизонт. Большое ему за это спасибо :)
"Attiny 85 из Atmega328P сделать совсем не сложно, достаточно просто откусить лишние ноги!"
Прохожий
 
Сообщения: 368
Зарегистрирован: 21 май 2016, 06:23

Re: Перспективы развития проекта

Сообщение Евгений » 26 июн 2018, 12:05

Спасибо Андрею, продолжаю работу:
https://youtu.be/vGXjgnlM8h4

Закинул обновление на сервер, меню test.
1. Кто может проверить обновляется или нет?
2. Проект протеуса открывается?
Аватара пользователя
Евгений
Администратор
 
Сообщения: 325
Зарегистрирован: 08 окт 2014, 11:36

Re: Перспективы развития проекта

Сообщение Прохожий » 26 июн 2018, 13:20

Тело программы обновилось нормально. Win7х64 :)
Нужно, что то делать с микрофоном. На видео довольно тяжело долго слушать :) А так как видео не последнее, то делать с этим что нибудь придётся :) За качеством гнаться не стоит, да и незачем. Главное обратные связи, а особенно возникающий в связи с этим эффект банки задавить :) Любой внешний дешманский микрофон компьютерный, гарнитура, должны справиться :)
"Attiny 85 из Atmega328P сделать совсем не сложно, достаточно просто откусить лишние ноги!"
Прохожий
 
Сообщения: 368
Зарегистрирован: 21 май 2016, 06:23

Re: Перспективы развития проекта

Сообщение Евгений » 26 июн 2018, 15:44

Необходимо настроить, надо разбираться.

Делаю оптимизацию кода, на примере конфигурации:
Лист 1.jpg
Лист 1.jpg (28.13 КБ) Просмотров: 273


Имеется 7 блоков, причем кода PinD4 и PinD7, а также PinB6 и PinB7- идентичны.
В результате сборки программа вложит 5 исполнительных подпрограмм:

Код: Выделить всё
FBD0_run (для PinD4 и PinD7)
FBD1_run (для RS триггер)
FBD2_run (для NOT)
FBD3_run (для AND)
FBD4_run (для PinB6 и PinB7)


Подпрограммы завершаются командой ret. Подпрограммы используют указатели X на оперативную память и Y- на флеш память.

В цикле программы необходимо вызвать семь функций:
Код: Выделить всё
rcall  FBD0_run    (для PinD4)
rcall  FBD0_run    (для PinD7)
rcall  FBD1_run    (для RS)
rcall  FBD2_run    (для NOT)
rcall  FBD3_run    (для AND)
rcall  FBD4_run    (для PinB6)
rcall  FBD4_run    (для PinB7)


При этом, у каждого блока имеется свои данные оперативной и флэш памяти, эти адресазаведомо известны.
Для флеш:
Код: Выделить всё
FBD0_flash: db 00, 00, ..  (данные PinD4)
FBD1_flash: db 00, 00, ..  (данные PinD7)
FBD2_flash: db 00, 00, ..  (данные RS)
FBD3_flash: db 00, 00, ..  (данные NOT)
FBD4_flash: db 00, 00, ..  (данные AND)
FBD5_flash: db 00, 00, ..  (данные PinB6)
FBD6_flash: db 00, 00, ..  (данные PinB7)

Для оперативной:
Код: Выделить всё
FBD0_ram   (адрес на данные в оперативной памяти для PinD4)
FBD1_ram   (адрес на данные в оперативной памяти для  PinD7)
FBD2_ram   (адрес на данные в оперативной памяти для  RS)
FBD3_ram   (адрес на данные в оперативной памяти для  NOT)
FBD4_ram   (адрес на данные в оперативной памяти для  AND)
FBD5_ram   (адрес на данные в оперативной памяти для  PinB6)
FBD6_ram   (адрес на данные в оперативной памяти для  PinB7)


По факту не все блоки используют оперативную память, в приведенном примере только RS триггер использует 1 байт.


С учетом предварительной установки адреса, получаю:
Код: Выделить всё
ldi xl, low(FBD0_ram)
ldi xh, high(FBD0_ram) 
ldi yl, low(FBD0_flash*2)
ldi yh, high(FBD0_flash*2)
rcall  FBD0_run    (для PinD4)   
ldi xl, low(FBD1_ram)
ldi xh, high(FBD1_ram) 
ldi yl, low(FBD1_flash*2)
ldi yh, high(FBD1_flash*2)
rcall  FBD0_run    (для PinD7)

...

В итоге расходую по 5 комнд (10 байт памяти) для исполнения одного блока.

Как сделать оптимальней?
Если решу задачу, то получу повышение производительности с одновременным уменьшением кода.
Аватара пользователя
Евгений
Администратор
 
Сообщения: 325
Зарегистрирован: 08 окт 2014, 11:36

Re: Перспективы развития проекта

Сообщение Прохожий » 26 июн 2018, 16:28

Жаль, что я в программировании никакой. Но скажу как пользователь горизонта. Если ввести в блоки опцию инвертирования как входов так и выходов? Намного ли это увеличит расходование ram блоков? Там всего одна команда, а ставим где не попадя эти блоки в проект :) Если такое ввести в блоки "затратно" - то просто сделать копии блоков сразу с инвертированиями. Да, блоков в библиотеке станет больше - но за счёт этого выиграем хоть какие то крохи.
"Attiny 85 из Atmega328P сделать совсем не сложно, достаточно просто откусить лишние ноги!"
Прохожий
 
Сообщения: 368
Зарегистрирован: 21 май 2016, 06:23

Re: Перспективы развития проекта

Сообщение Евгений » 27 июн 2018, 16:19

Можно, например когда указываем инвертировать вывод, то фактически компилятор в неявной форме добавит инверсию.
Для пользователя получится более наглядный алгоритм. Идея хорошая. возьму на заметку.
Аватара пользователя
Евгений
Администратор
 
Сообщения: 325
Зарегистрирован: 08 окт 2014, 11:36

Re: Перспективы развития проекта

Сообщение Прохожий » 27 июн 2018, 17:03

А вообще в перспективе, если на Си горизонт будет, блоки ведь писать намного проще станет?
"Attiny 85 из Atmega328P сделать совсем не сложно, достаточно просто откусить лишние ноги!"
Прохожий
 
Сообщения: 368
Зарегистрирован: 21 май 2016, 06:23

Re: Перспективы развития проекта

Сообщение Евгений » 29 июн 2018, 16:32

Прохожий писал(а):А вообще в перспективе, если на Си горизонт будет, блоки ведь писать намного проще станет?

Да, язык СИ более распространен.
Аватара пользователя
Евгений
Администратор
 
Сообщения: 325
Зарегистрирован: 08 окт 2014, 11:36

Пред.След.

Вернуться в Horizont Configurator

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1

cron