Микроконтроллер 1874ВЕ10Т

Интегральные схемы разработки АО "НИИЭТ" с повышенной стойкостью к СВ ВВФ

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

dav
Сообщения: 210
Зарегистрирован: 14 дек 2015, 09:21
Предприятие: АО НИИЭТ
Откуда: АО НИИЭТ, Воронеж

Re: Микроконтроллер 1874ВЕ10Т

Сообщение dav »

And_Ro писал(а): 11 мар 2024, 16:11 Если не секрет, с кем и как Вы связались? Можете файлом ldf поделиться? Буквально пару дней запустил макет перепрошиваемой 8-разрядной памяти и сейчас видимо иду по вашему пути :)
Доброго времени суток!

Для того, чтобы использовать все адресное пространство внешней памяти в диапазоне 0x000 - 0x7FFFF можно воспользоваться переполнением старших разрядов адреса. В этом случае внешняя память будет доступна через 3 диапазона адресов:

1) ячейки внешней памяти 0x00 - 0x5FFF будут доступны по адресам микроконтроллера 0x200000 - 0x205FFF (регион памяти EXT1)
2) ячейки внешней памяти 0x6000 - 0xFFFF будут доступны по адресам микроконтроллера 0x6000 - 0xFFFF (регион памяти CMD0)
3) ячейки внешней памяти 0x10000 - 0x7FFFF будут доступны по адресам микроконтроллера 0x210000 - 0x27FFFF (регион памяти EXT2)

Тогда регионы памяти файла .ldf буду следующие:

MEMORY
{
RAM0 { TYPE(RW) START(0x00000060) END(0x00003FFF) } // RAM0 (16 Kbyte)
PSRAM { TYPE(RWX) START(0x00005000) END(0x00005FFB) } // PSRAM, except for last 4 bytes (4 Kbyte, 0x5FFC-0x5FFF). Stack cannot be placed.
PSRAMF { TYPE(RW) START(0x00005FFC) END(0x00005FFF) } // PSRAM last 4 bytes (0x5FFC-0x5FFF). Executable code or stack cannot be placed.
CMD0 { TYPE(RWX) START(0x00006000) END(0x0000FFFF) } // External memory (24 Kbyte, alias of 0x206000 - 0x20FFFF)
RAM1 { TYPE(RW) START(0x00010000) END(0x00013FFF) } // RAM1 (16 Kbyte really)
EXT1 { TYPE(RWX) START(0x00200000) END(0x00205FFF) } // External memory (24 Kbyte, after 0x200000)
EXT2 { TYPE(RWX) START(0x00210000) END(0x0027FFFF) } // External memory (448 Kbyte, after 0x210000)
}

Example.zip
пример файла линкера
(1.03 КБ) 27 скачиваний
And_Ro
Сообщения: 21
Зарегистрирован: 03 май 2023, 13:52
Предприятие: АО ЦНИИАГ

Re: Микроконтроллер 1874ВЕ10Т

Сообщение And_Ro »

Спасибо большое!
larrson
Сообщения: 10
Зарегистрирован: 04 мар 2024, 12:30
Предприятие: самозанятый

Re: Микроконтроллер 1874ВЕ10Т

Сообщение larrson »

Добрый день! Несколько вопросов по ШИМ:

1. Не работает запись в теневой регистр TBPRD (Регистр максимального значения таймера)
при PWM0->TBCTL_bit.PRDLD = 0, срабатывает только запись в активный
при PWM0->TBCTL_bit.PRDLD = 1;
и в теневые регистры CMPA и CMPB (Регистры порога срабатывания А и B) при
PWM0->CMPCTL_bit.SHDWAMODE = 0; //(отложенная загрузка)
PWM0->CMPCTL_bit.SHDWBMODE = 0; //(отложенная загрузка)
срабатывает только запись в активные при
PWM0->CMPCTL_bit.SHDWAMODE = 1
PWM0->CMPCTL_bit.SHDWBMODE = 1.

