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

Обсуждаем контроллеры компании Atmel.
Lihouzov
Встал на лапы
Сообщения: 83
Зарегистрирован: Вс май 20, 2012 16:21:11

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

Сообщение Lihouzov »

Сделал более наглядный алгоритм:
Реклама
Lihouzov
Встал на лапы
Сообщения: 83
Зарегистрирован: Вс май 20, 2012 16:21:11

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

Сообщение Lihouzov »

Добавил новый блок:

Реклама
Lihouzov
Встал на лапы
Сообщения: 83
Зарегистрирован: Вс май 20, 2012 16:21:11

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

Сообщение Lihouzov »

Добавил возможность использования миниатюр, при оформлении FBD блоков:
http://horizontautomatics.ru/Configurat ... id=addpict
Lihouzov
Встал на лапы
Сообщения: 83
Зарегистрирован: Вс май 20, 2012 16:21:11

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

Сообщение Lihouzov »

Добавил FBD блок "Вхождение в диапазон"
Реклама
Эиком - электронные компоненты и радиодетали
Lihouzov
Встал на лапы
Сообщения: 83
Зарегистрирован: Вс май 20, 2012 16:21:11

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

Сообщение Lihouzov »

Упрощение конфигурации для проекта "Светофор".
Изображение


Размер прошивки 1094 байта.
Реклама
Lihouzov
Встал на лапы
Сообщения: 83
Зарегистрирован: Вс май 20, 2012 16:21:11

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

Сообщение Lihouzov »

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

Код: Выделить всё

; ***** INTERRUPT VECTORS ************************************************
.equ	INT0addr	= 0x0001	; External Interrupt 0
.equ	PCI0addr	= 0x0002	; External Interrupt Request 0
.equ	OVF0addr	= 0x0003	; Timer/Counter0 Overflow
.equ	ERDYaddr	= 0x0004	; EEPROM Ready
.equ	ACIaddr	= 0x0005	; Analog Comparator
.equ	OC0Aaddr	= 0x0006	; Timer/Counter Compare Match A
.equ	OC0Baddr	= 0x0007	; Timer/Counter Compare Match B
.equ	WDTaddr	= 0x0008	; Watchdog Time-out
.equ	ADCCaddr	= 0x0009	; ADC Conversion Complete

.equ	INT_VECTORS_SIZE	= 10	; size in words
а для ATmega328p, 26 - векторов по 4 байта под вектор:

Код: Выделить всё

; ***** INTERRUPT VECTORS ************************************************
.equ	INT0addr	= 0x0002	; External Interrupt Request 0
.equ	INT1addr	= 0x0004	; External Interrupt Request 1
.equ	PCI0addr	= 0x0006	; Pin Change Interrupt Request 0
.equ	PCI1addr	= 0x0008	; Pin Change Interrupt Request 0
.equ	PCI2addr	= 0x000a	; Pin Change Interrupt Request 1
.equ	WDTaddr	= 0x000c	; Watchdog Time-out Interrupt
.equ	OC2Aaddr	= 0x000e	; Timer/Counter2 Compare Match A
.equ	OC2Baddr	= 0x0010	; Timer/Counter2 Compare Match A
.equ	OVF2addr	= 0x0012	; Timer/Counter2 Overflow
.equ	ICP1addr	= 0x0014	; Timer/Counter1 Capture Event
.equ	OC1Aaddr	= 0x0016	; Timer/Counter1 Compare Match A
.equ	OC1Baddr	= 0x0018	; Timer/Counter1 Compare Match B
.equ	OVF1addr	= 0x001a	; Timer/Counter1 Overflow
.equ	OC0Aaddr	= 0x001c	; TimerCounter0 Compare Match A
.equ	OC0Baddr	= 0x001e	; TimerCounter0 Compare Match B
.equ	OVF0addr	= 0x0020	; Timer/Couner0 Overflow
.equ	SPIaddr	= 0x0022	; SPI Serial Transfer Complete
.equ	URXCaddr	= 0x0024	; USART Rx Complete
.equ	UDREaddr	= 0x0026	; USART, Data Register Empty
.equ	UTXCaddr	= 0x0028	; USART Tx Complete
.equ	ADCCaddr	= 0x002a	; ADC Conversion Complete
.equ	ERDYaddr	= 0x002c	; EEPROM Ready
.equ	ACIaddr	= 0x002e	; Analog Comparator
.equ	TWIaddr	= 0x0030	; Two-wire Serial Interface
.equ	SPMRaddr	= 0x0032	; Store Program Memory Read

