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

Re: Плейер световых эффектов - помогите стать лучше

Сб фев 01, 2020 15:40:08

Dimon, чаще всего первый и горит, не то фиолетовым не то розовым. Ресет не помогает. После сброса питания какое то время работает нормально. Другой светящийся пиксель видел только один раз.

Re: Плейер световых эффектов - помогите стать лучше

Сб фев 01, 2020 18:04:42

dgrett, выше сообщением я написал как проверить, проверяйте.

Re: Плейер световых эффектов - помогите стать лучше

Вт фев 11, 2020 15:19:06

А как можно смешать цвета(RGB или по индексу)? Какова тут математика? Что то не получается.

Re: Плейер световых эффектов - помогите стать лучше

Вт фев 11, 2020 17:09:40

Смешать практически никак нельзя.

Re: Плейер световых эффектов - помогите стать лучше

Вт фев 11, 2020 17:30:01

Лять... Грустно :(

Re: Плейер световых эффектов - помогите стать лучше

Вт фев 11, 2020 18:56:42

Вы можете смешивать "чистые" цвета, например, синий с красным... Но смешать жёлтый с сиреневыми и получить... (кстати, что в этом случае вы хотели бы получить?) что-то отличное от белого, не выйдет. Во всяком случае в рамках математики скриптов.
Я пробовал...

Re: Плейер световых эффектов - помогите стать лучше

Вт фев 11, 2020 19:07:01

Я понимаю, что синий с красным даст магенту.
Однако, как это вычислить в скрипте? Я, конечно же, понимаю, что абсолютно точно рассчитать не получится. Я и не надеюсь на это, так как этого и не нужно. Однако приблизительно адекватный цвет получить хотелось бы. Ну, в смысле смешивая красный с зелёным не получить синий или циан.
P. S. И в каких координатах лучше считать? RGB или HSV?

Re: Плейер световых эффектов - помогите стать лучше

Вт фев 11, 2020 19:58:08

Смешивая "чистые" цвета (чистые - это состоящие только из одной компоненты) вы никогда не получите что-то странное! И делать это можно просто "вставляя" нужную компоненту в цвет.
Красный - FF0000
Синий - 0000FF
Складываем: FF00FF (сиреневый).

Re: Плейер световых эффектов - помогите стать лучше

Пн фев 17, 2020 18:07:11

Данная матрица - очередной повод поупражняться в изучении СТМ32. Там и памяти хватает, и DMA есть для выплевывания данных в адреску. Кстати, через SPI. Я еще не знаю, может повторю идею вышеупомянутой лампы Алекса Гайвера....

На STM32 лучше выплевать через таймер + DMA, просто шимишь, а DMA периодически пишет в CCRx.
Глянул я ваш СТМ32, проект "обрубленный" собрался, не стал голову ломать, чисто голая командная оболочка:
Спойлер
Код:
'Invoking: Cross ARM GNU Print Size'
arm-none-eabi-size --format=berkeley "stm32f103_prim.elf"
   text      data       bss       dec       hex   filename
  24924      2244       364     27532      6b8c   stm32f103_prim.elf
'Finished building: stm32f103_prim.siz'
цифру в 24924 видите? Всего 4 функции.
Изображение

Re: Плейер световых эффектов - помогите стать лучше

Пн фев 17, 2020 19:22:45

ничего не понял

Re: Плейер световых эффектов - помогите стать лучше

Пн фев 17, 2020 19:43:17

ничего не понял

Переход на STM32 откладывается, потому что судя по всему Dimon456 выбрал в качестве стандартной либы такую, которая сразу несколько десятков KB для printf даже без поддержки float отжирает :)

Re: Плейер световых эффектов - помогите стать лучше

Пн фев 17, 2020 19:58:37

Не знал, что бы напечатать Hello world потребуется 20к программного кода и 1к оперативки, похлеще ардуино будет.
СпойлерБез printf
Код:
'Invoking: Cross ARM GNU Print Size'
arm-none-eabi-size --format=berkeley "stm32f103_prim.elf"
   text      data       bss       dec       hex   filename
   2328      1108       304      3740       e9c   stm32f103_prim.elf
'Finished building: stm32f103_prim.siz'
Ладно, где-то был самодельный printf, что-то около 2к кода.

Re: Плейер световых эффектов - помогите стать лучше

Пн фев 17, 2020 20:02:53

Ладно, где-то был самодельный printf, что-то около 2к кода.

Поищи в настройках Newlib-nano.

Re: Плейер световых эффектов - помогите стать лучше

Пн фев 17, 2020 21:18:05

Reflector писал(а):Поищи в настройках Newlib-nano.
Кое как нашел
СпойлерБез включенной
Код:
'Invoking: Cross ARM GNU Print Size'
arm-none-eabi-size --format=berkeley "stm32f103_prim.elf"
   text      data       bss       dec       hex   filename
  24924      2244       364     27532      6b8c   stm32f103_prim.elf