2. Какая последовательность записи в регистры при программировании ШИМ
или это не имеет значения? ,

3. Запись в какой регистр запускает работу ШИМ и останавливает?

4. На команду SYS->INT_MASK0_bit.PWM0 = 1 CodeMAster++[28] выдает ошибку синтаксиса.
Как правильно разрешить прерывания блока ШИМ?
(И на команду SYS->INT_MASK1_bit.UART1 = 1 тоже)

Замечание по РП 1874ВЕ10Т от 29.09.2023:
В таблице А.16.12 – "Регистр управления генератором «мертвого времени» ШИМ"
ссылка на рисунок 14.12, на самом деле в документе
Рис. 12.12 – Структурная схема генератора «мертвого времени» ШИМ
dav
Сообщения: 210
Зарегистрирован: 14 дек 2015, 09:21
Предприятие: АО НИИЭТ
Откуда: АО НИИЭТ, Воронеж

Re: Микроконтроллер 1874ВЕ10Т

Сообщение dav »

larrson писал(а): 27 мар 2024, 09:29 Добрый день! Несколько вопросов по ШИМ:

1. Не работает запись в теневой регистр TBPRD (Регистр максимального значения таймера)

2. Какая последовательность записи в регистры при программировании ШИМ
или это не имеет значения? ,

3. Запись в какой регистр запускает работу ШИМ и останавливает?

4. На команду SYS->INT_MASK0_bit.PWM0 = 1 CodeMAster++[28] выдает ошибку синтаксиса.
Как правильно разрешить прерывания блока ШИМ?
(И на команду SYS->INT_MASK1_bit.UART1 = 1 тоже)
Доброго времени суток!

1,2,3 - см. Errata

4. Ошибка возникает из-за макроса PWM0 объявленного в строке №7346:

#define PWM0 ((PWM_TypeDef *) PWM0_BASE)

Фактически компилятор ругается на следующую команду после препроцессора:

SYS->INT_MASK0_bit.((PWM_TypeDef *) 0x00103400UL) = 1;

Переименовал названия битовых полей регистров SYS: в конце добавил силволы "EN".

Скорректированный заголовочный файл доступен в архиве по ссылке: CodeMaster28_1_00_04__Patch1_240328.zip
larrson
Сообщения: 10
Зарегистрирован: 04 мар 2024, 12:30
Предприятие: самозанятый

Re: Микроконтроллер 1874ВЕ10Т

Сообщение larrson »

Добрый день! Пара уточняющих вопросов по предыдущему сообщению.
1. На команду SYS->INT_MASK0_bit.PWM0 = 1 CodeMAster++[28] по-прежнему выдает ошибку синтаксиса.
Возможно, потому, что в выложенном архиве CodeMaster28_1_00_04__Patch1_240328.zip
файл «1874VE10T_Rev2_sfr.xml» остался прежний. От 08.‎11.‎2019.

2. Согласно ERRATA 1874ВЕ10Т (Ревизии 1 Версия от 28.03.2024)
«10. Теневая запись программного управления каналами ШИМ
Описание
Невозможно осуществить теневую установку программного управления каналами в регистрах AQSFRC и AQCSFRC – все программные манипуляции каналами всегда применяются мгновенно. Поле RLDCSF регистра AQSFRC не оказывается влияния на режим записи регистров AQSFRC и AQCSFRC.»

Какое отношение имеют регистры:
AQSFRC (Регистр программного управления однократным действием)
AQCSFRC (Регистр обработчика для циклического программного управления)
к отложенным загрузкам значений регистров CMPB и CMPA (пороги срабатывания каналов) и к записи в теневой регистр TBPRD (Регистр максимального значения таймера), если, согласно РП от 29.09.2023, этим управляет регистр управления компаратором CMPCTL, в частности, поля SHDWBMODE/ SHDWAMODE и LOADBMODE/LOADAMODE, и регистр управления таймером TBCTL (поле PRDLD).
А регистры AQSFRC и AQCSFRC управляют значениями на выходах PWM_B/PWM_A.
d_bolshov
Сообщения: 13
Зарегистрирован: 16 май 2018, 13:49
Предприятие: АО "РКС"