.equ	INT_VECTORS_SIZE	= 52	; size in words
Вероятно в файле описания устройства ATmega328p неточность, адреса должны идти 0x0000, 0x0004, 0x0008, 0x000С, ...

Таким образом обработчик векторов для ATtiny13a должен иметь вид:

Код: Выделить всё

rjmp
rjmp       (rjmp - занимает 2 байта)
reti         (заглушка, занимает 2 байта)
...
а для ATmega328p:

Код: Выделить всё

jmp
jmp       (jmp - занимает 4 байта)
reti         (заглушка, занимает 2 байта)
nop        (пустая команда, для дополнения 4 байт)
...
Реклама
Lihouzov
Встал на лапы
Сообщения: 83
Зарегистрирован: Вс май 20, 2012 16:21:11

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

Сообщение Lihouzov »

Как, по файлу описания устройства, определить размер отводимый под вектор прерывания?
Аватара пользователя
Engineer_Keen
Друг Кота
Сообщения: 3872
Зарегистрирован: Пт янв 29, 2010 10:27:40
Откуда: Москва

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

Сообщение Engineer_Keen »

Код: Выделить всё

; ***** DATA MEMORY DECLARATIONS *****************************************
.equ	FLASHEND	= 0x0fff	; Note: Word address
Если FLASHEND больше 0х0fff (4кслов=8кбайт), то разрядности RJMP не хватит чтобы попасть в любое место флеша, поэтому в таких контроллерах размеры векторов прерывания по два слова, чтобы вместить команду JMP.
Адреса векторов в файле описания - в словах, поэтому для тини: 0000,0001,0002,... а для мег больше 8к: 0000,0002,0004...
Неправильно собранная из неисправных деталей схема нуждается в отладке и сразу не работает... (С)
Lihouzov
Встал на лапы
Сообщения: 83
Зарегистрирован: Вс май 20, 2012 16:21:11

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

Сообщение Lihouzov »

Engineer_Keen писал(а):

Код: Выделить всё

; ***** DATA MEMORY DECLARATIONS *****************************************
.equ	FLASHEND	= 0x0fff	; Note: Word address
Если FLASHEND больше 0х0fff (4кслов=8кбайт), то разрядности RJMP не хватит чтобы попасть в любое место флеша, поэтому в таких контроллерах размеры векторов прерывания по два слова, чтобы вместить команду JMP.
Адреса векторов в файле описания - в словах, поэтому для тини: 0000,0001,0002,... а для мег больше 8к: 0000,0002,0004...
Спасибо. Внес необходимые доработки в программу.
Lihouzov
Встал на лапы
Сообщения: 83
Зарегистрирован: Вс май 20, 2012 16:21:11

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

Сообщение Lihouzov »

Добавил возможность, в программе Configurator, динамически
определять индексацию FBD блоков. Доработана библиотека "EvAVRbuilder.dll"
и "EvKernelConfig.dll". Благодаря такому подходу, генерируемая прошивка
уменьшилась на несколько десятков байт, а также упростился процесс создания
новых FBD блоков.
http://horizontautomatics.ru/Configurat ... d=compiler
Lihouzov
Встал на лапы
Сообщения: 83
Зарегистрирован: Вс май 20, 2012 16:21:11

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

Сообщение Lihouzov »

