Форум РадиоКот https://radiokot.ru/forum/ |
|
Плейер световых эффектов - помогите стать лучше https://radiokot.ru/forum/viewtopic.php?f=57&t=159702 |
Страница 35 из 44 |
Автор: | Serzh2000 [ Сб фев 22, 2020 09:04:57 ] |
Заголовок сообщения: | Re: Плейер световых эффектов - помогите стать лучше |
Цитата: Собрал проект полностью под такой контроллер без карты памяти? или сней |
Автор: | Reflector [ Сб фев 22, 2020 10:01:10 ] |
Заголовок сообщения: | Re: Плейер световых эффектов - помогите стать лучше |
STM Flash Loader запрашивает идентификатор чипа, и чем же вы программируете этот сюрпрайз? J-link/ST-link, Flash Loader последний раз запускал давно, но даже он вроде писал, что там 32КБ флеша. Цитата: А не проще подкорректировать файлик ld? Флеша или RAM больше у многих мк, помимо этого там может быть разная недокументированная периферия. Кроме того если IDE при вызове программатора укажет ему, что шьем F030F4, то он может принципиально не захотеть видеть весь имеющийся флеш. |
Автор: | Dimon456 [ Сб фев 22, 2020 10:36:41 ] |
Заголовок сообщения: | Re: Плейер световых эффектов - помогите стать лучше |
Да, не в моем возрасте такое паять Serzh2000 писал(а): без карты памяти? или сней А что не так?Без карты памяти тут уже есть где-то. |
Автор: | Dimon456 [ Сб фев 22, 2020 22:24:40 ] |
Заголовок сообщения: | Re: Плейер световых эффектов - помогите стать лучше |
Reflector писал(а): J-link/ST-link, Flash Loader последний раз запускал давно, но даже он вроде писал, что там 32КБ флеша. ST-LINK 16Кб пишет. Не пытался больше 16 запихать, думаю не разрешит.В общем к 32F030 отладчик мне удалось подключить, но работает на простеньком коде, 2-3 строчки, там галочку надо ставить на Debug in RAM а она у него увы маленькая. Ладно. Пересобрал проект под STM32F100RBT6B, отладчик там работает. Пока с UART и прерыванием таймера разобрался. |
Автор: | Reflector [ Сб фев 22, 2020 22:42:49 ] |
Заголовок сообщения: | Re: Плейер световых эффектов - помогите стать лучше |
В общем к 32F030 отладчик мне удалось подключить, но работает на простеньком коде, 2-3 строчки, там галочку надо ставить на Debug in RAM а она у него увы маленькая. 32КБ флеша, 10К перезаписей, мк стоит 30 центов, зачем на нем отладку в RAM включать? |
Автор: | Dimon456 [ Пн фев 24, 2020 21:45:26 ] |
Заголовок сообщения: | Re: Плейер световых эффектов - помогите стать лучше |
ARV, я уже заморгал СпойлерПротеус от железа сильно отличается, в протеусе работало в железе нет. Кроме всего вывод NSS должен быть хардварным, то есть выбор карты делать другим выводом. Если я этот вывод NSS прижимаю к 0 и пытаюсь записать в регистр передачи, у меня SPI переводится из режима master в режим slave и sck ждет тактовых импульсов. Где-то так. |
Автор: | Reflector [ Пн фев 24, 2020 22:54:09 ] |
Заголовок сообщения: | Re: Плейер световых эффектов - помогите стать лучше |
NSS может быть каким угодно, если SPI становится слейвом, значит выбран режим мульти-мастера, нужно выставить CR2_SSOE. Или выбираем софтовый режим установкой CR1_SSM вместе с CR1_SSI и тогда в качестве NSS может быть любая нога. И еще не очевидный момент: на F1/F4 и еще ряде серий запись в DR отправит байт, но у F0/F3 и т.д. SPI более новый, с FIFO и упаковкой, там нужно обращаться к *(volatile uint8_t*)&SPIx->DR, иначе отправятся сразу два байта. |
Автор: | ARV [ Вт фев 25, 2020 08:03:14 ] |
Заголовок сообщения: | Re: Плейер световых эффектов - помогите стать лучше |
Dimon456 писал(а): я уже заморгал ну что я могу сказать: рад, что проект постепенно начинает жить своей собственной жизнью. возможно, не так уж он и плох.желаю успехов! |
Автор: | Dimon456 [ Ср фев 26, 2020 15:08:12 ] |
Заголовок сообщения: | Re: Плейер световых эффектов - помогите стать лучше |
Reflector, вот это я помучил SPI. СпойлерВот код инициализацииКод: SPI1->CR1 = SPI_Mode_Master|SPI_DataSize_8b|SPI_Direction_2Lines_FullDuplex| \ Он же читает флешку и выводит на ленту.SPI_FirstBit_MSB|SPI_NSS_Soft|SPI_BaudRatePrescaler_4|SPI_CPOL_High|SPI_CPHA_2Edge; SPI1->CR1 |= CR1_SPE_Set; NSS пока сидит на другой ноге, позже проверю влияет ли этот вывод на что-то. Можно еще поиграться с режимами Код: SPI_CPOL_Low|SPI_CPHA_2Edge SPI_CPOL_Low|SPI_CPHA_1Edge SPI_CPOL_High|SPI_CPHA_2Edge SPI_CPOL_High|SPI_CPHA_1Edge Вот стандартный код операций записи и чтения Код: #define SPI1_DR_8bit (*(volatile uint8_t*)((uint32_t)&(SPI1->DR))) Но в нем ошибка, я весь гугла перетрес в поисках решения, но так и не нашел.void SPI_WriteByte(uint8_t data) { while (!(SPI1->SR & SPI_SR_TXE)); SPI1_DR_8bit = data; } uint8_t SPI_ReadByte(void) { while (!(SPI1->SR & SPI_SR_TXE)); SPI1_DR_8bit = 0xff; while (!(SPI1->SR & SPI_SR_RXNE)); return (SPI1_DR_8bit); } Но я заставил его работать. Напишите правильное решение, попрошу модератора вам медаль выдать. |
Автор: | Reflector [ Ср фев 26, 2020 16:08:53 ] |
Заголовок сообщения: | Re: Плейер световых эффектов - помогите стать лучше |
Я уже писал, что если выбран софтовый NSS, то нужно установить и CR1_SSI, иначе SPI может стать слейвом. Режим для работы с SD у меня был Mode0, т.е. CPOL и CHPA оба сброшены. SPI_Write/Read в принципе правильные, вопрос в том как их использовать... Если вперемешку, то конечно нормально работать не будет, т.к. невычитанные данные забьют FIFO и будет выставлен флаг переполнения. Поскольку с SD в основном нужно читать, то проще всегда использовать вариант с проверкой TXE и RXNE, как сейчас в SPI_Read(). Если же нужно читать после чистой записи, то придется ждать окончания передачи и вычитывать все данные самому. Например, так(для F0): Код: void flushRxFifo() // также сбрасывает OVF { while (SPIx->SR & (SPI_SR_FTLVL | SPI_SR_BSY)) {} while (SPIx->SR & SPI_SR_FRLVL) SPIx->DR; } Ну и, как уже говорилось, диоды лучше повесить на ШИМ, для начала можно даже без DMA. |
Автор: | Dimon456 [ Ср фев 26, 2020 21:31:15 ] |
Заголовок сообщения: | Re: Плейер световых эффектов - помогите стать лучше |
Ну я с F0 пока не занимался, у меня отладчик на STM32F100RBT6B. Подключил вывод NSS - работает и на нем, проблем не вижу. По поводу режимов CPOL и CHPA Код: SPI_CPOL_Low|SPI_CPHA_2Edge лента работает флешка не читается SPI_CPOL_Low|SPI_CPHA_1Edge лента не работает флешка читается SPI_CPOL_High|SPI_CPHA_2Edge + лента работает флешка читается SPI_CPOL_High|SPI_CPHA_1Edge лента не работает флешка не читается Добавлено after 2 hours 47 minutes 45 seconds: ARV писал(а): AVR на 16 МГц без обращения к SD-карте в среднем нагружался скриптом на 2-4 мс, при том что 160 светодиодов еще отжирают никак не меньше 5 мс, то есть оставался запас в 1-2 мс. интересно, насколько больше свободного времени останется при использовании STM32? Не понял как измерить?СпойлерЧастота контроллера 24МГцЧастота APB1ENR 24МГц Код: static void ws2812_show(void){ Частота на входе таймера TIM2 24МГц/239=100418Гцuint16_t b; TIM2->CR1 = 0; //остановка таймера TIM2->CNT = 0; //сброс счетчика TIM2->PSC = 239; //предделитель TIM2->CR1 |= TIM_CR1_CEN; //перезапуск таймера leave_sd_mode(); ATOMIC_BLOCK_RESTORATE { for(uint8_t i=0; i < cfg.tp; i++){ b = pixels[i].bright+1; // для чипа WS2812 порядок цветовых составляющих должен быть таким: send_byte((pixels[i].g * b)>>8); // сначала ЗЕЛЕНЫЙ send_byte((pixels[i].r * b)>>8); // затем КРАСНЫЙ send_byte((pixels[i].b * b)>>8); // в конце - СИНИЙ } } enter_sd_mode(); TIM2->CR1 = 0; //остановка таймера xprintf(("count=%d\n"), TIM2->CNT); } Один тик таймера (1/100418)*1000 = 0,01мс Так вот показывает так Код: При чтении с флешки Я что-то ни так посчитал или как?Кол-во светиков count мс 160 756 7,56 254 1200 12 Команда WT=01 Кол-во светиков count мс 160 76 0,76 254 120 1,2 |
Автор: | ARV [ Ср фев 26, 2020 23:55:14 ] |
Заголовок сообщения: | Re: Плейер световых эффектов - помогите стать лучше |
Я не очень понял, что вы написали, но вопрос понял, отвечаю. В моём коде есть функция синхронизации, которая тупо ждёт, когда пройдёт 10 мс. Если на входе этой функции установить порт, а на выходе сбросить, осциллографом можно видеть этакое подобие стогерцового ШИМа: чем шире импульс, тем больше свободного времени у плейера. Наличие большого джиттера или уменьшение частоты ниже 100 Гц будет свидетельствовать о том, что интерпретация команд вместе с обновлением светиков длится более отведенных на это 10 мс. Понятно объяснил? |
Автор: | ARV [ Чт фев 27, 2020 10:41:55 ] |
Заголовок сообщения: | Re: Плейер световых эффектов - помогите стать лучше |
ну, если ОЗУ достаточно, вам остается только закэшировать массив PIXEL, чтобы выводить его копию через DMA одновременно с интерпретацией скрипта и подготовки новой копии, тогда 200 светиков реально обработать. дальнейшее увеличение потребует отступления от принятого FPS в 100 обновлений в секунду - это явно избыточное быстродействие для большинства скриптов. но не для всех, увы... |
Автор: | Reflector [ Чт фев 27, 2020 12:10:58 ] |
Заголовок сообщения: | Re: Плейер световых эффектов - помогите стать лучше |
тогда 200 светиков реально обработать. дальнейшее увеличение потребует отступления от принятого FPS в 100 обновлений в секунду 30 us на светодиод, если все делать правильно, то 100 фпс можно получить для 330 диодов, но самих лент может быть много. |
Автор: | ARV [ Чт фев 27, 2020 13:36:39 ] |
Заголовок сообщения: | Re: Плейер световых эффектов - помогите стать лучше |
Reflector писал(а): то 100 фпс можно получить для 330 диодов в концепции ленточного эффекта это совершенно бесполезно, т.к. для линейных эффектов такое количество многократно избыточно. для матричных - возможно, но, имхо, уже не сильно разумно по трудоемкости составления соответствующих скриптов. да и концептуально нынешняя реализация интерпретатора скриптов не позволит работать с более чем 254 светодиодами.
|
Автор: | Dimon456 [ Чт фев 27, 2020 18:08:40 ] |
Заголовок сообщения: | Re: Плейер световых эффектов - помогите стать лучше |
Вот разгон процессора, для сравнения, еще картинки |
Автор: | Reflector [ Чт фев 27, 2020 18:35:14 ] |
Заголовок сообщения: | Re: Плейер световых эффектов - помогите стать лучше |
F100 все равно ставить нет смысла, а популярные F103 уже до 128 MHz гонятся. Кстати, шимить еще имеет смысл и потому, что можно получить достаточно точные тайминги для любых частот. В AVR версии такого не получишь, сейчас там вообще почему-то 2 бита под высокий уровень выделено, а это 0.25 us вместо требуемых 0.4 us. |
Автор: | Dimon456 [ Пт фев 28, 2020 09:15:56 ] |
Заголовок сообщения: | Re: Плейер световых эффектов - помогите стать лучше |
Reflector писал(а): 30 us на светодиод Не пойму как вы 30us получили? 1,235us на 1 бит, 1,235 * 32 = 39,52us и теперь это все умножим на 254 светика 39,52 * 254 = 10038 и + сигнал сброса 50us = 10088us В 10ms уже не влазит. |
Автор: | Reflector [ Пт фев 28, 2020 10:43:31 ] |
Заголовок сообщения: | Re: Плейер световых эффектов - помогите стать лучше |
1,235us на 1 бит, 1,235 * 32 = 39,52us и теперь это все умножим на 254 светика 39,52 * 254 = 10038 и + сигнал сброса 50us = 10088us 1.25 * 24 = 30. |
Страница 35 из 44 | Часовой пояс: UTC + 3 часа |
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |