К1921ВГ015 общее

32-разрядные микроконтроллеры разработки АО "НИИЭТ"

Модераторы: ea, dav, bkolbov, Alis, pip, _sva_

dezna
Сообщения: 49
Зарегистрирован: 20 дек 2024, 08:23
Предприятие: avtomatica

К1921ВГ015 общее

Сообщение dezna »

столкнулся с такой же проблемой как описана в errata_K1921VG015_Rev4_lqfp100 п.5 но уже для целых чисел uint32.
ошибочный результат деления на константу, если она находится в памяти программ.
пришлось так же сначала создать и загрузить переменную, а уж потом делить на нее...
возможно вся проблема кроется в невозможности пересылки не выровненных 32битных чисел.
результат деления на 1 давал переполнение. видимо делил на ноль.
соответственно, вероятнее с FPU такая же проблема.
возможно лучше допилить ядро чтоб мк нормально пересылал и брал числа со смещением хоть в 1 байт? если это конечно возможно...
это бы решило множество проблем. мне из-за этого приходится не выровненные данные собирать в промежуточную переменную и потом с ней работать. гемор и только...
dezna
Сообщения: 49
Зарегистрирован: 20 дек 2024, 08:23
Предприятие: avtomatica

Re: К1921ВГ015 общее

Сообщение dezna »

QSPI.
не описан режим работы SPI.
2 абзаца один с описанием использования выводов (даже не описанием, а рисунком) и один на 3 пункта с описанием 3х регистров, можно в расчет не брать!
пришлось эмпирически вычислять влияние на работу регистров TDS и FWM...
а так же что скорость можно переключать только при выключенном устройстве...
не даны допустимые пределы установки делителя частоты CDIV (ни критериев подбора), хотя на картинке функционального устройства значится 1/CDIV что будет если 0 записать? у меня при 50МГц PLL получилось 25МГц.
не описано взаимодействие с DMA, хотя значится канал на прием (а где передача?)...
ea
Администратор
Сообщения: 57
Зарегистрирован: 10 окт 2014, 09:08

Re: К1921ВГ015 общее

Сообщение ea »

Пришлите пример проекта, не корректно выполняющий целочисленное деление.
ea
Администратор
Сообщения: 57
Зарегистрирован: 10 окт 2014, 09:08

Re: К1921ВГ015 общее

Сообщение ea »

dezna писал(а): 14 фев 2025, 10:35 QSPI.
не описан режим работы SPI.
2 абзаца один с описанием использования выводов (даже не описанием, а рисунком) и один на 3 пункта с описанием 3х регистров, можно в расчет не брать!
пришлось эмпирически вычислять влияние на работу регистров TDS и FWM...
а так же что скорость можно переключать только при выключенном устройстве...
не даны допустимые пределы установки делителя частоты CDIV (ни критериев подбора), хотя на картинке функционального устройства значится 1/CDIV что будет если 0 записать? у меня при 50МГц PLL получилось 25МГц.
не описано взаимодействие с DMA, хотя значится канал на прием (а где передача?)...
Информацию по режиму SPI блока QSPI дополним в руководстве пользователя и обновим в репозитории на GitFlic.

У блока QSPI не предусмотрены запросы к DMA - в руководстве пользователя также скорректируем.
ea
Администратор
Сообщения: 57
Зарегистрирован: 10 окт 2014, 09:08

Re: К1921ВГ015 общее

Сообщение ea »

dezna писал(а): 14 фев 2025, 10:35 QSPI.
не описан режим работы SPI.
2 абзаца один с описанием использования выводов (даже не описанием, а рисунком) и один на 3 пункта с описанием 3х регистров, можно в расчет не брать!
пришлось эмпирически вычислять влияние на работу регистров TDS и FWM...
а так же что скорость можно переключать только при выключенном устройстве...
не даны допустимые пределы установки делителя частоты CDIV (ни критериев подбора), хотя на картинке функционального устройства значится 1/CDIV что будет если 0 записать? у меня при 50МГц PLL получилось 25МГц.
не описано взаимодействие с DMA, хотя значится канал на прием (а где передача?)...
Информацию по режиму SPI блока QSPI дополнили в руководстве пользователя и обновили в репозитории на GitFlic.
У блока QSPI не предусмотрены запросы к DMA - в руководстве пользователя также скорректировали.
dezna
Сообщения: 49
Зарегистрирован: 20 дек 2024, 08:23
Предприятие: avtomatica