Добавил блоки ШИМ для ATtiny13a, необходимо тестирование.
Lihouzov
Встал на лапы
Сообщения: 83
Зарегистрирован: Вс май 20, 2012 16:21:11

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

Сообщение Lihouzov »

Реализовал исполнительную программу в торговой платформе Metatrader:
https://youtu.be/JXdMS0SqR_8
Lihouzov
Встал на лапы
Сообщения: 83
Зарегистрирован: Вс май 20, 2012 16:21:11

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

Сообщение Lihouzov »

Нужен ассемблерный код, для деления и умножения целых чисел. Кто ибо писал данный код?
Аватара пользователя
ARV
Ум, честь и совесть. И скромность.
Сообщения: 18673
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск
Контактная информация:

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

Сообщение ARV »

Lihouzov писал(а):Нужен ассемблерный код, для деления и умножения целых чисел. Кто ибо писал данный код?
про деление не помню, а умножение по-моему есть в одном из апноутов самой фирмы Атмел - не пробовали искать?
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Аватара пользователя
НАПАЛМ
Это не хвост, это антенна
Сообщения: 1314
Зарегистрирован: Пт ноя 27, 2009 19:47:13
Откуда: Казань

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

Сообщение НАПАЛМ »

Умножение по заданию в инсте писал, правда только для натуральных чисел.
Вложения
Умножение.txt
(1.97 КБ) 237 скачиваний
Аватара пользователя
Jack_A
Друг Кота
Сообщения: 6321
Зарегистрирован: Вт апр 24, 2007 07:45:40
Откуда: Minsk

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

Сообщение Jack_A »

Lihouzov писал(а):Нужен ассемблерный код, для деления и умножения целых чисел. Кто ибо писал данный код?
http://forum.vingrad.ru/forum/topic-72209.html
Аватара пользователя
xkp
Опытный кот
Сообщения: 781
Зарегистрирован: Ср ноя 18, 2009 12:50:31
Откуда: ковров
Контактная информация:

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

Сообщение xkp »

есть у меня подпрограммки деления 2/1 (значения указаны в байтах, 2 байта делятся на 1 байт); 3/1; 3/2; 4/1; 4/2 и умножения 1*1; 2*1; 2*2; 3*1. При делении остается байт с остатком. Сейчас нет возможности выложить их. В выходные постараюсь выложить если раньше ни кто не поможет.
R5VCH
Хотелки:
СпойлерАналоговый осциллограф С1-112, С1-118, другие
не/рабочие модули от комплекса ОДА-102
всё что касается AVR, arduino, raspberry
всё что касается КВ-УКВ-радиосвязи, mashtastic
Lihouzov
Встал на лапы
Сообщения: 83
Зарегистрирован: Вс май 20, 2012 16:21:11

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

Сообщение Lihouzov »

Спасибо нашел.
avr200.asm
(15.36 КБ) 340 скачиваний
Аватара пользователя
xkp
Опытный кот
Сообщения: 781
Зарегистрирован: Ср ноя 18, 2009 12:50:31
Откуда: ковров
Контактная информация:

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

Сообщение xkp »

думаю в моих понятнее. хотя как говорится автору своего творения всегда понятнее свое творение, нежели чье то чужое. В целом принцип тот же. Только меньше голематьи всякой.
Вложения
div_mul.rar
(1.28 КБ) 191 скачивание
R5VCH
Хотелки:
СпойлерАналоговый осциллограф С1-112, С1-118, другие
не/рабочие модули от комплекса ОДА-102
всё что касается AVR, arduino, raspberry
всё что касается КВ-УКВ-радиосвязи, mashtastic
Lihouzov
Встал на лапы
Сообщения: 83
Зарегистрирован: Вс май 20, 2012 16:21:11

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

Сообщение Lihouzov »

Спасибо за поддержку.
Добавил блоки целочисленного деления и умножения.
Ответить

Вернуться в «AVR»