'Finished building: stm32f103_prim.siz'
С включенной
Код:
'Invoking: Cross ARM GNU Print Size'
arm-none-eabi-size --format=berkeley "stm32f103_prim.elf"
   text      data       bss       dec       hex   filename
   6376       140       320      6836      1ab4   stm32f103_prim.elf
'Finished building: stm32f103_prim.siz'
Все равно многовато, на AVR этот код занимает 3к.

Re: Плейер световых эффектов - помогите стать лучше

Пт фев 21, 2020 21:37:04

Собрал проект полностью под такой контроллер
СпойлерИзображение
с такими параметрами
#define BUF_SZ 512
#define PIXEL_CNT 254
получается
Код:
Program Size:
      text      data       bss       dec       hex   filename
     15676       668      1964     18308      4784   proekt_digit_stm32f030x.elf
еще не знаю влезет или нет, компилятор раз не ругается - значит должно влезьте. В железе не проверял.
Без понятия подключиться к этому МК отладчик или нет, а то может придется отлаживать на STM32F103C8T6.
Использовал Xprintf от сюда, что еще примерно 1,5-2кБайта флеша дало. Пока без DMA, и АЦП не использовал.
Можно что нибудь еще сократить, к примеру что нибудь по удалять из файлика script_cmd.c
В протеусе наигрался с STM32F103T6 (что было в протеусе).

Re: Плейер световых эффектов - помогите стать лучше

Пт фев 21, 2020 21:43:56

Собрал проект полностью под такой контроллер

Там реально 32К флеша и есть TIM2, просто создаешь проект для F031F6.

Re: Плейер световых эффектов - помогите стать лучше

Пт фев 21, 2020 22:11:17

Dimon456 писал(а):Можно что нибудь еще сократить, к примеру что нибудь по удалять из файлика script_cmd.c
лучше выкинуть все, что касается printf-ов, т.е. отладочные функции консольного управения - все равно толку от них никакого в плане эксплуатации. если уж говорить о портировании проекта, то надо сохранять совместимость, а значит, из script_cmd ничего выкидывать не стоит.

любопытно было бы понять, насколько эффективнее STM32 в этом проекте. я тестировал быстродействие так: есть функция синхронизации, которая привязывает исполнение к интервалам по 10 мс. если в ней дрыгать портом, то при помощи осциллографа можно реально видеть, сколько времени тратится на исполнение скрипта, а сколько на ожидание (синхронизацию). AVR на 16 МГц без обращения к SD-карте в среднем нагружался скриптом на 2-4 мс, при том что 160 светодиодов еще отжирают никак не меньше 5 мс, то есть оставался запас в 1-2 мс. интересно, насколько больше свободного времени останется при использовании STM32?

Re: Плейер световых эффектов - помогите стать лучше

Пт фев 21, 2020 22:55:37

AVR на 16 МГц без обращения к SD-карте в среднем нагружался скриптом на 2-4 мс, при том что 160 светодиодов еще отжирают никак не меньше 5 мс, то есть оставался запас в 1-2 мс. интересно, насколько больше свободного времени останется при использовании STM32?

Сколько времени светодиоды отжирают, столько и будет, потому что пока DMA передает старые данные будут успевать подготовиться новые. На каждые 8 бит нужно 9.6 us, эти мелкие мк гонятся до 96 MHz, таблица для 8 бит во флеше будет занимать 8*256 = 2КБ, натравливаешь на нее DMA и почти 1000 тактов делать нечего... Ну или заполняешь массив в RAM любого размера... Кстати пару месяцев назад брал мелкие F070F6P6 по $0.5, там 6КБ RAM и USB, правда с USB можно только от 48 MHz затактировать, или брать F042, но они в 2 раза дороже были.

Re: Плейер световых эффектов - помогите стать лучше

Пт фев 21, 2020 23:04:23

Я не о теории спрашивал, а о практике, конкретно о работе Dimon456.

Re: Плейер световых эффектов - помогите стать лучше

Сб фев 22, 2020 07:18:33

Reflector писал(а):Там реально 32К флеша
Какой сюрпрайз !?
STM Flash Loader запрашивает идентификатор чипа, и чем же вы программируете этот сюрпрайз?, как обходите ограничение?
Reflector писал(а): и есть TIM2, просто создаешь проект для F031F6
А не проще подкорректировать файлик ld? Не ну если из-за TIM2.
Спойлер
Код:
   rom (rx)  : ORIGIN = 0x08000000, LENGTH = 0x00004000
   rom (rx)  : ORIGIN = 0x08000000, LENGTH = 0x00008000
Ответить