Re: К1921ВГ015 общее

Сообщение dezna »

ea писал(а): 25 фев 2025, 12:59 Информацию по режиму SPI блока QSPI дополнили в руководстве пользователя и обновили в репозитории на GitFlic.
У блока QSPI не предусмотрены запросы к DMA - в руководстве пользователя также скорректировали.
спасибо, видел, уже скачал
dezna
Сообщения: 49
Зарегистрирован: 20 дек 2024, 08:23
Предприятие: avtomatica

Re: К1921ВГ015 общее

Сообщение dezna »

все так же в РП остались не исправленными таблица 8.1 дублирование команд последний лист таблицы и отсутствуют команды и описание работы с float.
может конечно и не задумывалось, типа иди читай ядро, я не знаю.
но уж раз начали описывать, то доделайте.
dezna
Сообщения: 49
Зарегистрирован: 20 дек 2024, 08:23
Предприятие: avtomatica

Re: К1921ВГ015 общее

Сообщение dezna »

столкнулся с такой проблемой:
при напряжении нуля на входе мк порядка 0,25В начинает сбоить генерация прерывания по фронту.
может сгенерировать по обоим фронтам.
подаю периодический сигнал на вход (синяя осциллограмма). прерывание настроено по переднему фронту.
в прерывании перекидываем тестовую ногу мк (желтая осциллограмма).
если генерить периодический сигнал с того же мк, то сбоев не наблюдается.
что-то не нашел по уровням входных/выходных сигналов ничего в РП. может проглядел где... только токи потребления.
причем пробовал фильтрацию входов - не помогло совсем. как будто не работает.
уровень приподнят, потому что сигнал заходит с оптрона (плюс - подтяжка, коммутирует ноль). на видео как раз пытался увеличивать ток через него больше чем в 2 раза.
так же отключал оптрон и пропускал сигнал с мк через его цепи на вход, ноль приподнимался и начинались такие же глюки.
можете сымитировать делителем на +U.
пробовал и с ДМА вместо прерывания - эффект тот же, значит не работает вход.
Вложения
main.c
образец кода.
(4.03 КБ) 107 скачиваний
20250402_131210.mpg
на видео видно как при изменении уровня нуля, уменьшается количество сбоев.
формат видео mp4. переименован, т.к. форум не дает его загрузить.
(22.48 МБ) 7 скачиваний
напряжение нуля порядка 250мВ. сбои происходят достаточно часто.
напряжение нуля порядка 250мВ. сбои происходят достаточно часто.
20250402_131031.jpg (2.86 МБ) 1435 просмотров
dezna
Сообщения: 49
Зарегистрирован: 20 дек 2024, 08:23
Предприятие: avtomatica

Re: К1921ВГ015 общее

Сообщение dezna »

dezna писал(а): 02 апр 2025, 13:53 что-то не нашел по уровням входных/выходных сигналов ничего в РП. может проглядел где... только токи потребления.
да, действительно проглядел.
Таблица 2.5, п.5
не понятно что значит предельно допустимый режим 0.8В для Uil...
что будет если 1В подать?
нет описания рабочих уровней Uil и Uih в таблице 2.4
dezna
Сообщения: 49
Зарегистрирован: 20 дек 2024, 08:23
Предприятие: avtomatica

Re: К1921ВГ015 общее

Сообщение dezna »