Re: Микроконтроллер 1874ВЕ10Т

Сообщение d_bolshov »

Здравствуйте!
Режим МПИ в удалённом терминале.
Интересует как работает вход Mx_ODDADDR. Он должен дополнять Mx_ADDR0-Mx_ADDR4 до нечётности, или чётности?
And_Ro
Сообщения: 21
Зарегистрирован: 03 май 2023, 13:52
Предприятие: АО ЦНИИАГ

Re: Микроконтроллер 1874ВЕ10Т

Сообщение And_Ro »

Здравствуйте. Подскажите, как можно скачать Errata на ВЕ10. Ссылка двумя постами выше не работает ((
larrson
Сообщения: 10
Зарегистрирован: 04 мар 2024, 12:30
Предприятие: самозанятый

Re: Микроконтроллер 1874ВЕ10Т

Сообщение larrson »

And_Ro писал(а): 03 апр 2024, 12:39 Здравствуйте. Подскажите, как можно скачать Errata на ВЕ10. Ссылка двумя постами выше не работает ((
https://bitbucket.org/niietcm4/k1874vex_sdk/downloads/
dav
Сообщения: 210
Зарегистрирован: 14 дек 2015, 09:21
Предприятие: АО НИИЭТ
Откуда: АО НИИЭТ, Воронеж

Re: Микроконтроллер 1874ВЕ10Т

Сообщение dav »

d_bolshov писал(а): 03 апр 2024, 12:10 Здравствуйте!
Режим МПИ в удалённом терминале.
Интересует как работает вход Mx_ODDADDR. Он должен дополнять Mx_ADDR0-Mx_ADDR4 до нечётности, или чётности?
Доброго времени суток!

По аппаратному сбросу микроконтроллера осуществляется захват адреса удаленного терминала с соответствующих выводов при корректно установленном бите четности адреса. В дальнейшем захваченный по сбросу адрес Оконечного Устройства можно прочитать или перезаписать через регистр CON при условии предварительно установленного режима удаленного терминала (Оконечного Устройства) в регистре CONF.

Например, M0_ADR0 = 1, M0_ADR1 - M0_ADR4 = 0, M0_ODDADR = 0, после выбора режима удаленного терминала (Оконечного Устройства) в регистре CONF, можно будет прочитать значение адреса удаленного терминала 0x01 из регистра CON.

Например, M0_ADR0 = 1, M0_ADR1 = 1, M0_ADR2 - M0_ADR4 = 0, M0_ODDADR = 1, после выбора режима удаленного терминала (Оконечного Устройства) в регистре CONF, можно будет прочитать значение адреса удаленного терминала 0x03 из регистра CON.
larrson
Сообщения: 10
Зарегистрирован: 04 мар 2024, 12:30
Предприятие: самозанятый

Re: Микроконтроллер 1874ВЕ10Т

Сообщение larrson »

And_Ro писал(а): 06 фев 2024, 15:30 Здравствуйте! Возникла проблема с программированием PWM. Пытаемся для начала заставить PWM0 работать в режиме обычного таймера с прерыванием по концу счета (см. вложение). Прерывание срабатывает, но только один раз :( Пробовал различные комбинации, результат один. Кстати, не срабатывает PWM0->TBCTL_bit.FREE_SOFT = 0, счет не останавливается.
Это лишь часть проекта. Прерывания UART, SPI, BSI, SYS_TIM работают без нареканий.
Здравствуйте! У вас получилось разобраться с прерываниями ШИМ? А то мы столкнулись с той же проблемой - однократный вход в прерывание при разных условиях.
Ответить

Вернуться в «Радиационно-стойкие интегральные схемы»