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

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


Lihouzov

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

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

...

Можно ли использовать команды чтения и записи оперативной памяти для доступа к портам ввода вывода?

Очевидно, имелась в виду ссылка на исходный код графической оболочки, а не блоков. Народ хотел посмотреть именно на него.

Команды чтения и записи использовать можно, а в некоторых случаях (когда адреса выходят за пределы 0x3F - в новых моделях) это единственный способ. Но надо учитывать, что адресация в in/out и ld/lds/st/sts разная, во втором случае на 0x20 больше. Потому что адресация памяти начинается с нулевого адреса, соответствующему r0, а in/out - только для переферии, то есть с 32-го байта. Еще надо помнить, что обращение через память медленнее и больше по объему, чем через специализированные команды.

Ругался на отсутствие форматирования исходного кода (включая отсутствие осмысленных комментариев и наличие неубранного после конфигуратора мусора) не менее 15 раз.

Часть моих наработок.

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

Продолжаю творчество:...

Идея нормальная и даже красивая при реализации нескольких строк, а далее начнётся ступор по чисто биологической причине. Уже писал, что желательно исходить из описания выполняемой логической функции. У Вас же наоборот - из рисунка приходится "восстанавливать" логику работы кусочка программы.

TRACE MODE 6 SOFTLOGIK - программирование микроконтроллеров - очень похоже на то, что Вы разрабатываете.

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

SOFTLOGIC. Программирование контроллеров.pdf

ДОГОВОР НТП 3.rar

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

  • 3 месяца спустя...

В программе появилась возможность использовать переходы, позволяющие объединять листы.

Переходы так же улучшают читаемость схем проекта.

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

  • 1 месяц спустя...

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

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

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

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

  • 1 месяц спустя...

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

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

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

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

Не могу решить проблему, прошу помощи специалистов.

Микроконтроллер ATtiny85

Пытаюсь изменять состояние OC1B (pin B4) по таймеру 1.

В avrstudio в симуляторе вижу что в регистре PINB бит 4 меняет свое состояние по таймеру, а в регистре PORTB бит 4 не изменяет своего состояния. DDRB бит 4 записал 1.

в инициализации:

rcall Read_cfg							 ;Читаем TCCR1
UOUT TCCR1, Addr_Data		 ;Настраиваем делитель (0x8B)
UIN A,	 DDRB						 ;Настраиваем вывод PB4 вывод данных
ori A,	 1<<DDB4					 ;Настраиваем вывод PB4 вывод данных
UOUT DDRB, A							 ;Настраиваем вывод PB4 вывод данных

В основном цикле:

rcall Read_cfg_Load_Uz1		 ;вход sp
COM Uz1L
UOUT OCR1B, Uz1L
UOUT OCR1C, Uz1L
rcall Read_cfg_Load_Uz1		 ;вход en
clr A
sbrc Uz1L, 0
ori A,	 1<<COM1B0

ldi C, LOW(~((1<<COM1B0)+(1<<COM1B1)))	 ;Маска выделения битов
UIN B,	 GTCCR						 ;Настраиваем привязку к PB4
and B,	 C							 ;Настраиваем привязку к PB4
or	 B,	 A							 ;Настраиваем привязку к PB4
UOUT GTCCR, B							 ;Настраиваем привязку к PB4

В итоге не вижу изменения состояния PortB4 (OC1B) от таймера.

Что я не настроил?

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

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

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

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

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

UIN A, DDRB ;Настраиваем вывод PB4 вывод данных

ori A, 1<<DDB4 ;Настраиваем вывод PB4 вывод данных

UOUT DDRB, A

sbi DDRB,4 ?
В avrstudio в симуляторе вижу что в регистре PINB бит 4 меняет свое состояние по таймеру, а в регистре PORTB бит 4 не изменяет своего состояния.
А в реальной схеме не проверяли?

Ругался на отсутствие форматирования исходного кода (включая отсутствие осмысленных комментариев и наличие неубранного после конфигуратора мусора) не менее 15 раз.

Часть моих наработок.

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

  • 1 год спустя...

Всем привет,

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

Очень приятно слышать поддержку и это подталкивают к дальнейшему развитию проекта.

 

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

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

 

Хочу найти 2-3 заинтересованных человека со знанием архитектуры и ассемблера, спустя пару месяцев получим результат, благодарностью будет бесценный опыт и благодарность пользователей.

Кто желает участвовать, пишите. 

 

 

 

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

Здравствуйте уважаемые коллеги , убедительно прошу всех кто в программировании на Ты , помогите пожалуйста Евгению по совершенствованию кода . Прошу лично от себя и не только , таких как я тысячи  . Его программа помогла мне и таким как я , ( кто с программированием на ВЫ ) . Заранее всем спасибо .

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

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

Я не раздаю удочки. Я продаю рыбу.

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

Пора уже на 32-битники переводить. Например, STM32... Цены не будет.

А всем, кто с программированием на Вы, - пора бы познакомиться ближе и перейти на ТЫ. А то так и будете ЛЕГО-программы составлять. Взрослейте.

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

10 часов назад, Геннадий сказал:

Пора уже на 32-битники переводить. Например, STM32... Цены не будет.

А всем, кто с программированием на Вы, - пора бы познакомиться ближе и перейти на ТЫ. А то так и будете ЛЕГО-программы составлять. Взрослейте.

Если будет 32 битник , тогда ЛЕГО допустимо да - ДЕД ?

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

В 19.06.2018 в 08:41, солар сказал:

Возможно, их заинтересует эта разработка.

Нет! Не заинтересует!

Можно сделать все! Но чем больше можно, тем больше нельзя!

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

Попытка не пытка.

А на голом энтузиазме дело далеко не уйдёт. Мало того - чревато закончиться алкоголизмом энтузиаста.

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

Я не раздаю удочки. Я продаю рыбу.

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

4 часа назад, солар сказал:

А на голом энтузиазме дело далеко не уйдёт.........

Посмотрите на досуге Great Cow BASIC ,проект практически одного человека и только на энтузиазме .

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

В 6/21/2018 в 15:18, atc сказал:

проект практически одного человека и только на энтузиазме

На сколько я помню, энтузиазм этого человека был не совсем голый: он сильно-сильно стимулировался контрактом с IBM...

Если забанить всех, кто набрался смелости думать независимо, здорово будет на форуме - как на кладбище: тишина, птички поют...

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

 

Делаю оптимизацию кода, получил следующее, на примере конфигурации:

Лист 1.jpg

Имеетя 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 байт памяти) для исполнения одного блока.

 

Как сделать оптимальней?

Лист 1.jpg

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

15 часов назад, IMXO сказал:

шо за бред

Это не бред, это такая реклама - умные слова, цветные картинки,  ...

У кого нибудь в глазах зарябит, и все, считай попался!

Можно сделать все! Но чем больше можно, тем больше нельзя!

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

В 26.06.2018 в 23:54, IMXO сказал:

шо за бред на картинко?

 

9 часов назад, ruhi сказал:

Это не бред, это такая реклама - умные слова, цветные картинки,  ...

У кого нибудь в глазах зарябит, и все, считай попался!

 

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

Еще на начальном пути, посмотрите начало ветки, говорилось что невозможно.. как впихнуть в несколько килобайт.

 

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

Пытаюсь сделать еще оптимальней, обращаюсь, как я думал к экспертам, а оказывается они только и демагогией и могут заниматься! 

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

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

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

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

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

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

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

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

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

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

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

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