dezna писал(а): 02 апр 2025, 13:53 столкнулся с такой проблемой:
при напряжении нуля на входе мк порядка 0,25В начинает сбоить генерация прерывания по фронту.
может сгенерировать по обоим фронтам.
пробовал сменить вход и порт на TMR32_CCIB
если по прерыванию от порта или по прерыванию от захвата таймера, то эффект такой же как в изначальном посте. но работает.
ДМА настроить с CCIB не удалось. не работает.

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


uint32_t Buf[16+1];

#define   DMA_CH_CFG_INIT_Const         ( \
        (DMA_CHANNEL_CFG_DST_INC_Word << DMA_CHANNEL_CFG_DST_INC_Pos) | \
        (DMA_CHANNEL_CFG_SRC_INC_None << DMA_CHANNEL_CFG_SRC_INC_Pos) | \
        (DMA_CHANNEL_CFG_DST_SIZE_Word << DMA_CHANNEL_CFG_DST_SIZE_Pos) | \
        (DMA_CHANNEL_CFG_SRC_SIZE_Word << DMA_CHANNEL_CFG_SRC_SIZE_Pos) | \
        (1<<DMA_CHANNEL_CFG_DST_PROT_PRIV_Pos) | (1<<DMA_CHANNEL_CFG_DST_PROT_BUFF_Pos) | (1<<DMA_CHANNEL_CFG_DST_PROT_CACHE_Pos) | \
        (1<<DMA_CHANNEL_CFG_SRC_PROT_PRIV_Pos) | (1<<DMA_CHANNEL_CFG_SRC_PROT_BUFF_Pos) | (1<<DMA_CHANNEL_CFG_SRC_PROT_CACHE_Pos) | \
        (0<<DMA_CHANNEL_CFG_R_POWER_Pos) | \
        (16 << DMA_CHANNEL_CFG_N_MINUS_1_Pos) | \
        (1<<DMA_CHANNEL_CFG_CYCLE_CTRL_Pos) \
        )
        
        //настройки
        RCU->CGCFGAHB_bit.GPIOBEN = 1;
        RCU->RSTDISAHB_bit.GPIOBEN = 1;
        RCU->CGCFGAPB_bit.TMR32EN = 1;
        RCU->RSTDISAPB_bit.TMR32EN = 1;
        
        GPIOB->OUTENCLR = 1<<15;
        GPIOB->ALTFUNCNUM |= (1<<(2*15));
        GPIOB->ALTFUNCSET = (1<<15);
        
        TMR32->CTRL = 0;
        TMR32->CAPCOM[0].CTRL = TMR_CAPCOM_CTRL_CAP_Msk | (1<<TMR_CAPCOM_CTRL_CCISEL_Pos) | (1<<TMR_CAPCOM_CTRL_CAPMODE_Pos);
        TMR32->CTRL = (TMR_CTRL_MODE_Multiple<<TMR_CTRL_MODE_Pos);
        
        TMR32->DMA_IM |= TMR_DMA_IM_CAP0_Msk;
        //connfigure DMA
        DMA_CONFIGDATA.PRM_DATA.CH[DMA_CH_TMR32].SRC_DATA_END_PTR = (uint32_t)&TMR32->CAPCOM[0].VAL;
        DMA_CONFIGDATA.PRM_DATA.CH[DMA_CH_TMR32].DST_DATA_END_PTR = (uint32_t)&Buf[16];
        DMA_CONFIGDATA.PRM_DATA.CH[DMA_CH_TMR32].CHANNEL_CFG = DMA_CH_CFG_INIT_Const;
        DMA->REQMASKCLR = 1<<DMA_CH_TMR32;
        DMA->PRIALTCLR = 1<<DMA_CH_TMR32;   //en prim struct
        DMA->ENSET = 1<<DMA_CH_TMR32;

по прерыванию от таймера все работает, хоть и глючит.
по ДМА вообще не работает

есть ли какие предложения как это обойти?
желательно заставить работать ДМА...
Ответить

Вернуться в «32-разрядные микроконтроллеры»