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

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

Чт янв 29, 2015 16:41:34

Сделал более наглядный алгоритм:

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

Пт фев 06, 2015 16:45:49

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

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

Пт фев 13, 2015 10:06:09

Добавил возможность использования миниатюр, при оформлении FBD блоков:
http://horizontautomatics.ru/Configurator/index.php?id=addpict

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

Вс фев 15, 2015 12:31:26

Добавил FBD блок "Вхождение в диапазон"

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

Вс фев 15, 2015 13:42:38

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


Размер прошивки 1094 байта.

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

Ср апр 08, 2015 16:32:59

Столкнулся с проблемой, на нахождение проблемы потратил половина дня. Проблема оказалась в том что под вектор прерывания отводится либо 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 байт)
...

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

Ср апр 08, 2015 16:35:14

Как, по файлу описания устройства, определить размер отводимый под вектор прерывания?

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

Ср апр 08, 2015 16:59:43

Код:
; ***** DATA MEMORY DECLARATIONS *****************************************
.equ   FLASHEND   = 0x0fff   ; Note: Word address

Если FLASHEND больше 0х0fff (4кслов=8кбайт), то разрядности RJMP не хватит чтобы попасть в любое место флеша, поэтому в таких контроллерах размеры векторов прерывания по два слова, чтобы вместить команду JMP.
Адреса векторов в файле описания - в словах, поэтому для тини: 0000,0001,0002,... а для мег больше 8к: 0000,0002,0004...

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

Пт апр 10, 2015 02:53:37

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...

Спасибо. Внес необходимые доработки в программу.

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

Пт май 08, 2015 08:44:20

Добавил возможность, в программе Configurator, динамически
определять индексацию FBD блоков. Доработана библиотека "EvAVRbuilder.dll"
и "EvKernelConfig.dll". Благодаря такому подходу, генерируемая прошивка
уменьшилась на несколько десятков байт, а также упростился процесс создания
новых FBD блоков.
http://horizontautomatics.ru/Configurator/index.php?id=compiler

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

Пт май 22, 2015 02:42:17

Добавил блоки ШИМ для ATtiny13a, необходимо тестирование.

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

Пт май 22, 2015 16:04:16

Реализовал исполнительную программу в торговой платформе Metatrader:
https://youtu.be/JXdMS0SqR_8

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

Пн май 25, 2015 16:49:58

Нужен ассемблерный код, для деления и умножения целых чисел. Кто ибо писал данный код?

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

Пн май 25, 2015 17:41:22

Lihouzov писал(а):Нужен ассемблерный код, для деления и умножения целых чисел. Кто ибо писал данный код?

про деление не помню, а умножение по-моему есть в одном из апноутов самой фирмы Атмел - не пробовали искать?

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

Пн май 25, 2015 17:44:47

Умножение по заданию в инсте писал, правда только для натуральных чисел.
Вложения
Умножение.txt
(1.97 KiB) Скачиваний: 201

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

Вт май 26, 2015 21:48:26

Lihouzov писал(а):Нужен ассемблерный код, для деления и умножения целых чисел. Кто ибо писал данный код?


http://forum.vingrad.ru/forum/topic-72209.html

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

Вт май 26, 2015 22:09:08

есть у меня подпрограммки деления 2/1 (значения указаны в байтах, 2 байта делятся на 1 байт); 3/1; 3/2; 4/1; 4/2 и умножения 1*1; 2*1; 2*2; 3*1. При делении остается байт с остатком. Сейчас нет возможности выложить их. В выходные постараюсь выложить если раньше ни кто не поможет.

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

Пн июн 01, 2015 03:16:53

Спасибо нашел.
avr200.asm
(15.36 KiB) Скачиваний: 318

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

Пн июн 01, 2015 18:54:46

думаю в моих понятнее. хотя как говорится автору своего творения всегда понятнее свое творение, нежели чье то чужое. В целом принцип тот же. Только меньше голематьи всякой.
Вложения
div_mul.rar
(1.28 KiB) Скачиваний: 170

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

Ср июн 03, 2015 08:44:08

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